Newest 'ffmpeg' Questions - Stack Overflow

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

Les articles publiés sur le site

  • Glitchy mp4 concatenation with ffmpeg concat

    20 juin 2017, par Kuba Orlik

    I'm using the following command to conatenate a set of mp4 files:

    ffmpeg -auto_convert 1 -f concat -safe 0 -i files.txt -c copy output/all.mp4
    

    files.txt looks like this:

    file './SAM_1050.MP4'
    file './SAM_1051.MP4'
    file './SAM_1052.MP4'
    ...
    

    The output is clean until the end of the first clip. After that, the last frame of the last clip is visible, but gets more and more distorted. Halfway through this is what the video looks like:

    The entire frame is just plain grey, with some glitches here and there.

    Here's my ffmpeg -version output:

    $ ffmpeg -version
    ffmpeg version 3.3.1 Copyright (c) 2000-2017 the FFmpeg developers
    built with gcc 7.1.1 (GCC) 20170516
    configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-avisynth --enable-avresample --enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libass --enable-libbluray --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libiec61883 --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxvid --enable-shared --enable-version3
    libavutil      55. 58.100 / 55. 58.100
    libavcodec     57. 89.100 / 57. 89.100
    libavformat    57. 71.100 / 57. 71.100
    libavdevice    57.  6.100 / 57.  6.100
    libavfilter     6. 82.100 /  6. 82.100
    libavresample   3.  5.  0 /  3.  5.  0
    libswscale      4.  6.100 /  4.  6.100
    libswresample   2.  7.100 /  2.  7.100
    libpostproc    54.  5.100 / 54.  5.100
    
  • FFmpeg segmentation and inaccurate/wrong framerate

    20 juin 2017, par Soft Strategy

    I use ffmpeg to save on files an RTSP stream at 15 fps. The command is similar to this (I've simplified it):

    ffmpeg -y -i rtsp://IP/media.amp -c copy -r 15 -f segment -segment_time 60 -reset_timestamps 1 -segment_atclocktime 1 -strftime 1 outputFile%Y-%m-%d_%H-%M-%S.mp4

    It basically creates 1 minute long files from the stream, but the problem is that the framerate of every segmented file is NEVER 15fps.

    The values that I get are something like this.

    14.99874 15.00031

    This is a huge problem for me because I need to merge these files with other 15fps videos and the result is not good. The merged file is unstable, the image crashes and sometimes even VLC crashes if I randomly click on the time bar.

    If I just merge the stream files all is well, when I try it to mix it with something else, there is nothing I can do to have a video file that is watchable and stable.

    Is this normal? What can I do to have segments with a fixed 15fps without re-encoding?

    Thanks in advance.

  • Android OpenCV - How can i read video files with using jni ?

    20 juin 2017, par Tiga

    I am developing an application using Android Opencv.

    This app, which I am developing, offers two operations.

    • The frame read from the camera is passed to Jni using native function Mat.getNativeObjAddr (), and the new image is returned through javaCameraView's onCameraFrame() function
    • It reads a video clip inside Storage, processes each frame the same as # 1, and returns the resulting image via the onCameraFrame() function.

    First,function is implemented as simple as the following and works normally:

       @Override
        public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) 
        {
            if(inputFrame!=null){
                    Detect(inputFrame.rgba().getNativeObjAddr(), boardImage.getNativeObjAddr());
                }
                return boardImage;
            }
        }
    

    However, the problem occurred in the second operation. As far as I know, the files inside Java Storage are not readable by jni.

    I already tried FFmpegMediaPlayer or MediaMetadataRetriever through Google search. However, the getFrameAtTime () function provided by this MetadataRetriever took an average of 170ms when grabbing a bitmap to a specific frame of 1920 * 1080 image. What I have to develop is to show the video results in real time at 30 fps. In # 1, the native function Detect () takes about 2ms to process one frame.

    For these reasons, I want to do this.

    java sends a video's path (eg : /storage/emulated/0/download/video.mp4) to jni, and native functions process the video one frame at a time, and display the result image on 'onCameraFrame'.

    Is there a proper way? I look forward to your reply. Thank you!

  • Audio file format conversion failed using ffmpeg inside a python program

    20 juin 2017, par user8185973

    Audio file format conversion that has been working for some time has started failing.

    More details: converting an mp4 file format into a flac format file. Invoking following command inside a python program using subprocess.call().

    Here is the code fragment that fails:

    audio_type = 'flac'
    new_filename = file_name + "." + audio_type
    convert_command = "ffmpeg"
    convert_command = convert_command + " -i " + file_name
    convert_command = convert_command + " -ar 16000 -ac 1 "
    convert_command = convert_command + " -f {0} -y ".format(audio_type)
    convert_command = convert_command + new_filename
    self.logger.debug('RUNNING COMMAND: {0}'.format(convert_command))
        try:
            ret = subprocess.call(convert_command, shell=True)
            self.logger.debug('RETURN VALUE: {0}'.format(ret))
        except OSError as e:
            self.logger.error("Audio file format conversion failed. Command: %s, error: %s", convert_command, e)
        self.logger.debug("FINISHED CONVERTING")
    

    Here are the log lines:

    [DEBUG]:  CONVERTING: FILENAME: data/audio/data.mp4, AUDIO TYPE: flac
    [DEBUG]:  RUNNING COMMAND: ffmpeg -i data/audio/data.mp4 -ar 16000 -ac 1  -f flac -y data/audio/data.mp4.flac
    [ERROR]:  Audio file format conversion failed. Command: ffmpeg -i data/audio/data.mp4 -ar 16000 -ac 1  -f flac -y data/audio/data.mp4.flac, error: [Errno 12] Cannot allocate memory
    

    However, running the command ("ffmpeg -i data/audio/data.mp4 -ar 16000 -ac 1 -f flac -y data/audio/data.mp4.flac") directly from command line works.

    Wondering why is this command failing when run through subprocess.call()? Any ideas? Thanks in advance!

  • current version of ffmpeg3.3.2 encode twice time of my video,the duration last two times long

    20 juin 2017, par jimmy

    I have a video with 00:01:41.46 play time,and transcode it perfect with ffmpeg-2.1.1,but when I upgrade FFmpeg version to 3.3.2 and compile it with the same compile option and same transcode option as 2.1.1 version used, I got a video with 00:03:21.82 long, I played that video to see what was added after 1:41.46, and find that it just repeat the video from the beginning with no audio, I find out no idea to this issue, it seems to be a bug that FFmpeg introducing, anyone help me!

    here is the log that I had transcoded with ffmpeg 3.3.2:

    ffmpeg -i natural.mp4 -c:v libx264 -c:a copy output.mp4
    ffmpeg version 3.3.2 Copyright (c) 2000-2017 the FFmpeg developers
    built with gcc 4.6 (Ubuntu/Linaro 4.6.4-6ubuntu2)
    
    configuration: --enable-gpl --enable-nonfree --yasmexe=release/bin/yasm -- prefix=release --cc= --enable-static --disable-shared --disable-debug --extra-cflags=-Irelease/include --extra-ldflags='-Lrelease/lib -lm -ldl' --disable-ffplay --disable-ffprobe --disable-ffserver --disable-doc --enable-postproc --enable-bzlib --enable-zlib --enable-parsers --enable-libx264 --enable-libmp3lame --enable-libfdk-aac --enable-libspeex --enable-pthreads --extra->libs=-lpthread --enable-encoders --enable-decoders --enable-avfilter --enable->muxers --enable-demuxers
    
    libavutil      55. 58.100 / 55. 58.100
    libavcodec     57. 89.100 / 57. 89.100
    libavformat    57. 71.100 / 57. 71.100
    libavdevice    57.  6.100 / 57.  6.100
    libavfilter     6. 82.100 /  6. 82.100
    libswscale      4.  6.100 /  4.  6.100
    libswresample   2.  7.100 /  2.  7.100
    libpostproc    54.  5.100 / 54.  5.100
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'natural.mp4':
      Metadata:
      major_brand     : mp42
      minor_version   : 0
      compatible_brands: mp42isom
      creation_time   : 2009-07-11T08:32:34.000000Z
      encoder         : mp4creator 1.6.1d
      Duration: 00:01:41.46, start: 0.000000, bitrate: 9063 kb/s
      Stream #0:0(eng): Video: mpeg4 (Simple Profile) (mp4v / 0x7634706D), yuv420p, 1440x1080 [SAR 4:3 DAR 16:9], 8976 kb/s, 23.98 fps, 23.98 tbr, 90k tbn, 2997 tbc (default)
    Metadata:
        creation_time   : 2009-07-11T08:32:34.000000Z
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 125 kb/s (default)
    Metadata:
        creation_time   : 2009-07-11T08:33:09.000000Z
    Stream mapping:
      Stream #0:0 -> #0:0 (mpeg4 (native) -> h264 (libx264))
      Stream #0:1 -> #0:1 (copy)
    Press [q] to stop, [?] for help
    [libx264 @ 0x2d951e0] using SAR=4/3
    [libx264 @ 0x2d951e0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX AVX2 FMA3 LZCNT BMI2
    [libx264 @ 0x2d951e0] profile High, level 4.0
    [libx264 @ 0x2d951e0] 264 - core 138 r1+3473M a37a143 - H.264/MPEG-4 AVC codec >- Copyleft 2003-2013 - 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=6 lookahead_threads=1 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=23 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 'output.mp4':
    Metadata:
      major_brand     : mp42
      minor_version   : 0
      compatible_brands: mp42isom
      encoder         : Lavf57.71.100
    Stream #0:0(eng): Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 1440x1080 [SAR 4:3 DAR 16:9], q=-1--1, 23.98 fps, 24k tbn, 23.98 tbc (default)
      Metadata:
        creation_time   : 2009-07-11T08:32:34.000000Z
        encoder         : Lavc57.89.100 libx264
      Side data:
        cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
      Stream #0:1(eng): Audio: aac (LC) ([64][0][0][0] / 0x0040), 44100 Hz, stereo, fltp, 125 kb/s (default)
      Metadata:
        creation_time   : 2009-07-11T08:33:09.000000Z
    frame= 4842 fps= 27 q=-1.0 Lsize=  107608kB time=00:03:21.82 
    bitrate=4367.8kbits/s speed=1.11x     
        video:105973kB audio:1556kB subtitle:0kB other streams:0kB global headers:0kB >muxing overhead: 0.074199%
    [libx264 @ 0x2d951e0] frame I:54    Avg QP:19.81  size: 77248
    [libx264 @ 0x2d951e0] frame P:3960  Avg QP:22.01  size: 25371
    [libx264 @ 0x2d951e0] frame B:828   Avg QP:23.01  size:  4680
    [libx264 @ 0x2d951e0] consecutive B-frames: 75.2%  4.6%  4.3% 15.9%
    [libx264 @ 0x2d951e0] mb I  I16..4: 17.0% 79.0%  3.9%
    [libx264 @ 0x2d951e0] mb P  I16..4:  2.1%  7.8%  0.2%  P16..4: 43.9%  9.7% 6.4%  0.0%  0.0%    skip:29.9%
    [libx264 @ 0x2d951e0] mb B  I16..4:  0.2%  1.1%  0.0%  B16..8: 29.2%  1.2%  0.2%  direct: 0.7%  skip:67.3%  L0:49.0% L1:47.7% BI: 3.3%
    [libx264 @ 0x2d951e0] 8x8 transform intra:78.1% inter:81.6%
    [libx264 @ 0x2d951e0] coded y,uvDC,uvAC intra: 52.3% 66.4% 11.9% inter: 20.5% >24.2% 0.8%
    [libx264 @ 0x2d951e0] i16 v,h,dc,p: 32% 22% 28% 18%
    [libx264 @ 0x2d951e0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 19% 19% 43%  3%  3%  3%  5%  2%  4%
    [libx264 @ 0x2d951e0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 23% 24% 12%  4%  8%  7% 11%  4%  5%
    [libx264 @ 0x2d951e0] i8c dc,h,v,p: 50% 23% 23%  4%
    [libx264 @ 0x2d951e0] Weighted P-Frames: Y:1.5% UV:0.3%
    [libx264 @ 0x2d951e0] ref P L0: 71.9% 17.0%  8.5%  2.5%  0.0%
    [libx264 @ 0x2d951e0] ref B L0: 89.7%  9.2%  1.2%
    [libx264 @ 0x2d951e0] ref B L1: 97.5%  2.5%
    [libx264 @ 0x2d951e0] kb/s:4298.67
    

    Here is the output when use ffmpeg -i natural.mp4 -c copy out.mp4,the output still last double times long:

    ./ffmpeg -i natural.mp4 -c copy out.mp4
    ffmpeg version 3.3.2 Copyright (c) 2000-2017 the FFmpeg developers
    built with gcc 4.6 (Ubuntu/Linaro 4.6.4-6ubuntu2)
      configuration: --enable-gpl --enable-nonfree --yasmexe=release/bin/yasm --prefix=release --cc= --enable-static --disable-shared --disable-debug --extra-cflags=-Irelease/include --extra-ldflags='-Lrelease/lib -lm -ldl' --disable-ffplay --disable-ffprobe --disable-ffserver --disable-doc --enable-postproc --enable-bzlib --enable-zlib --enable-parsers --enable-libx264 --enable-libmp3lame --enable-libfdk-aac --enable-libspeex --enable-pthreads --extra-libs=-lpthread --enable-encoders --enable-decoders --enable-avfilter --enable-muxers --enable-demuxers
      libavutil      55. 58.100 / 55. 58.100
      libavcodec     57. 89.100 / 57. 89.100
      libavformat    57. 71.100 / 57. 71.100
      libavdevice    57.  6.100 / 57.  6.100
      libavfilter     6. 82.100 /  6. 82.100
      libswscale      4.  6.100 /  4.  6.100
      libswresample   2.  7.100 /  2.  7.100
      libpostproc    54.  5.100 / 54.  5.100
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'natural.mp4':
      Metadata:
        major_brand     : mp42
        minor_version   : 0
        compatible_brands: mp42isom
        creation_time   : 2009-07-11T08:32:34.000000Z
        encoder         : mp4creator 1.6.1d
      Duration: 00:01:41.46, start: 0.000000, bitrate: 9063 kb/s
        Stream #0:0(eng): Video: mpeg4 (Simple Profile) (mp4v / 0x7634706D), yuv420p, 1440x1080 [SAR 4:3 DAR 16:9], 8976 kb/s, 23.98 fps, 23.98 tbr, 90k tbn, 2997 tbc (default)
        Metadata:
          creation_time   : 2009-07-11T08:32:34.000000Z
        Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 125 kb/s (default)
        Metadata:
          creation_time   : 2009-07-11T08:33:09.000000Z
    Output #0, mp4, to 'out.mp4':
      Metadata:
        major_brand     : mp42
        minor_version   : 0
        compatible_brands: mp42isom
        encoder         : Lavf57.71.100
        Stream #0:0(eng): Video: mpeg4 (Simple Profile) ( [0][0][0] / 0x0020), yuv420p, 1440x1080 [SAR 4:3 DAR 16:9], q=2-31, 8976 kb/s, 23.98 fps, 23.98 tbr, 90k tbn, 90k tbc (default)
        Metadata:
          creation_time   : 2009-07-11T08:32:34.000000Z
        Stream #0:1(eng): Audio: aac (LC) ([64][0][0][0] / 0x0040), 44100 Hz, stereo, fltp, 125 kb/s (default)
        Metadata:
          creation_time   : 2009-07-11T08:33:09.000000Z
    Stream mapping:
      Stream #0:0 -> #0:0 (copy)
      Stream #0:1 -> #0:1 (copy)
    Press [q] to stop, [?] for help
    frame= 4842 fps=2243 q=-1.0 Lsize=  222944kB time=00:03:21.91 
    bitrate=9045.4kbits/s speed=93.5x    
    video:221299kB audio:1556kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.039627%
    

    Here is the output what ffmpeg-2.1.1 generate,It's executed correctly:

    ./ffmpeg -i natural.mp4 -c copy output2.mp4
    ffmpeg version 2.1.1 Copyright (c) 2000-2013 the FFmpeg developers
      built on Mar 10 2017 13:56:14 with gcc 4.6 (Ubuntu/Linaro 4.6.4-6ubuntu2)
      configuration: --enable-gpl --enable-nonfree --yasmexe=release/bin/yasm --prefix=release --cc= --enable-static --disable-shared --disable-debug --extra-cflags='-I${ffmpeg_exported_release_dir}/include' --extra-ldflags='-L${ffmpeg_exported_release_dir}/lib -lm -ldl' --disable-ffplay --disable-ffprobe --disable-ffserver --disable-doc --enable-postproc --enable-bzlib --enable-zlib --enable-parsers --enable-libx264 --enable-libmp3lame --enable-libfdk-aac --enable-libspeex --enable-pthreads --extra-libs=-lpthread --enable-encoders --enable-decoders --enable-avfilter --enable-muxers --enable-demuxers
      libavutil      52. 48.101 / 52. 48.101
      libavcodec     55. 39.101 / 55. 39.101
      libavformat    55. 19.104 / 55. 19.104
      libavdevice    55.  5.100 / 55.  5.100
      libavfilter     3. 90.100 /  3. 90.100
      libswscale      2.  5.101 /  2.  5.101
      libswresample   0. 17.104 /  0. 17.104
      libpostproc    52.  3.100 / 52.  3.100
    [mov,mp4,m4a,3gp,3g2,mj2 @ 0x2d2e900] multiple edit list entries, a/v desync might occur, patch welcome
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'natural.mp4':
      Metadata:
        major_brand     : mp42
        minor_version   : 0
        compatible_brands: mp42isom
        creation_time   : 2009-07-11 08:32:34
        encoder         : mp4creator 1.6.1d
      Duration: 00:01:41.46, start: 0.000000, bitrate: 9063 kb/s
        Stream #0:0(eng): Video: mpeg4 (Simple Profile) (mp4v / 0x7634706D), yuv420p, 1440x1080 [SAR 4:3 DAR 16:9], 8976 kb/s, 23.98 fps, 23.98 tbr, 90k tbn, 2997 tbc (default)
        Metadata:
          creation_time   : 2009-07-11 08:32:34
        Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 125 kb/s (default)
        Metadata:
          creation_time   : 2009-07-11 08:33:09
    Output #0, mp4, to 'output2.mp4':
      Metadata:
        major_brand     : mp42
        minor_version   : 0
        compatible_brands: mp42isom
        encoder         : Lavf55.19.104
        Stream #0:0(eng): Video: mpeg4 ( [0][0][0] / 0x0020), yuv420p, 1440x1080 [SAR 4:3 DAR 16:9], q=2-31, 8976 kb/s, 23.98 fps, 90k tbn, 90k tbc (default)
        Metadata:
          creation_time   : 2009-07-11 08:32:34
        Stream #0:1(eng): Audio: aac ([64][0][0][0] / 0x0040), 44100 Hz, stereo, 125 kb/s (default)
        Metadata:
          creation_time   : 2009-07-11 08:33:09
    Stream mapping:
      Stream #0:0 -> #0:0 (copy)
      Stream #0:1 -> #0:1 (copy)
    Press [q] to stop, [?] for help
    frame= 2421 fps=0.0 q=-1.0 Lsize=  112273kB time=00:01:41.49 bitrate=9062.0kbits/s    
    video:110650kB audio:1556kB subtitle:0 global headers:0kB muxing overhead 0.060302%
    

    Here is the video link