我正在尝试从Python脚本中运行以下命令。
ffmpeg -y -loglevel verbose -i /var/www/Intro30.mp4 -i /var/www/temp/videoHD.mp4 -i /var/www/Credits30.mp4 -filter_complex '[0:0] [0:1] [1:0] [1:1] [2:0] [2:1] concat=n=3:v=1:a=1 [v] [a]' -map '[v]' -map '[a]' /var/www/temp/merged.mp4
但它会导致文件损坏。这是输出。
ffmpeg version 3.3.4-2~16.04.york0 Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.4) 20160609
configuration: --prefix=/usr --extra-version='2~16.04.york0' --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
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
[h264 @ 0x7f6d1ca0a7c0] Reinit context to 1920x1088, pix_fmt: yuv420p
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/var/www/Intro30.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf57.71.100
Duration: 00:00:02.93, start: 0.000000, bitrate: 3490 kb/s
Stream #0:0(und): Video: h264 (High), 1 reference frame (avc1 / 0x31637661), yuv420p(left), 1920x1080 (1920x1088), 3507 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 2 kb/s (default)
Metadata:
handler_name : SoundHandler
[h264 @ 0x7f6d1ca334e0] Reinit context to 1920x1088, pix_fmt: yuv420p
Input #1, mov,mp4,m4a,3gp,3g2,mj2, from '/var/www/temp/videoHD.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf57.71.100
Duration: 00:00:57.23, start: 0.000000, bitrate: 3087 kb/s
Stream #1:0(eng): Video: h264 (High), 1 reference frame (avc1 / 0x31637661), yuv420p(left), 1920x1080 (1920x1088), 2950 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #1:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s (default)
Metadata:
handler_name : SoundHandler
[h264 @ 0x7f6d1ca307a0] Reinit context to 1920x1088, pix_fmt: yuv420p
Input #2, mov,mp4,m4a,3gp,3g2,mj2, from '/var/www/Credits30.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf57.71.100
Duration: 00:00:14.14, start: 0.000000, bitrate: 5706 kb/s
Stream #2:0(und): Video: h264 (High), 1 reference frame (avc1 / 0x31637661), yuv420p(left), 1920x1080 (1920x1088), 5711 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #2:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 2 kb/s (default)
Metadata:
handler_name : SoundHandler
Stream mapping:
Stream #0:0 (h264) -> concat:in0:v0
Stream #0:1 (aac) -> concat:in0:a0
Stream #1:0 (h264) -> concat:in1:v0
Stream #1:1 (aac) -> concat:in1:a0
Stream #2:0 (h264) -> concat:in2:v0
Stream #2:1 (aac) -> concat:in2:a0
concat:out:v0 -> Stream #0:0 (libx264)
concat:out:a0 -> Stream #0:1 (aac)
Press [q] to stop, [?] for help
[h264 @ 0x7f6d1d1210e0] Reinit context to 1920x1088, pix_fmt: yuv420p
[h264 @ 0x7f6d1cc07420] Reinit context to 1920x1088, pix_fmt: yuv420p
[h264 @ 0x7f6d1cd449a0] Reinit context to 1920x1088, pix_fmt: yuv420p
[graph 0 input from stream 0:0 @ 0x7f6d1d8f9400] w:1920 h:1080 pixfmt:yuv420p tb:1/15360 fr:30/1 sar:0/1 sws_param:flags=2
[graph_0_in_0_1 @ 0x7f6d1d8ef520] tb:1/44100 samplefmt:fltp samplerate:44100 chlayout:0x3
[graph 0 input from stream 1:0 @ 0x7f6d1d1052a0] w:1920 h:1080 pixfmt:yuv420p tb:1/15360 fr:30/1 sar:0/1 sws_param:flags=2
[graph_0_in_1_1 @ 0x7f6d1d105ac0] tb:1/44100 samplefmt:fltp samplerate:44100 chlayout:0x3
[graph 0 input from stream 2:0 @ 0x7f6d1d17fd20] w:1920 h:1080 pixfmt:yuv420p tb:1/15360 fr:30/1 sar:0/1 sws_param:flags=2
[graph_0_in_2_1 @ 0x7f6d1d109d40] tb:1/44100 samplefmt:fltp samplerate:44100 chlayout:0x3
[libx264 @ 0x7f6d1ca9aaa0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 AVX2 LZCNT BMI2
[libx264 @ 0x7f6d1ca9aaa0] profile High, level 4.0
[libx264 @ 0x7f6d1ca9aaa0] 264 - core 148 r2795 aaa9aa8 - H.264/MPEG-4 AVC codec - Copyleft 2003-2017 - 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 '/var/www/temp/merged.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf57.71.100
Stream #0:0: Video: h264 (libx264), 1 reference frame ([33][0][0][0] / 0x0021), yuv420p(progressive), 1920x1080, q=-1--1, 30 fps, 15360 tbn, 30 tbc (default)
Metadata:
encoder : Lavc57.89.100 libx264
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
Stream #0:1: Audio: aac (LC) ([64][0][0][0] / 0x0040), 44100 Hz, stereo, fltp, delay 1024, 128 kb/s (default)
Metadata:
encoder : Lavc57.89.100 aac
frame= 46 fps=0.0 q=0.0 size= 0kB time=00:00:01.62 bitrate= 0.0kbits/s speed=2.78x
但是当我从命令行运行它时它会完美执行。
ffmpeg version 3.3.4-2~16.04.york0 Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.4) 20160609
configuration: --prefix=/usr --extra-version='2~16.04.york0' --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
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
[h264 @ 0x7f6dc62417c0] Reinit context to 1920x1088, pix_fmt: yuv420p
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/var/www/Intro30.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf57.71.100
Duration: 00:00:02.93, start: 0.000000, bitrate: 3490 kb/s
Stream #0:0(und): Video: h264 (High), 1 reference frame (avc1 / 0x31637661), yuv420p(left), 1920x1080 (1920x1088), 3507 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 2 kb/s (default)
Metadata:
handler_name : SoundHandler
[h264 @ 0x7f6dc626a4e0] Reinit context to 1920x1088, pix_fmt: yuv420p
Input #1, mov,mp4,m4a,3gp,3g2,mj2, from '/var/www/temp/videoHD.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf57.71.100
Duration: 00:00:57.23, start: 0.000000, bitrate: 3087 kb/s
Stream #1:0(eng): Video: h264 (High), 1 reference frame (avc1 / 0x31637661), yuv420p(left), 1920x1080 (1920x1088), 2950 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #1:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s (default)
Metadata:
handler_name : SoundHandler
[h264 @ 0x7f6dc62677a0] Reinit context to 1920x1088, pix_fmt: yuv420p
Input #2, mov,mp4,m4a,3gp,3g2,mj2, from '/var/www/Credits30.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf57.71.100
Duration: 00:00:14.14, start: 0.000000, bitrate: 5706 kb/s
Stream #2:0(und): Video: h264 (High), 1 reference frame (avc1 / 0x31637661), yuv420p(left), 1920x1080 (1920x1088), 5711 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #2:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 2 kb/s (default)
Metadata:
handler_name : SoundHandler
Stream mapping:
Stream #0:0 (h264) -> concat:in0:v0
Stream #0:1 (aac) -> concat:in0:a0
Stream #1:0 (h264) -> concat:in1:v0
Stream #1:1 (aac) -> concat:in1:a0
Stream #2:0 (h264) -> concat:in2:v0
Stream #2:1 (aac) -> concat:in2:a0
concat:out:v0 -> Stream #0:0 (libx264)
concat:out:a0 -> Stream #0:1 (aac)
Press [q] to stop, [?] for help
[h264 @ 0x7f6dc69580e0] Reinit context to 1920x1088, pix_fmt: yuv420p
[h264 @ 0x7f6dc643e420] Reinit context to 1920x1088, pix_fmt: yuv420p
[h264 @ 0x7f6dc657b9a0] Reinit context to 1920x1088, pix_fmt: yuv420p
[graph 0 input from stream 0:0 @ 0x7f6dc712fda0] w:1920 h:1080 pixfmt:yuv420p tb:1/15360 fr:30/1 sar:0/1 sws_param:flags=2
[graph_0_in_0_1 @ 0x7f6dc693c040] tb:1/44100 samplefmt:fltp samplerate:44100 chlayout:0x3
[graph 0 input from stream 1:0 @ 0x7f6dc693cb60] w:1920 h:1080 pixfmt:yuv420p tb:1/15360 fr:30/1 sar:0/1 sws_param:flags=2
[graph_0_in_1_1 @ 0x7f6dc69b68a0] tb:1/44100 samplefmt:fltp samplerate:44100 chlayout:0x3
[graph 0 input from stream 2:0 @ 0x7f6dc69b74a0] w:1920 h:1080 pixfmt:yuv420p tb:1/15360 fr:30/1 sar:0/1 sws_param:flags=2
[graph_0_in_2_1 @ 0x7f6dc6941460] tb:1/44100 samplefmt:fltp samplerate:44100 chlayout:0x3
[libx264 @ 0x7f6dc62d1aa0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 AVX2 LZCNT BMI2
[libx264 @ 0x7f6dc62d1aa0] profile High, level 4.0
[libx264 @ 0x7f6dc62d1aa0] 264 - core 148 r2795 aaa9aa8 - H.264/MPEG-4 AVC codec - Copyleft 2003-2017 - 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 '/var/www/temp/merged.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf57.71.100
Stream #0:0: Video: h264 (libx264), 1 reference frame ([33][0][0][0] / 0x0021), yuv420p(progressive), 1920x1080, q=-1--1, 30 fps, 15360 tbn, 30 tbc (default)
Metadata:
encoder : Lavc57.89.100 libx264
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
Stream #0:1: Audio: aac (LC) ([64][0][0][0] / 0x0040), 44100 Hz, stereo, fltp, delay 1024, 128 kb/s (default)
Metadata:
encoder : Lavc57.89.100 aac
frame= 46 fps=0.0 q=0.0 size= 0kB time=00:00:01.62 bitrate= 0.0kbits/sframe= 64 fps= 59 q=29.0 size= 289kB time=00:00:02.22 bitrate=1062.4kbits/frame= 83 fps= 48 q=29.0 size= 762kB time=00:00:02.85 bitrate=2186.9kbits/[Parsed_concat_0 @ 0x7f6dc69b5ca0] EOF on in0:v0, 1 streams left in segment.
[Parsed_concat_0 @ 0x7f6dc69b5ca0] EOF on in0:a0, 0 streams left in segment.
[Parsed_concat_0 @ 0x7f6dc69b5ca0] Segment finished at pts=2902494
frame= 104 fps= 46 q=29.0 size= 908kB time=00:00:03.55 bitrate=2094.5kbits/frame= 123 fps= 44 q=29.0 size= 1048kB time=00:00:04.17 bitrate=2053.3kbits/frame= 140 fps= 42 q=29.0 size= 1215kB time=00:00:04.76 bitrate=2091.1kbits/frame= 149 fps= 38 q=29.0 size= 1374kB time=00:00:05.06 bitrate=2223.4kbits/frame= 161 fps= 35 q=29.0 size= 1528kB time=00:00:05.45 bitrate=2293.6kbits/frame= 173 fps= 34 q=29.0 size= 1695kB time=00:00:05.82 bitrate=2382.5kbits/frame= 180 fps= 32 q=29.0 size= 1784kB time=00:00:06.08 bitrate=2402.4kbits/frame= 193 fps= 32 q=29.0 size= 1959kB time=00:00:06.50 bitrate=2468.6kbits/frame= 200 fps= 30 q=29.0 size= 2052kB time=00:00:06.75 bitrate=2487.8kbits/frame= 211 fps= 30 q=29.0 size= 2221kB time=00:00:07.12 bitrate=2552.6kbits/frame= 221 fps= 29 q=29.0 size= 2303kB time=00:00:07.45 bitrate=2530.9kbits/frame= 232 fps= 28 q=29.0 size= 2433kB time=00:00:07.82 bitrate=2547.0kbits/frame= 245 fps= 28 q=29.0 size= 2560kB time=00:00:08.26 bitrate=2536.7kbits/frame= 255 fps= 28 q=29.0 size= 2684kB time=00:00:08.59 bitrate=2558.9kbits/frame= 264 fps= 27 q=29.0 size= 2776kB time=00:00:08.89 bitrate=2557.5kbits/frame= 275 fps= 27 q=29.0 size= 2894kB time=00:00:09.26 bitrate=2559.0kbits/frame= 285 fps= 26 q=29.0 size= 3028kB time=00:00:09.58 bitrate=2586.3kbits/frame= 295 fps= 26 q=29.0 size= 3172kB time=00:00:09.91 bitrate=2621.2kbits/frame= 303 fps= 25 q=29.0 size= 3277kB time=00:00:10.19 bitrate=2633.9kbits/frame= 314 fps= 25 q=29.0 size= 3475kB time=00:00:10.56 bitrate=2694.1kbits/frame= 322 fps= 24 q=29.0 size= 3584kB time=00:00:10.82 bitrate=2713.7kbits/frame= 330 fps= 24 q=29.0 size= 3694kB time=00:00:11.09 bitrate=2726.3kbits/frame= 336 fps= 24 q=29.0 size= 3774kB time=00:00:11.30 bitrate=2733.9kbits/frame= 344 fps= 23 q=29.0 size= 3882kB time=00:00:11.56 bitrate=2750.3kbits/frame= 353 fps= 23 q=29.0 size= 4016kB time=00:00:11.86 bitrate=2772.5kbits/frame= 363 fps= 23 q=29.0 size= 4165kB time=00:00:12.19 bitrate=2798.7kbits/frame= 371 fps= 22 q=29.0 size= 4263kB time=00:00:12.46 bitrate=2800.6kbits/frame= 381 fps= 22 q=29.0 size= 4429kB time=00:00:12.79 bitrate=2835.7kbits/frame= 388 fps= 22 q=29.0 size= 4557kB time=00:00:13.02 bitrate=2865.6kbits/frame= 397 fps= 22 q=29.0 size= 4678kB time=00:00:13.32 bitrate=2875.5kbits/frame= 406 fps= 22 q=29.0 size= 4773kB time=00:00:13.63 bitrate=2868.5kbits/frame= 414 fps= 21 q=29.0 size= 4871kB time=00:00:13.88 bitrate=2873.6kbits/frame= 419 fps= 21 q=29.0 size= 4954kB time=00:00:14.04 bitrate=2888.6kbits/frame= 427 fps= 21 q=29.0 size= 5046kB time=00:00:14.32 bitrate=2885.1kbits/frame= 435 fps= 21 q=29.0 size= 5141kB time=00:00:14.58 bitrate=2888.2kbits/frame= 443 fps= 21 q=29.0 size= 5232kB time=00:00:14.86 bitrate=2884.1kbits/frame= 452 fps= 20 q=29.0 size= 5333kB time=00:00:15.16 bitrate=2881.5kbits/frame= 463 fps= 20 q=29.0 size= 5442kB time=00:00:15.53 bitrate=2869.9kbits/frame= 472 fps= 20 q=29.0 size= 5552kB time=00:00:15.81 bitrate=2876.5kbits/frame= 479 fps= 20 q=29.0 size= 5663kB time=00:00:16.06 bitrate=2887.2kbits/frame= 489 fps= 20 q=29.0 size= 5798kB time=00:00:16.39 bitrate=2897.4kbits/frame= 499 fps= 20 q=29.0 size= 5918kB time=00:00:16.71 bitrate=2899.9kbits/frame= 509 fps= 20 q=29.0 size= 6043kB time=00:00:17.06 bitrate=2900.5kbits/frame= 521 fps= 20 q=29.0 size= 6191kB time=00:00:17.46 bitrate=2904.7kbits/frame= 533 fps= 20 q=29.0 size= 6304kB time=00:00:17.85 bitrate=2892.0kbits/frame= 542 fps= 20 q=29.0 size= 6391kB time=00:00:18.15 bitrate=2883.5kbits/frame= 553 fps= 20 q=29.0 size= 6525kB time=00:00:18.52 bitrate=2884.9kbits/frame= 563 fps= 20 q=29.0 size= 6635kB time=00:00:18.85 bitrate=2882.8kbits/frame= 573 fps= 20 q=29.0 size= 6740kB time=00:00:19.17 bitrate=2878.9kbits/frame= 585 fps= 20 q=29.0 size= 6868kB time=00:00:19.59 bitrate=2870.8kbits/frame= 595 fps= 20 q=29.0 size= 6986kB time=00:00:19.92 bitrate=2872.6kbits/frame= 606 fps= 20 q=29.0 size= 7095kB time=00:00:20.29 bitrate=2864.1kbits/frame= 617 fps= 20 q=29.0 size= 7237kB time=00:00:20.66 bitrate=2868.8kbits/frame= 629 fps= 20 q=29.0 size= 7452kB time=00:00:21.06 bitrate=2898.8kbits/frame= 639 fps= 20 q=29.0 size= 7566kB time=00:00:21.38 bitrate=2898.1kbits/frame= 647 fps= 20 q=29.0 size= 7684kB time=00:00:21.66 bitrate=2905.7kbits/frame= 657 fps= 20 q=29.0 size= 7807kB time=00:00:21.98 bitrate=2908.3kbits/frame= 667 fps= 20 q=29.0 size= 7919kB time=00:00:22.31 bitrate=2907.3kbits/frame= 677 fps= 20 q=29.0 size= 8046kB time=00:00:22.66 bitrate=2908.3kbits/frame= 687 fps= 20 q=29.0 size= 8156kB time=00:00:22.98 bitrate=2906.7kbits/frame= 699 fps= 20 q=29.0 size= 8294kB time=00:00:23.38 bitrate=2905.9kbits/frame= 711 fps= 20 q=29.0 size= 8414kB time=00:00:23.80 bitrate=2896.2kbits/frame= 722 fps= 20 q=29.0 size= 8510kB time=00:00:24.14 bitrate=2887.0kbits/frame= 733 fps= 20 q=29.0 size= 8630kB time=00:00:24.52 bitrate=2883.1kbits/frame= 745 fps= 20 q=29.0 size= 8751kB time=00:00:24.91 bitrate=2877.3kbits/frame= 756 fps= 20 q=29.0 size= 8857kB time=00:00:25.28 bitrate=2869.5kbits/frame= 766 fps= 20 q=29.0 size= 8979kB time=00:00:25.63 bitrate=2869.5kbits/frame= 777 fps= 20 q=29.0 size= 9088kB time=00:00:25.98 bitrate=2865.3kbits/frame= 787 fps= 20 q=29.0 size= 9187kB time=00:00:26.33 bitrate=2858.1kbits/frame= 798 fps= 20 q=29.0 size= 9308kB time=00:00:26.67 bitrate=2858.0kbits/frame= 808 fps= 20 q=29.0 size= 9400kB time=00:00:27.02 bitrate=2849.1kbits/frame= 820 fps= 20 q=29.0 size= 9554kB time=00:00:27.42 bitrate=2854.2kbits/frame= 830 fps= 20 q=29.0 size= 9662kB time=00:00:27.74 bitrate=2852.4kbits/frame= 842 fps= 20 q=29.0 size= 9778kB time=00:00:28.16 bitrate=2843.9kbits/frame= 854 fps= 20 q=29.0 size= 9886kB time=00:00:28.56 bitrate=2835.6kbits/frame= 864 fps= 20 q=29.0 size= 9992kB time=00:00:28.88 bitrate=2833.9kbits/frame= 876 fps= 20 q=29.0 size= 10112kB time=00:00:29.28 bitrate=2829.2kbits/frame= 889 fps= 19 q=29.0 size= 21309kB time=00:00:58.00 bitrate=3009.5kbits/frame= 1750 fps= 19 q=29.0 size= 21427kB time=00:00:58.42 bitrate=3004.5kbits/frame= 1761 fps= 19 q=29.0 size= 21553kB time=00:00:58.79 bitrate=3003.1kbits/frame= 1771 fps= 19 q=29.0 size= 21669kB time=00:00:59.11 bitrate=3002.7kbits/frame= 1783 fps= 19 q=29.0 size= 21787kB time=00:00:59.51 bitrate=2999.0kbits/frame= 1793 fps= 19 q=29.0 size= 21902kB time=00:00:59.86 bitrate=2997.3kbits/[Parsed_concat_0 @ 0x7f6dc69b5ca0] EOF on in1:v0, 1 streams left in segment.
[Parsed_concat_0 @ 0x7f6dc69b5ca0] EOF on in1:a0, 0 streams left in segment.
[Parsed_concat_0 @ 0x7f6dc69b5ca0] Segment finished at pts=60135827
frame= 1805 fps= 19 q=29.0 size= 21990kB time=00:01:00.23 bitrate=2990.7kbits/frame= 1816 fps= 19 q=29.0 size= 22117kB time=00:01:00.60 bitrate=2989.6kbits/frame= 1830 fps= 19 q=29.0 size= bitrate=3521.1kbits/frame= 2194 fps= 19 q=29.0 size= 31450kB time=00:01:13.21 bitrate=3519.0kbits/frame= 2213 fps= 19 q=29.0 size= 31591kB time=00:01:13.83 bitrate=3504.9kbits/[Parsed_concat_0 @ 0x7f6dc69b5ca0] EOF on in2:v0, 1 streams left in segment.
[Parsed_concat_0 @ 0x7f6dc69b5ca0] EOF on in2:a0, 0 streams left in segment.
[Parsed_concat_0 @ 0x7f6dc69b5ca0] Segment finished at pts=74253559
No more output streams to write to, finishing.
frame= 2227 fps= 19 q=-1.0 Lsize= 32179kB time=00:01:14.25 bitrate=3549.9kbits/s speed=0.633x
video:31198kB audio:901kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.247438%
Input file #0 (/var/www/Intro30.mp4):
Input stream #0:0 (video): 87 packets read (1271526 bytes); 87 frames decoded;
Input stream #0:1 (audio): 126 packets read (773 bytes); 125 frames decoded (128000 samples);
Total: 213 packets (1272299 bytes) demuxed
Input file #1 (/var/www/temp/videoHD.mp4):
Input stream #1:0 (video): 1717 packets read (21108999 bytes); 1717 frames decoded;
Input stream #1:1 (audio): 2464 packets read (918725 bytes); 2463 frames decoded (2522112 samples);
Total: 4181 packets (22027724 bytes) demuxed
Input file #2 (/var/www/Credits30.mp4):
Input stream #2:0 (video): 423 packets read (10066322 bytes); 423 frames decoded;
Input stream #2:1 (audio): 609 packets read (3705 bytes); 608 frames decoded (622592 samples);
Total: 1032 packets (10070027 bytes) demuxed
Output file #0 (/var/www/temp/merged.mp4):
Output stream #0:0 (video): 2227 frames encoded; 2227 packets muxed (31946574 bytes);
Output stream #0:1 (audio): 3198 frames encoded (3274582 samples); 3199 packets muxed (923102 bytes);
Total: 5426 packets (32869676 bytes) muxed
[libx264 @ 0x7f6dc62d1aa0] frame I:19 Avg QP:18.19 size:110490
[libx264 @ 0x7f6dc62d1aa0] frame P:851 Avg QP:21.97 size: 23670
[libx264 @ 0x7f6dc62d1aa0] frame B:1357 Avg QP:25.31 size: 7150
[libx264 @ 0x7f6dc62d1aa0] consecutive B-frames: 3.1% 44.8% 6.1% 46.0%
[libx264 @ 0x7f6dc62d1aa0] mb I I16..4: 31.3% 59.2% 9.6%
[libx264 @ 0x7f6dc62d1aa0] mb P I16..4: 4.5% 11.6% 0.7% P16..4: 40.9% 8.2% 2.5% 0.0% 0.0% skip:31.6%
[libx264 @ 0x7f6dc62d1aa0] mb B I16..4: 0.5% 1.2% 0.2% B16..8: 28.5% 2.0% 0.2% direct: 1.0% skip:66.3% L0:42.2% L1:55.1% BI: 2.8%
[libx264 @ 0x7f6dc62d1aa0] 8x8 transform intra:67.4% inter:89.6%
[libx264 @ 0x7f6dc62d1aa0] coded y,uvDC,uvAC intra: 39.8% 43.5% 4.0% inter: 7.8% 12.4% 0.1%
[libx264 @ 0x7f6dc62d1aa0] i16 v,h,dc,p: 25% 33% 18% 24%
[libx264 @ 0x7f6dc62d1aa0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 23% 24% 25% 3% 5% 5% 6% 4% 5%
[libx264 @ 0x7f6dc62d1aa0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 22% 30% 14% 5% 6% 5% 6% 4% 7%
[libx264 @ 0x7f6dc62d1aa0] i8c dc,h,v,p: 58% 20% 17% 4%
[libx264 @ 0x7f6dc62d1aa0] Weighted P-Frames: Y:0.8% UV:0.2%
[libx264 @ 0x7f6dc62d1aa0] ref P L0: 73.9% 12.2% 11.3% 2.7% 0.0%
[libx264 @ 0x7f6dc62d1aa0] ref B L0: 92.1% 6.8% 1.1%
[libx264 @ 0x7f6dc62d1aa0] ref B L1: 98.4% 1.6%
[libx264 @ 0x7f6dc62d1aa0] kb/s:3442.75
[aac @ 0x7f6dc62dd100] Qavg: 18520.436
删除了一些行以保持在行限制之下。
这是我用来执行ffmpeg行的python方法。
def ffmpeg(args):
err = None
command = [
ffmpegcmd, '-y',
'-loglevel', loglevel
] + args
ffmpeg = subprocess.Popen(command, stderr=subprocess.PIPE ,stdout=subprocess.PIPE, universal_newlines=True)
while err == None:
out, err = ffmpeg.communicate()
time.sleep(1)
if err:
print(" ".join(command))
raise Exception(err)
*编辑
当我需要使用需要在参数周围使用单引号的命令,即'[0:0] [0:1] [1:0] [1:1] [2:0] [2:1] concat=n=3:v=1:a=1 [v] [a]'
时,上述函数将无效。所以我为那些以字符串形式处理命令的情况制作了另一个函数。这是。
def ffmpegStr(args):
err = None
command = [
ffmpegcmd, '-y',
'-loglevel', loglevel
] + args
commandStr = " ".join(command)
print(commandStr)
ffmpeg = subprocess.Popen(shlex.split(commandStr), stderr=subprocess.PIPE ,stdout=subprocess.PIPE, universal_newlines=True)
while err == None:
out, err = ffmpeg.communicate()
time.sleep(1)
if err:
print(commandStr)
raise Exception(err)
正如您所看到的,我添加了一个打印,以查看正在传递给subprocess.Popen函数的内容。这是当ffmpeg命令未按预期运行时使用的方法。
我使用ffmpegcmd作为变量,这样我可以在两个函数中根据需要更改ffmpeg版本,并进行1次更改。
args只是特定于我想要ffmpeg做的参数列表。
我也想选择使用1行更改两个函数中的loglevel,因此请使用变量。
*结束编辑
为什么处理它的方式不同?
干杯,
斯图
答案 0 :(得分:1)
您不应在参数中包含单引号。当您从命令行运行它时,ffmpeg
看不到单引号。 shell看到它们并理解单引号之间的所有内容都必须作为单个参数,因此当它执行ffmpeg
时,它会将该单个引号交给它而不使用单引号。
要匹配您在命令行上运行的内容,您需要:
args = ["-i", "/var/www/Intro30.mp4",
"-i", "/var/www/temp/videoHD.mp4",
"-i", "/var/www/Credits30.mp4",
"-filter_complex", "[0:0] [0:1] [1:0] [1:1] [2:0] [2:1] concat=n=3:v=1:a=1 [v] [a]",
"-map", "[v]",
"-map", "[a]",
"/var/www/temp/merged.mp4"]
ffmpeg(args)
要演示,请创建一个假的ffmpeg
命令并对其进行测试:
$ vi /tmp/ffmpeg
$ chmod 755 /tmp/ffmpeg
$ cat /tmp/ffmpeg
#!/bin/bash
# Fake ffmpeg
COUNT=0
for arg; do
echo "arg $COUNT: $arg"
COUNT=$((COUNT+1))
done
现在使用您通常会包装的参数运行假ffmpeg
用单引号:
$ /tmp/ffmpeg -map '[v]'
arg 0: -map
arg 1: [v]
请注意,ffmpeg
没有看到单引号。
现在从Python尝试:
$ python
Python 2.7.6 (default, Oct 26 2016, 20:30:19)
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import subprocess
>>> import time
>>> def ffmpeg(args):
... err = None
... command = ["/tmp/ffmpeg"] + args
... ffmpeg = subprocess.Popen(command, stderr=subprocess.PIPE, stdout=subprocess.PIPE, universal_newlines=True)
... while err == None:
... out, err = ffmpeg.communicate()
... time.sleep(1)
... if err:
... print(" ".join(command))
... raise Exception(err)
... print(out)
...
>>> ffmpeg(["-map", "'[v]'"])
arg 0: -map
arg 1: '[v]'
>>> ffmpeg(["-map", "[v]"])
arg 0: -map
arg 1: [v]
>>>
请注意,使用单引号调用ffmpeg()
时,假的
ffmpeg
确实看到了单引号。
但是在没有单引号的情况下调用ffmpeg()
时,假的ffmpeg
没有看到它们,就像它从命令行运行时一样。