2017-11-29 11 views
1

私はffmpegコマンドを使用して、1つのビデオを重ねて表示します。 最短のin2.mp4は30秒であり、最長のin1.aviが停止するまでそれを繰り返したいと思います。次のコマンドを使用すると、最短は1回重複し、最長は最後まで続きます。ループオーバーレイ入力ビデオ

ffmpeg -i in1.avi -i in2.mp4 -filter_complex "[0:v]setpts=PTS-STARTPTS, scale=1920x1080[top];[1:v]setpts=PTS-STARTPTS, scale=1920x1080, format=yuva420p, colorchannelmixer=aa=0.5[bottom]; [top][bottom]overlay=shortest=0" -acodec libvo_aacenc -vcodec libx264 out.mp4 

私は-filter_complex後に様々な場所でloop=-1を配置しようとしましたが、エラーを取得している

No such filter: 'loop' Error initializing complex filters. Invalid argument 

コンプリート出力:

ffmpeg -i in1.avi -i in2.mp4 -filter_complex "[0:v]setpts=PTS-STARTPTS, scale=1920x1080[top];[1:v]setpts=PTS-STARTPTS, scale=1920x1080, format=yuva420p, colorchannelmixer=aa=0.5,loop=-1[bottom]; [top][bottom]overlay=shortest=0" -acodec libvo_aacenc -vcodec libx264 out.mp4 
ffmpeg version 2.8.4 Copyright (c) 2000-2015 the FFmpeg developers built with gcc 5.2.0 (GCC) configuration: --enable-gpl 
--enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libdcadec --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-lzma --enable-decklink --enable-zlib libavutil  54. 31.100/54. 31.100 libavcodec  56. 60.100/
56. 60.100 libavformat 56. 40.101/56. 40.101 libavdevice 56. 4.100/56. 4.100 libavfilter  5. 40.101/5. 40.101 libswscale  3. 1.101/3. 1.101 libswresample 1. 2.101/
1. 2.101 libpostproc 53. 3.100/53. 3.100 Input #0, avi, from 'in1.avi': Metadata: 
    encoder   : Lavf57.32.100 Duration: 00:03:03.28, start: 0.000000, bitrate: 3003 kb/s 
    Stream #0:0: Video: h264 (High 4:4:4 Predictive) (H264/0x34363248), yuv444p, 1920x1080 [SAR 1:1 DAR 16:9], 160 kb/s, 25 fps, 25 tbr, 25 tbn, 50 tbc 
    Stream #0:1: Audio: pcm_f32le ([3][0][0][0]/0x0003), 44100 Hz, stereo, flt, 2822 kb/s Input #1, mov,mp4,m4a,3gp,3g2,mj2, from 'in2.mp4': Metadata: 
    major_brand  : mp42 
    minor_version : 0 
    compatible_brands: mp42mp41isomavc1 
    creation_time : 2016-11-05 17:25:45 Duration: 00:00:15.02, start: 0.000000, bitrate: 4071 kb/s 
    Stream #1:0(und): Video: h264 (High) (avc1/0x31637661), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 3815 kb/s, 25 fps, 25 tbr, 25 tbn, 50 tbc (default) 
    Metadata: 
     creation_time : 2016-11-05 17:25:45 
     handler_name : L-SMASH Video Handler 
     encoder   : AVC Coding 
    Stream #1:1(und): Audio: aac (LC) (mp4a/0x6134706D), 48000 Hz, stereo, fltp, 255 kb/s (default) 
    Metadata: 
     creation_time : 2016-11-05 17:25:45 
     handler_name : L-SMASH Audio Handler [AVFilterGraph @ 056a41e0] No such filter: 'loop' Error initializing complex filters. Invalid argument 
+1

は、完全なコンソール出力の代わりに、ループ・フィルタを使用して、コマンドのためだけのエラーを表示します。あなたのffmpegは古いものでなければなりません:libvo_aacencはffmpegから削除されました。 – LordNeckbeard

+0

@LordNeckbeardが出力を追加しました。 –

+1

あなたのffmpegはループフィルタにとっては古すぎるようです。 Linux、macOS、Windows用の静的ビルドへのリンクについては、[FFmpeg Download](https://ffmpeg.org/download.html)のページを参照してください。ループフィルタの後に 'setpts = N/FRAME_RATE/TB'を連鎖させてタイムスタンパを生成する必要があります。そして、同じフィルタチェーンから' setpts = PTS-STARTPTS'を削除することができます。オーバーレイの後に 'format = yuv420p'も必要です。しかし何かをする前に古いffmpegを扱う。 – LordNeckbeard

答えて

2
  1. あなたffmpegループフィルタのためにあまりにも古かったです。
  2. loopには、ループするフレーム数を指定する必要があります。
  3. overlay=shortest=1を使用すると、永遠にループします。

例:

ffmpeg -i in1.avi -i in2.mp4 -filter_complex 
    "[0:v]setpts=PTS-STARTPTS, scale=1920x1080[top]; 
    [1:v]loop=-1:size=750, setpts=N/FRAME_RATE/TB, scale=1920x1080, format=yuva420p, colorchannelmixer=aa=0.5[bottom]; 
    [top][bottom]overlay=shortest=1, format=yuv420p" 
out.mp4 
+0

なぜ75fpsですか? (私はあなたが2250 = 75×30を持っていると仮定します) –

+1

@ジャニスです。それはタイプミスでした。一定。私はもともと75を任意の値として入れました。 – LordNeckbeard

+0

@LordNeckbeard、あなたは[この1つ](https://superuser.com/q/1294175/474942)に関する考えを持っていますか? –

関連する問題