avconv(または他のツール)を使用したビデオとオーディオのトリミングとフェードイン/アウト

avconv(または他のツール)を使用したビデオとオーディオのトリミングとフェードイン/アウト

私はavconv画像をトリミングして変換するために使用します。 1時間のファイルmtsからビデオストリームとオーディオストリームの最初の7秒と最後の2.5秒を削除するとします。

avconv -i input.mts -map 0:0 -map 0:3 -ss 0:0:07 -t 0:59:50.5 out.mov

これまではうまくいきましたが、次のように追加して開始と終了に2秒のフェードインとアウトを追加したいと思います。

-vf fade=type=in:start_frame=350:nb_frames=100 -vf fade=type=out:start_frame=178750:nb_frames=100

avconvこれらのフレームは、ビデオソースによって報告された50fpsに基づいて計算されます。しかし、フェードインやフェードアウトはありません。

1)ビデオフェージングの原因と解決策は何ですか? 2)オーディオフェードを追加する方法。オプションがあるようです-afade。しかし、私は彼の記録を見つけることができませんでした。

あるいは、これを達成するための他のツール(ビデオとオーディオのトリミングとフェード)を提案することもできます。これはDebian 8用のパッケージとして提供されることをお勧めします。

答え1

ついに@Mario G.が提案した答えを試してみる時間を見つけましたが、非常に面倒です。これを数十回行う必要があります。私は文書を読み、ffmpegそれがはるかに強力でavconvあり、オーディオとビデオの両方に対するフェードを含むことがわかりました。したがって、解決策は次のとおりです。

ffmpeg -i input.mts -map 0:0 -map 0:3 -ss 0:0:07 -to 0:59:57.5 -vf 'fade=t=in:st=7:d=2,fade=t=out:st=3595.5:d=2,crop=out_h=692' -af 'afade=t=in:st=7:d=2,afade=t=out:st=3595.5:d=2' out.mov

したがって、フェードのst=合計パラメータは、d=フレームに変換されなかった秒数でなければなりません。

-to長さを計算するのではなく、終了時間を直接取得するオプションも見つかりました。

このコマンドはすべてのステップを実行します。

  • チャンネル選択-map
  • -ss使用と剪定-to
  • ビデオフェード-vfオプションfade=t=infade=t=out
  • -afオプションを使用したオーディオフェードインとafade=t=inアウトafade=t=out
  • -vfオプションで切り取るcrop=

一歩だけ。

答え2

打つ:

ffmpeg -i input.mts -ss 00:00:20.0 -c copy -t 00:00:30.0 output.mkv

20秒検索 - (i)n input.mkv(デフォルトで削除)を使用すると、30秒間再生され、その中の他のすべての項目が削除されます。これにより、30秒の動画を取得できます。

欲しい

まず、フェード用のイメージを作成する必要があります。好みに応じて、単一の*.png画像にすることができ、すべて白またはすべて黒にすることができます。ビデオと同じ解像度で録画するのが最善です。

ffmpeg -r 1/2 -i black.png -c:v libx264 -r 50 -y -pix_fmt yuv420p fade2s.mkv

つまり、2秒間フェードインおよびアウトされます(-r入力:毎秒1/2 x 50フレーム= 100 fps)。イメージ情報については、The GimpまたはImageMagickをご覧ください。これでフェード効果ができました。

ますます明確になる:

ffmpeg -i fade2s.mkv -y -vf fade=in:0:50 fade_in.mkv

0~50フレーム(1秒~50fps)でフェードイン

フェードイン+フェードアウト: 最後の入力をフェードインにし、フェードアウトを追加します。

ffmpeg -i fade_in.mkv -y -vf fade=out:120:50 fade_in_out.mkv

完璧。

関連情報