2017-09-26 1 views
1

とフェージングテキストは、(テキストはバックグラウンドを持っている)、現時点では、私が持っていることは、このコマンドは次のとおりです。FFMPEG - 私はinとoutテキストをフェードインしようとしている背景

1.ブレンドコマンド

ffmpeg -y -i input.mp4 -filter_complex "drawtext=fontfile=HelveticaNeue.ttf:text='Testing': fontcolor=white:fontsize=40: box=1: [email protected]:boxborderw=5:x=(w-text_w)/2:y=(h-text_h)/2[subtitles];[subtitles][0:v]blend=all_expr='A*(if(between(T,1,2),(T-1),0))+B*(1-(if(between(T,1,2),(T-1),0)))'[out]" -map '[out]' -map 0:a output.mp4 

上記のコマンドが正常に(別名、このフィルタの字幕)のDrawTextをフェードイン、それの数値を変更すると、かなり持っていないので、私は、それはいくつかの理由のためにそれらをフェードアウトさせるために管理していません私が期待している結果。 、内と外

2.フェードコマンド

ffmpeg -y -i input.mp4 -filter_complex "drawtext=fontfile=HelveticaNeue.ttf:text='Testing': fontcolor=white:fontsize=40: box=1: [email protected]:boxborderw=5:x=(w-text_w)/2:y=(h-text_h)/2[subtitles]; [subtitles]fade=t=in:st=2:d=1,fade=t=out:st=3:d=1[out]" -map '[out]' -map 0:a output.mp4 

この第二のコマンドフェード:

は私もそれほど複雑であるが、他の理由のために、あまりにも動作しないコマンドを試してみました字幕部分のみではなくビデオ全体に適用されます。

誰にでも私にこの手を差し伸べることができますか?

答えて

1

これを行うには、基本ビデオを2つに分割し、1つのコピーにテキストを描画し、アルファチャンネルを追加し、アルファにフェードを適用し、結果を他のコピーにオーバーレイします。

ffmpeg -y -i input.mp4 -filter_complex "[0]split[base][text];[text]drawtext=fontfile=HelveticaNeue.ttf:text='Testing': fontcolor=white:\ 
fontsize=40: box=1: [email protected]:boxborderw=5:x=(w-text_w)/2:y=(h-text_h)/2,format=yuva444p,fade=t=in:st=2:d=1:alpha=1,fade=t=out:st=3:d=1:alpha=1[subtitles]; \ 
[base][subtitles]overlay" output.mp4 
+0

非常に興味深い!私はそれがずっと遅くなると思ったが、私たちは字幕チャンネルだけを消してしまったが、それはかなり反対だった。あなたの解決策は、私の「1.ブレンドコマンド」の半分以下しかかからず、もっと良いオプションが発生しない限り、入力していただきありがとうございます! –

+1

'blend'は、各ピクセルを個別にアドレス指定しますので、より多くのmem I/O操作を行います。 – Mulvya

+0

ありがとうございます。入力仲間に感謝します! –

関連する問題