私は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=in
とfade=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
完璧。