Newest 'ffmpeg' Questions - Stack Overflow
Les articles publiés sur le site
-
Glitchy mp4 concatenation with ffmpeg concat
20 juin 2017, par Kuba OrlikI'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:
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 StrategyI 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 TigaI 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 user8185973Audio 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 jimmyI 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