Newest 'ffmpeg' Questions - Stack Overflow

http://stackoverflow.com/questions/tagged/ffmpeg

Les articles publiés sur le site

  • FFmpeg : Decode ALAC (Apple Lossless) Audio (RTP source)

    30 avril 2014, par Carpediem

    I am working on Decoding Audio coming via RTP. The Audio is ALAC encoded. I am unable to setup the decoder in ffmpeg and decode. My code looks like this. Any help is appreciated.

    The following is where I setup the codec context

    p_rtp_audio_codec = avcodec_find_decoder(AVCodecID::AV_CODEC_ID_ALAC); 
    p_rtp_audio_codec_ctx = avcodec_alloc_context3(p_rtp_audio_codec);
    av_opt_set_int(p_rtp_audio_codec_ctx, "channel_layout", AV_CH_LAYOUT_STEREO,  0);
    // TODO : Set Sample format and Sample Rate ? How to do that?
    if (avcodec_open2(p_rtp_audio_codec_ctx, p_rtp_audio_codec, NULL) < 0) {
    std::cout << "[DEC] avcodec_open2 failed for RTP AUDIO CODEC CTX\n";
    }
    // allocate frames
    p_rtp_audio_frame = avcodec_alloc_frame();
    

    The following is where I decode the audio as I get RTP streams

        // fill the packet
    packet.data = &audio_streams[index].data[0];
    packet.size = audio_streams[index].size;
    int result1 = avcodec_decode_audio4(p_rtp_audio_codec_ctx, p_rtp_audio_frame, &got_audio_frame, &packet); 
    

    My call to avcodec_open2 fails and I see that the structure codec_ctx->codec is not filled with values. Any idea how I can do this?

  • Node-webkit : audio/video format accepted

    30 avril 2014, par user3360048

    I want to insert a video in my app running with node-webkit.

    Initially I've a .mp4 file, that wasn't read. I've read the exlanation so I open a terminal and check my file:

     file movie.mp4
     > movie.mp4: ISO Media, MPEG v4 system, version 2
    

    I try to convert video in this way:

    ffmpeg -i movie.mp4 -an -vcodec libx264 -crf 23 movie.mov
    

    But still in this way didn't play. So i try again:

    ffmpeg -i movie.mp4 -acodec copy -vcodec libx264 -f mov movie.mov
    

    In this case my video is been visualized, but with no audio.

    How can I do?

  • I got a green overlay in my video when using multiply blend mode in ffmpeg [on hold]

    30 avril 2014, par GJG

    i´m trying to blend two videos with the multiply blend mode. But I got a green overlay in the resulting video.

    This is a image where are one frame of each input video and one frame of the resulting video Composition

    I got this script, this is extracted from a part of my code:

    #!/bin/bash
    ffmpeg -y -i video_top.avi -i video_background.mp4 -filter_complex "blend=all_mode=multiply" -f mp4 -vcodec libx264 out.mp4
    

    This is the ffmpeg output:

    built on Mar 20 2014 14:51:45 with gcc 4.7 (Ubuntu/Linaro 4.7.2-2ubuntu1)
    configuration: --enable-gpl --enable-libass --enable-libfaac --enable-libfdk-aac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libspeex --enable-librtmp --enable-libtheora --enable-libvorbis --enable-libx264 --enable-nonfree --enable-version3
    libavutil      52. 67.100 / 52. 67.100
    libavcodec     55. 52.102 / 55. 52.102
    libavformat    55. 34.101 / 55. 34.101
    libavdevice    55. 11.100 / 55. 11.100
    libavfilter     4.  3.100 /  4.  3.100
    libswscale      2.  5.102 /  2.  5.102
    libswresample   0. 18.100 /  0. 18.100
    libpostproc    52.  3.100 / 52.  3.100
    Input #0, avi, from 'video_top.avi':
    Metadata:
    encoder         : Lavf54.29.104
    Duration: 00:00:10.72, start: 0.000000, bitrate: 688 kb/s
    Stream #0:0: Video: h264 (High) (H264 / 0x34363248), yuv420p, 704x576 [SAR 1:1 DAR 11:9], 682 kb/s, 25 fps, 25 tbr, 25 tbn, 50 tbc
    Input #1, mov,mp4,m4a,3gp,3g2,mj2, from 'video_background.mp4':
    Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: mp42mp41
    creation_time   : 2014-04-29 12:51:17
    Duration: 00:00:08.90, start: 0.033333, bitrate: 3417 kb/s
    Stream #1:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv), 704x576 [SAR 1:1 DAR 11:9], 3408 kb/s, 30 fps, 30 tbr, 30k tbn, 60 tbc (default)
    Metadata:
      creation_time   : 2014-04-29 12:51:17
      handler_name    : ?Mainconcept Video Media Handler
    [libx264 @ 0x2e42660] using SAR=1/1
    [libx264 @ 0x2e42660] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX
    [libx264 @ 0x2e42660] profile High, level 3.0
    [libx264 @ 0x2e42660] 264 - core 142 r2 d6b4e63 - H.264/MPEG-4 AVC codec - Copyleft 2003-2014 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=12 lookahead_threads=2 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
    Output #0, mp4, to 'out.mp4':
    Metadata:
    encoder         : Lavf55.34.101
    Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 704x576 [SAR 1:1 DAR 11:9], q=-1--1, 12800 tbn, 25 tbc (default)
    Stream mapping:
    Stream #0:0 (h264) -> blend:top
    Stream #1:0 (h264) -> blend:bottom
    blend -> Stream #0:0 (libx264)
    Press [q] to stop, [?] for help
    frame=  268 fps=121 q=-1.0 Lsize=     732kB time=00:00:10.64 bitrate= 563.2kbits/s
    video:728kB audio:0kB subtitle:0 data:0 global headers:0kB muxing overhead 0.539149%
    [libx264 @ 0x2e42660] frame I:2     Avg QP:17.96  size: 35789
    [libx264 @ 0x2e42660] frame P:77    Avg QP:21.68  size:  5552
    [libx264 @ 0x2e42660] frame B:189   Avg QP:24.79  size:  1298
    [libx264 @ 0x2e42660] consecutive B-frames:  1.1% 11.2% 10.1% 77.6%
    [libx264 @ 0x2e42660] mb I  I16..4: 30.7% 36.5% 32.7%
    [libx264 @ 0x2e42660] mb P  I16..4:  3.0%  2.6%  0.4%  P16..4: 41.3% 14.4%  6.6%  0.0%  0.0%    skip:31.7%
    [libx264 @ 0x2e42660] mb B  I16..4:  0.2%  0.1%  0.0%  B16..8: 43.8%  2.8%  0.3%  direct: 0.2%  skip:52.5%  L0:42.2% L1:56.1% BI: 1.7%
    [libx264 @ 0x2e42660] 8x8 transform intra:40.7% inter:79.1%
    [libx264 @ 0x2e42660] coded y,uvDC,uvAC intra: 48.9% 29.0% 8.3% inter: 7.1% 4.5% 0.1%
    [libx264 @ 0x2e42660] i16 v,h,dc,p: 23% 19% 33% 26%
    [libx264 @ 0x2e42660] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 17% 15% 45%  3%  3%  3%  5%  3%  6%
    [libx264 @ 0x2e42660] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 32% 23% 19%  4%  3%  3%  7%  2%  7%
    [libx264 @ 0x2e42660] i8c dc,h,v,p: 67% 15% 16%  1%
    [libx264 @ 0x2e42660] Weighted P-Frames: Y:0.0% UV:0.0%
    [libx264 @ 0x2e42660] ref P L0: 67.4% 10.1% 17.0%  5.6%
    [libx264 @ 0x2e42660] ref B L0: 91.6%  7.3%  1.1%
    [libx264 @ 0x2e42660] ref B L1: 94.9%  5.1%
    [libx264 @ 0x2e42660] kb/s:555.48
    

    I don't know what is wrong, and using others blend modes got others ridiculous results, like having a pink overlay in the video.

    Suggestions will be well appreciated, thanks very much.

  • FFMpeg video recorder - Android

    30 avril 2014, par Ganesh

    I've used ffmpeg video recorder for android.

    it has used videocodec as MPEG4.

    private int videoCodec = avcodec.AV_CODEC_ID_MPEG4;
    

    video is showing android and iphone device. but video not playing on browser only audio playing on browser.

    I've checked HTML5 video requires MP4 videos with H264 video codec and AAC audio codec

    Chrome doesn't display html5 video but plays audio

    I've changed videocodec as below

    private int videoCodec = avcodec.AV_CODEC_ID_H264;
    

    My question is,

    when i use Mpeg4, video croping time is less. But when i use H264 , video croping time takes more.

    How to reduce the video croping time when use H264 or anyother videocode support to browser and minimum processing time for video croping.?

  • best way stream images to a remote server ?

    30 avril 2014, par shikata

    I want to stream the user screen (of the computer using C# app) to a remote server (PHP) through an FLV player or any other way.

    I take a screenshot each 1 seconds, send it as base64 data to the remte server, then save it as X.jpg on the remote server, where X is an incrementing number.

    Once I reach 100 images, I use the command below in order to convert the images into a video :

    exec('ffmpeg -y -r 2 -f image2 -i img%d.jpg -r 20 temp.flv 2>&1 >/dev/null', $output, $exit_status);
    

    Once the video is created, I display it to the user and delete all files, then repeat the process again, and again in order to keep streaming.

    This way doesn't really work as expected and it has a lot of drawbacks.

    Is there any alternative way I can broadcast the taken screenshots to the remote client in his browser without having to convert the images to a video and play it and keep on repeating this process ??