web-dev-qa-db-ja.com

ffmpegを使用したビデオとオーディオのクロスフェード

このスーパーユーザーの回答 ffmpegを使用した2つのビデオ間のクロスフェード これまでのところ私は得ていますが、多くの解決策を試し、すべてのSOリンクを確認したので、今がその時です皆さんに助けを求めます。

Ts形式でそれぞれ10秒の2つのビデオを、オーディオとビデオで同時にクロスフェードしようとしています。

手順は次のとおりです。

  1. 複雑なフィルターの黒い画面を追加する
  2. 9秒後にビデオ1をフェードアウトし、1秒のフェード期間
  3. 9秒でビデオ2をフェードインし、1秒のフェード期間
  4. 黒のフィルター出力を19秒にトリミングします

これはビデオだけで問題なく機能しますが、オーディオを追加しようとすると、次のエラーメッセージを通り抜けることができません。

どの宛先にも接続されていないasetptsのフィルターインスタンス「Parsed_asetpts_4」のタイプオーディオを含む出力パッド「default」

オーディオ出力を正しく接続していないようです。音声を含めるために[over]行を変更する必要があると思います。しかし、どうすればこれを行うことができますか?

`ffmpeg -i vid1.ts -i vid2.ts -f lavfi -i color=black -filter_complex \
"[0:v]format=pix_fmts=yuva420p,\
fade=t=out:st=9:d=1:alpha=1,setpts=PTS-STARTPTS[v0];\
[0:a]\
afade=t=out:st=9:d=1,asetpts=PTS-STARTPTS[a0];\
[1:v]format=pix_fmts=yuva420p,\
fade=t=in:st=0:d=1:alpha=1,setpts=PTS-STARTPTS+9/TB[v1];\
[1:a]\
afade=t=in:st=0:d=1,asetpts=PTS-STARTPTS+9/TB[a1];\
[a0][a1]amix=inputs=2;\ 
[2:v]scale=720x406,trim=duration=19[over];\
[over][v0]overlay[over1];\
[over1][v1]overlay=format=yuv420[outv]" -vcodec libx264 -y -map [outv] final.ts`
3
Jonathan_W

これにより、オーディオとビデオの両方が実行されます。

ffmpeg -i segment1.mp4 -i segment2.mp4 -an \
-filter_complex \
"   [0:v]trim=start=0:end=9,setpts=PTS-STARTPTS[firstclip];
    [1:v]trim=start=1,setpts=PTS-STARTPTS[secondclip];
    [0:v]trim=start=9:end=10,setpts=PTS-STARTPTS[fadeoutsrc];
    [1:v]trim=start=0:end=1,setpts=PTS-STARTPTS[fadeinsrc];
    [fadeinsrc]format=pix_fmts=yuva420p,      
                fade=t=in:st=0:d=1:alpha=1[fadein];
    [fadeoutsrc]format=pix_fmts=yuva420p,
                fade=t=out:st=0:d=1:alpha=1[fadeout];
    [fadein]fifo[fadeinfifo];
    [fadeout]fifo[fadeoutfifo];
    [fadeoutfifo][fadeinfifo]overlay[crossfade];
    [firstclip][crossfade][secondclip]concat=n=3[output];
    [0:a][1:a] acrossfade=d=1 [audio]
" \
-map "[output]" -map "[audio]" result.mp4

これは基本的に この回答 と同じですが、ビデオのみをカバーしています。それは素晴らしく説明されているので、答えをチェックアウトしてください。

うまくいけば、彼らは将来vcrossfadeフィルターを追加するでしょう...!

6
Merc

これを行う:これは2つのビデオとのクロスフェード用です

ffmpeg -i big_buck.mp4 -i big_buck.mp4 -an -filter_complex "
[0:v]trim=start=0:end=4,setpts=PTS-STARTPTS[firstclip];  
[1:v]trim=start=1,setpts=PTS-STARTPTS[secondclip]; 
[0:v]trim=start=4:end=5,setpts=PTS-STARTPTS[fadeoutsrc]; 
[1:v]trim=start=0:end=1,setpts=PTS-STARTPTS[fadeinsrc]; 
[fadeinsrc]format=pix_fmts=yuva420p, fade=t=in:st=0:d=1:alpha=1[fadein]; 
[fadeoutsrc]format=pix_fmts=yuva420p,fade=t=out:st=0:d=1:alpha=1[fadeout]; 
[fadein]fifo[fadeinfifo]; [fadeout]fifo[fadeoutfifo]; [fadeoutfifo]
[fadeinfifo]overlay[crossfade]; [firstclip][crossfade]
[secondclip]concat=n=3[output]; [0:a][1:a] acrossfade=d=1 [audio]" -map "
[output]" -map "[audio]" result.mp4 -y

2つのビデオでのみ機能します

1
Harsh Bhavsar