I was working on live encoding from FFmpeg from last few days. One day I re-installed my OS and tried to run FFmpeg commands again after configuration. My publish points get in starting but could not started. Why? Am I missing any configuration required?
The command I am trying to run is:
ffmpeg -y -re -i D:\video2.mp4 -pix_fmt yuv420p -movflags isml+frag_keyframe -f ismv -threads 0 -c:v libx264 -preset fast -profile:v baseline -map 0:v -b:v:0 800k http://localhost/PPS/PublishPoint.isml/Streams(Encode
r1)
Output what I got in command prompt is:
ffmpeg version N-54772-g53c853e Copyright (c) 2000-2013 the FFmpeg developers
built on Jul 16 2013 22:25:42 with gcc 4.7.3 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-av
isynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enab
le-iconv --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetyp
e --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --ena
ble-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-l
ibopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libsp
eex --enable-libtheora --enable-libtwolame --enable-libvo-aacenc --enable-libvo-
amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --
enable-libxvid --enable-zlib
libavutil 52. 40.100 / 52. 40.100
libavcodec 55. 18.102 / 55. 18.102
libavformat 55. 12.102 / 55. 12.102
libavdevice 55. 3.100 / 55. 3.100
libavfilter 3. 81.101 / 3. 81.101
libswscale 2. 3.100 / 2. 3.100
libswresample 0. 17.102 / 0. 17.102
libpostproc 52. 3.100 / 52. 3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'D:\video2.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf55.10.100
Duration: 00:00:12.12, start: 0.072562, bitrate: 945 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 704x396 [
SAR 1:1 DAR 16:9], 882 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 22050 Hz, stereo, fltp, 64
kb/s
Metadata:
handler_name : SoundHandler
[libx264 # 00000000047e0860] using SAR=1/1
[libx264 # 00000000047e0860] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2
[libx264 # 00000000047e0860] profile Constrained Baseline, level 3.0
[libx264 # 00000000047e0860] 264 - core 135 r2345 f0c1c53 - H.264/MPEG-4 AVC cod
ec - Copyleft 2003-2013 - http://www.videolan.org/x264.html - options: cabac=0 r
ef=2 deblock=1:0:0 analyse=0x1:0x111 me=hex subme=6 psy=1 psy_rd=1.00:0.00 mixed
_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=0 cqm=0 deadzone=21,11 fast_pski
p=1 chroma_qp_offset=-2 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 deci
mate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=0 keyi
nt=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=30 rc=abr mbtree=1
bitrate=800 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1
:1.00
Output #0, ismv, to 'http://localhost/My_SSMN_PPS/saturday.isml/Streams(Encoder1
)':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf55.12.102
Stream #0:0(und): Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 7
04x396 [SAR 1:1 DAR 16:9], q=-1--1, 800 kb/s, 10000k tbn, 29.97 tbc
Metadata:
handler_name : VideoHandler
Stream mapping:
Stream #0:0 -> #0:0 (h264 -> libx264)
Press [q] to stop, [?] for help
frame= 13 fps=0.0 q=0.0 size= 2kB time=00:00:00.00 bitrate=N/A dup=2 dro
frame= 29 fps= 29 q=0.0 size= 2kB time=00:00:00.00 bitrate=N/A dup=2 dro
av_interleaved_write_frame(): Unknown error
Advanced Thanks.
I changed my devices as I was using HD Webcam replaced with simple devices and It worked fine.
So, I found one solution of this problem but can't say it is ideal.
Thanks.
Related
Following is the command I'm using:
sudo ffmpeg -i video1.mp4 -i video2.mp4 -filter_complex "[1]tpad=start_mode=clone:start_duration=15[tr];[0][tr]xstack=inputs=2:layout=0_0|w0_0[v];[1:a]adelay=15s:all=true[a1];[0:a][a1]amix=inputs=2[a]" -map "[v]" -map "[a]" output.mp4
It took a couple of hours to merge the videos. Original videos are 6 MBs in size. Merged video is approx 2 GB in size.
It is working fine with videos recorded from the iphone.
Update:
The issue is regarding different fps in different videos. If two videos are of different fps, then it is taking too long and eventually break.
Full log:
ffmpeg -i video1.mp4 -i video2.mp4 -filter_complex "[1]tpad=start_mode=clone:start_duration=15[tr];[0][tr]xstack=inputs=2:layout=0_0|w0_0[v];[1:a]adelay=15s:all=true[a1];[0:a][a1]amix=inputs=2[a]" -map "[v]" -map "[a]" output_ia_2.mp4
ffmpeg version 4.3.2-0york0~16.04 Copyright (c) 2000-2021 the FFmpeg developers
built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.12) 20160609
configuration: --prefix=/usr --extra-version='0york0~16.04' --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-libzimg --enable-pocketsphinx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
libavutil 56. 51.100 / 56. 51.100
libavcodec 58. 91.100 / 58. 91.100
libavformat 58. 45.100 / 58. 45.100
libavdevice 58. 10.100 / 58. 10.100
libavfilter 7. 85.100 / 7. 85.100
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 7.100 / 5. 7.100
libswresample 3. 7.100 / 3. 7.100
libpostproc 55. 7.100 / 55. 7.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '97FD4344-23C3-4668-AA40-E5E724338352-3149-0000018389D9630F.mp4':
Metadata:
major_brand : qt
minor_version : 0
compatible_brands: qt
creation_time : 2021-04-09T00:43:28.000000Z
Duration: 00:00:15.03, start: 0.000000, bitrate: 10342 kb/s
Stream #0:0(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 226 kb/s (default)
Metadata:
creation_time : 2021-04-09T00:43:28.000000Z
handler_name : Core Media Audio
Stream #0:1(und): Video: h264 (Main) (avc1 / 0x31637661), yuvj420p(pc, bt709), 720x1280, 10111 kb/s, 30 fps, 30 tbr, 600 tbn, 1200 tbc (default)
Metadata:
creation_time : 2021-04-09T00:43:28.000000Z
handler_name : Core Media Video
encoder : H.264
Input #1, mov,mp4,m4a,3gp,3g2,mj2, from 'android_ritesh.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: isommp42
creation_time : 2021-04-13T06:39:16.000000Z
com.android.version: 10
Duration: 00:00:09.59, start: 0.000000, bitrate: 5288 kb/s
Stream #1:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, unknown/bt470bg/unknown), 720x1280, 5152 kb/s, SAR 1:1 DAR 9:16, 17.31 fps, 59.94 tbr, 90k tbn, 180k tbc (default)
Metadata:
creation_time : 2021-04-13T06:39:16.000000Z
handler_name : VideoHandle
Stream #1:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 131 kb/s (default)
Metadata:
creation_time : 2021-04-13T06:39:16.000000Z
handler_name : SoundHandle
Stream mapping:
Stream #0:0 (aac) -> amix:input0
Stream #0:1 (h264) -> xstack:input0
Stream #1:0 (h264) -> tpad
Stream #1:1 (aac) -> adelay
xstack -> Stream #0:0 (libx264)
amix -> Stream #0:1 (aac)
Press [q] to stop, [?] for help
[swscaler # 0x5628692bd340] deprecated pixel format used, make sure you did set range correctly
[mp4 # 0x562868aa7dc0] Frame rate very high for a muxer not efficiently supporting it.
Please consider specifying a lower framerate, a different muxer or -vsync 2
[libx264 # 0x562868af2400] MB rate (648000000) > level limit (16711680)
[libx264 # 0x562868af2400] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 # 0x562868af2400] profile High, level 6.2
[libx264 # 0x562868af2400] 264 - core 155 r2917 0a84d98 - H.264/MPEG-4 AVC codec - Copyleft 2003-2018 - 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=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 'output_ia_2.mp4':
Metadata:
major_brand : qt
minor_version : 0
compatible_brands: qt
encoder : Lavf58.45.100
Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuvj420p(pc, progressive), 1440x1280, q=-1--1, 90k tbn, 90k tbc (default)
Metadata:
encoder : Lavc58.91.100 libx264
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A
Stream #0:1: Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 69 kb/s (default)
Metadata:
encoder : Lavc58.91.100 aac
More than 1000 frames duplicated 0kB time=00:00:00.00 bitrate=N/A speed= 0x
More than 10000 frames duplicated 4352kB time=00:00:00.09 bitrate=358592.3kbits/s dup=8991 drop=0 speed=0.00141x
frame=15000 fps=131 q=33.0 size= 7680kB time=00:00:00.16 bitrate=378802.6kbits/s dup=14985 drop=0 speed=0.00145x
how to remove duplicated frame from 00:00:00,00 to 00:00:00,25 (00frame ~ 25frames)section not overall with mpdecimate filter ??
normally H264 video have some duplicated frames on video start section ..
i have tried like this ,
1) ./ffmpeg -i cated_2-3.UMMJI.MTS -map 0:0 -c:v prores_ks -profile:v 1 -qscale:v 8 -s 1920x1080 -r 29.97 -top 1 -c:a pcm_s16le -map 0:1 -filter:a:0 "pan=mono|c0=c0" -map 0:1 -filter:a:1 "pan=mono|c0=c1" -metadata:s encoder="Apple ProRes 422 LT" -filter_complex "[0]split=2[a][b];[a]trim=end_frame=26,mpdecimate[a];[b]trim=start_frame=25,setpts=PTS-STARTPTS[b];[a][b]concat=n=2:v=1:a=0" -vsync vfr -vf blackdetect=d=0.1:pix_th=.1 cated_2-3.UMMJI_MTS_mpdecimate26_section.mov
and tried to check black_frame on out prores mov file
2)./ffmpeg -i cated_2-3.UMMJI_MTS_mpdecimate26_section.mov -vf blackdetect=d=0.1:pix_th=.1 test.mov
then , will be shown like below
macmini-master:1. two_file_test khan$ ./ffmpeg -i cated_2-3.UMMJI_MTS_mpdecimate26_section.mov -vf blackdetect=d=0.1:pix_th=.1 test.mov
ffmpeg version N-92108-ge08a876e67-tessus https://evermeet.cx/ffmpeg/ Copyright (c) 2000-2018 the FFmpeg developers
built with Apple LLVM version 10.0.0 (clang-1000.11.45.2)
configuration: --cc=/usr/bin/clang --prefix=/opt/ffmpeg --extra-version=tessus --enable-avisynth --enable-fontconfig --enable-gpl --enable-libaom --enable-libass --enable-libbluray --enable-libfreetype --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libmysofa --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopus --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-version3 --pkg-config-flags=--static --disable-ffplay
libavutil 56. 19.101 / 56. 19.101
libavcodec 58. 32.100 / 58. 32.100
libavformat 58. 18.104 / 58. 18.104
libavdevice 58. 4.105 / 58. 4.105
libavfilter 7. 33.100 / 7. 33.100
libswscale 5. 2.100 / 5. 2.100
libswresample 3. 2.100 / 3. 2.100
libpostproc 55. 2.100 / 55. 2.100
Guessed Channel Layout for Input Stream #0.1 : mono
Guessed Channel Layout for Input Stream #0.2 : mono
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'cated_2-3.UMMJI_MTS_mpdecimate26_section.mov':
Metadata:
major_brand : qt
minor_version : 512
compatible_brands: qt
encoder : Lavf58.18.104
Duration: 00:25:12.58, start: 0.000000, bitrate: 86198 kb/s
Stream #0:0(eng): Video: prores (apcs / 0x73637061), yuv422p10le(tv, top first), 1920x1080, 84662 kb/s, SAR 1:1 DAR 16:9, 29.97 fps, 29.97 tbr, 11988 tbn, 11988 tbc (default)
Metadata:
handler_name : VideoHandler
encoder : Apple ProRes 422 LT
Stream #0:1(eng): Audio: pcm_s16le (sowt / 0x74776F73), 48000 Hz, mono, s16, 768 kb/s (default)
Metadata:
handler_name : SoundHandler
Stream #0:2(eng): Audio: pcm_s16le (sowt / 0x74776F73), 48000 Hz, mono, s16, 768 kb/s
Metadata:
handler_name : SoundHandler
Stream mapping:
Stream #0:0 -> #0:0 (prores (native) -> h264 (libx264))
Stream #0:1 -> #0:1 (pcm_s16le (native) -> aac (native))
Press [q] to stop, [?] for help
[libx264 # 0x7f8eb2804200] using SAR=1/1
[libx264 # 0x7f8eb2804200] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 # 0x7f8eb2804200] profile High 4:2:2, level 4.0, 4:2:2, 8-bit
[libx264 # 0x7f8eb2804200] 264 - core 157 r2935 545de2f - H.264/MPEG-4 AVC codec - Copyleft 2003-2018 - 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=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, mov, to 'test.mov':
Metadata:
major_brand : qt
minor_version : 512
compatible_brands: qt
encoder : Lavf58.18.104
Stream #0:0(eng): Video: h264 (libx264) (avc1 / 0x31637661), yuv422p, 1920x1080 [SAR 1:1 DAR 16:9], q=-1--1, 29.97 fps, 11988 tbn, 29.97 tbc (default)
Metadata:
handler_name : VideoHandler
encoder : Lavc58.32.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) (mp4a / 0x6134706D), 48000 Hz, mono, fltp, 69 kb/s (default)
Metadata:
handler_name : SoundHandler
encoder : Lavc58.32.100 aac
frame= 8224 fps= 21 q=29.0 size= 86528kB time=00:04:34.49 bitrate=2582.3kbits/s dup=19 drop=0 speed=0.689x
as you can see duplicated frame just changed to black frame , not removed
this MTS file have 19 duplicated frames !
also i have checked in FCPX and count how many dupicated frame on out prores mov file ...
Use
ffmpeg -i in -filter_complex "[0]split=2[a][b];[a]trim=end_frame=26,mpdecimate[a];[b]trim=start_frame=26,setpts=PTS-STARTPTS[b];[a][b]concat=n=2:v=1:a=0" -vsync vfr out
FFMPEG issue that I am not familiar with. seems to only happen with this particular file. Anyone by any chance can take a look at this long out put and provide any feedback on what might actually be causing this?
ffmpeg_18.exe -i "E:\TESTFILES\115637.mov" -vcodec libx264 -b:v 700k -s 720x480 -r 29.97 -pix_fmt yuv420p -vf yadif -aspect 4:3 -acodec libvo_aacenc -b:a 96k -ar 44100 -f mp4 -y "E:\TESTFILES\test\115637.flv"
ffmpeg version N-39877-g4fa706a Copyright (c) 2000-2012 the FFmpeg developers
built on Apr 16 2012 14:53:47 with gcc 4.6.3
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-runtime-cpudetect --enable-avisynth --enable-bzlib --enable-frei0r --enable-libass --enable-libcelt --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-li
bnut --enable-libopenjpeg --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libutvideo --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib
libavutil 51. 46.100 / 51. 46.100
libavcodec 54. 14.101 / 54. 14.101
libavformat 54. 3.100 / 54. 3.100
libavdevice 53. 4.100 / 53. 4.100
libavfilter 2. 70.100 / 2. 70.100
libswscale 2. 1.100 / 2. 1.100
libswresample 0. 11.100 / 0. 11.100
libpostproc 52. 0.100 / 52. 0.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'E:\TESTFILES\115637.mov':
Metadata:
major_brand : qt
minor_version : 537199360
compatible_brands: qt
creation_time : 2018-05-03 20:48:28
Duration: 00:00:30.03, start: 0.000000, bitrate: 154663 kb/s
Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1920x1080, 151585 kb/s, SAR 1920:1920 DAR 16:9, 29.97 fps, 29.97 tbr, 30k tbn, 60k tbc
Metadata:
creation_time : 2018-05-03 20:48:28
handler_name : Apple Alias Data Handler
Stream #0:1(eng): Audio: pcm_s16le (lpcm / 0x6D63706C), 48000 Hz, 4 channels, s16, 3072 kb/s
Metadata:
creation_time : 2018-05-03 20:48:28
handler_name : Apple Alias Data Handler
Stream #0:2(eng): Data: none (tmcd / 0x64636D74)
Metadata:
creation_time : 2018-05-03 20:51:29
handler_name : Apple Alias Data Handler
timecode : 00:00:00;00
[buffer # 035c33a0] w:1920 h:1080 pixfmt:yuv420p tb:1/1000000 sar:1920/1920 sws_param:flags=2
[yadif # 01e7caa0] mode:0 parity:-1 auto_enable:0
[scale # 01e7c6a0] w:1920 h:1080 fmt:yuv420p sar:1920/1920 -> w:720 h:480 fmt:yuv420p sar:32/27 flags:0x4
[libx264 # 035b8c40] using SAR=8/9
[libx264 # 035b8c40] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX FMA3
[libx264 # 035b8c40] profile High, level 3.0
[libx264 # 035b8c40] 264 - core 120 r2164 da19765 - H.264/MPEG-4 AVC codec - Copyleft 2003-2012 - 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=24 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=abr mbtree=1 bitra
te=700 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
[libvo_aacenc # 01e7bae0] Unable to set encoding parameters
Output #0, mp4, to 'E:\TESTFILES\test\115637.flv':
Metadata:
major_brand : qt
minor_version : 537199360
compatible_brands: qt
creation_time : 2018-05-03 20:48:28
Stream #0:0(eng): Video: h264, yuv420p, 720x480 [SAR 8:9 DAR 4:3], q=-1--1, 700 kb/s, 90k tbn, 29.97 tbc
Metadata:
creation_time : 2018-05-03 20:48:28
handler_name : Apple Alias Data Handler
Stream #0:1(eng): Audio: aac, 44100 Hz, 4 channels, s16, 96 kb/s
Metadata:
creation_time : 2018-05-03 20:48:28
handler_name : Apple Alias Data Handler
Stream mapping:
Stream #0:0 -> #0:0 (h264 -> libx264)
Stream #0:1 -> #0:1 (pcm_s16le -> libvo_aacenc)
Error while opening encoder for output stream #0:1 - maybe incorrect parameters such as bit_rate, rate, width or height
Your ffmpeg is really old
You can get a recent version for Windows at Zeranoe.
libvo_aacenc is crappy
It was removed from ffmpeg years ago. Quality was bad and it could not handle more than 2 channels. Update and use the built-in AAC encoder instead:
ffmpeg -i input.mov -c:v libx264 -crf 23 -preset medium -vf "yadif,scale=-2:720,format=yuv420p" -c:a aac -ac 2 -b:a 96k output.flv
This example downmixes your 4 channel input to 2 channels (stereo) with the -ac 2 option.
See FFmpeg Wiki: H.264 for video encoding info.
I need to add text to mp4 video. If I write result to file then everything is OK, but I want to read data from ffmpeg stream.
I run command:
ffmpeg -i sample.mp4 -filter_complex "drawtext='text=\"Sample Text\"':x=(w-text_w)/2:y=(h-text_h-line_h)/2:fontsize=40:fontcolor=white:fontfile=TimesNewRoman.ttf:enable='between(t,1,5)'" -f mp4 -
I received the following error:
ffmpeg version 2.2.2-tessus Copyright (c) 2000-2014 the FFmpeg developers
built on May 7 2014 23:17:42 with clang version 3.3 (tags/RELEASE_33/final)
configuration: --cc=/opt/local/bin/clang-mp-3.3 --prefix=/Users/tessus/data/ext/ffmpeg/sw --as=yasm --extra-version=tessus --disable-shared --enable-static --disable-ffplay --enable-gpl --enable-pthreads --enable-postproc --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libx265 --enable-libxvid --enable-libspeex --enable-bzlib --enable-zlib --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libxavs --enable-version3 --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvpx --enable-libgsm --enable-libopus --enable-libmodplug --enable-fontconfig --enable-libfreetype --enable-libass --enable-libbluray --enable-filters --disable-indev=qtkit --enable-runtime-cpudetect
libavutil 52. 66.100 / 52. 66.100
libavcodec 55. 52.102 / 55. 52.102
libavformat 55. 33.100 / 55. 33.100
libavdevice 55. 10.100 / 55. 10.100
libavfilter 4. 2.100 / 4. 2.100
libswscale 2. 5.102 / 2. 5.102
libswresample 0. 18.100 / 0. 18.100
libpostproc 52. 3.100 / 52. 3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'a5732-480x320-clip01-sound.mp4':
Metadata:
major_brand : M4V
minor_version : 1
compatible_brands: M4V mp42isom
creation_time : 2014-02-12 02:23:02
Duration: 00:00:15.10, start: 0.000000, bitrate: 509 kb/s
Stream #0:0(eng): Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p(tv), 480x320 [SAR 1:1 DAR 3:2], 457 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)
Metadata:
creation_time : 2014-02-12 02:23:02
handler_name : Mainconcept MP4 Video Media Handler
Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 32000 Hz, stereo, fltp, 46 kb/s (default)
Metadata:
creation_time : 2014-02-12 02:23:02
handler_name : Mainconcept MP4 Sound Media Handler
[libx264 # 0x10400d800] using SAR=1/1
[libx264 # 0x10400d800] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX
[libx264 # 0x10400d800] profile High, level 2.1
[libx264 # 0x10400d800] 264 - core 142 - 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
[mp4 # 0x10400d200] muxer does not support non seekable output
Output #0, mp4, to 'pipe:':
Metadata:
major_brand : M4V
minor_version : 1
compatible_brands: M4V mp42isom
encoder : Lavf55.33.100
Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 480x320 [SAR 1:1 DAR 3:2], q=-1--1, 90k tbn, 29.97 tbc (default)
Stream #0:1(eng): Audio: aac (libvo_aacenc) ([64][0][0][0] / 0x0040), 32000 Hz, stereo, s16, 128 kb/s (default)
Metadata:
creation_time : 2014-02-12 02:23:02
handler_name : Mainconcept MP4 Sound Media Handler
Stream mapping:
Stream #0:0 (h264) -> drawtext (graph 0)
drawtext (graph 0) -> Stream #0:0 (libx264)
Stream #0:1 -> #0:1 (aac -> libvo_aacenc)
Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument
Conversion failed!
It seems the problem is related to mp4 and "muxer does not support non seekable output"
Is there a solution how to make such text adding on the fly and return video as we have data and not to wait until all file is processed.
Thanks
You can't use MP4 with STDOUT. The MP4 container requires the encoder to go back and make changes to the beginning of the file after it is done writing through the end. Since STDOUT cannot seek, outputting media in an MP4 container is not possible with STDOUT.
You can use the empty_moov example ffmpeg -y -framerate 0.5 -pattern_type glob -i '*.jpg' -f mp4 -movflags empty_moov - | ffprobe -
-movflags empty_moov
Write an initial moov atom directly at the start of the file, without describing any samples in it. Generally, an mdat/moov pair is written at the start of the file, as a normal MOV/MP4 file, containing only a short portion of the file. With this option set, there is no initial mdat atom, and the moov atom only describes the tracks but has a zero duration.
This option is implicitly set when writing ismv (Smooth Streaming) files.
https://www.ffmpeg.org/ffmpeg-formats.html
Add param
-movflags frag_keyframe+empty_moov
from: https://github.com/fluent-ffmpeg/node-fluent-ffmpeg/issues/346#issuecomment-67299526
I got an error when trying to run the following command with FFMpeg:
-i "file1.mp4" -s 506x406 -b:v 2000k -ar 22050 "file2.mp4"
FFMpeg was stuck converting this video, which was just a 7Mb .mp4 file, for hours and eventually I had to kill the process.
The output error from FFMpeg is as follows:
Converter Error Message:
ffmpeg version N-42069-g3233ad4 Copyright (c) 2000-2012 the FFmpeg developers
built on Jun 30 2012 13:18:20 with gcc 4.7.1
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-runtime-cpudetect --enable-avisynth --enable-bzlib --enable-frei0r --enable-libass --enable-libcelt --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-libnut --enable-libopenjpeg --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libutvideo --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib
libavutil 51. 63.100 / 51. 63.100
libavcodec 54. 31.100 / 54. 31.100
libavformat 54. 14.100 / 54. 14.100
libavdevice 54. 0.100 / 54. 0.100
libavfilter 3. 0.100 / 3. 0.100
libswscale 2. 1.100 / 2. 1.100
libswresample 0. 15.100 / 0. 15.100
libpostproc 52. 0.100 / 52. 0.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'File1.mp4':
Metadata:
major_brand : mp42
minor_version : 1
compatible_brands: mp42mp41
creation_time : 2013-07-18 15:38:11
Duration: 00:02:02.23, start: -7.105889, bitrate: 518 kb/s
Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 718x574 [SAR 64:45 DAR 22976:12915], 361 kb/s, 24.97 fps, 90k tbr, 90k tbn, 180k tbc
Metadata:
creation_time : 2013-07-18 15:38:11
handler_name : Apple Video Media Handler
Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, s16, 129 kb/s
Metadata:
creation_time : 2013-07-18 15:38:11
handler_name : Apple Sound Media Handler
[graph 0 input from stream 0:0 # 0259cee0] w:718 h:574 pixfmt:yuv420p tb:1/90000 fr:90000/1 sar:64/45 sws_param:flags=2
[output stream 0:0 # 0259cda0] No opaque field provided
[scaler for output stream 0:0 # 0259c0e0] w:718 h:574 fmt:yuv420p sar:64/45 -> w:506 h:406 fmt:yuv420p sar:666304/466785 flags:0x4
**[mp4 # 02599020] Frame rate very high for a muxer not efficiently supporting it.
Please consider specifying a lower framerate, a different muxer or -vsync 2**
[graph 1 input from stream 0:1 # 02b88200] tb:1/48000 samplefmt:s16 samplerate:48000 chlayout:0x3
[auto-inserted resampler 0 # 024e44e0] chl:stereo fmt:s16 r:48000Hz -> chl:stereo fmt:s16 r:22050Hz
[libx264 # 02407200] using SAR=895/627
[libx264 # 02407200] MB rate (74880000) > level limit (2073600)
[libx264 # 02407200] using cpu capabilities: MMX2 SSE2Fast SSSE3 Cache64
[libx264 # 02407200] profile High, level 5.2
[libx264 # 02407200] 264 - core 125 r2200 999b753 - H.264/MPEG-4 AVC codec - Copyleft 2003-2012 - 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=3 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=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=abr mbtree=1 bitrate=2000 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'File2.mp4':
Metadata:
major_brand : mp42
minor_version : 1
compatible_brands: mp42mp41
encoder : Lavf54.14.100
Stream #0:0(und): Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 506x406 [SAR 666304:466785 DAR 22976:12915], q=-1--1, 2000 kb/s, 180k tbn, 90k tbc
Metadata:
creation_time : 2013-07-18 15:38:11
handler_name : Apple Video Media Handler
Stream #0:1(und): Audio: aac ([64][0][0][0] / 0x0040), 22050 Hz, stereo, s16, 128 kb/s
Metadata:
creation_time : 2013-07-18 15:38:11
handler_name : Apple Sound Media Handler
Stream mapping:
Stream #0:0 -> #0:0 (h264 -> libx264)
Stream #0:1 -> #0:1 (aac -> libvo_aacenc)
Press [q] to stop, [?] for help
DTS -3600, next:-79995 st:0 invalid dropping
frame= 7201 fps=768 q=69.0 size= 0kB time=00:00:00.00 bitrate= 0.0kbits/s dup=7198 drop=0
frame=10801 fps=575 q=69.0 size= 0kB time=00:00:00.00 bitrate= 0.0kbits/s dup=10797 drop=0
frame=14401 fps=516 q=69.0 size= 0kB time=00:00:00.00 bitrate= 0.0kbits/s dup=14396 drop=0
frame=18001 fps=484 q=69.0 size= 0kB time=00:00:00.00 bitrate= 0.0kbits/s dup=17995 drop=0
frame=21601 fps=464 q=69.0 size= 0kB time=00:00:00.00 bitrate= 0.0kbits/s dup=21594 drop=0
frame=25201 fps=454 q=69.0 size= 0kB time=00:00:00.00 bitrate= 0.0kbits/s dup=25193 drop=0
.....
And it just pretty much carries on like that until when I killed the process.
Can anyone explain to me what is going on here and what I can do to fix this?
Like the ffmpeg output said
Please consider specifying a lower framerate, a different muxer or -vsync 2**
Add -vsync 2 and problem will be solved.
Edit to add explanation:
The -vsync parameter is a video sync method. It determines the way in which frames are passed from the input to the output. Here are the possible options, taken from the current ffmpeg docs.
0 or passthrough - Each frame is passed with its timestamp from the demuxer to the muxer.
1 or cfr - Frames will be duplicated and dropped to achieve exactly the requested constant frame rate.
2 or vfr - Frames are passed through with their timestamp or dropped so as to prevent 2 frames from having the same timestamp.
drop - As passthrough but destroys all timestamps, making the muxer generate fresh timestamps based on frame-rate.
-1 or auto - Chooses between 1 and 2 depending on muxer capabilities. This is the default method.
(The reason for the multiple values for some of them is that it used to just be by number, and now it's by name. The numbers are still allowed to be used to avoid breaking backwards compatibility.)
The reason that adding 2 will help here is that it drops more frames and makes thing easier on the muxer. Downsides are, you may lose frames.