ビデオをエンコードするスクリプト(mencoderを使用)がありますが、コマンドラインから単純な「フェードアウト/フェードインからブラック」を、できれば無料で(オープンソースのように)追加する方法はありますか。
WindowsまたはUbuntuLinuxのいずれかである可能性があります。
コマンドラインに基づいて私が見つけた唯一のものは mmsuper8
、Linuxツール。
具体的には、mmsuper8fade
ツール、それはあなたにとって役立つかもしれないようです。
この質問を編集して、自分に合った例を提供するのが最善です。
「フェード」ビデオフィルターを備えた最近のffmpegはこれを行うことができます。残念ながら、Ubuntuリポジトリのffmpegでは、なんらかの理由でフィルターが有効になっていないため、別の場所から取得する必要があります( ここ を参照)。
黒からフェードインするには、フレーム0から開始し、50フレーム(2秒@ 25fps)を超えます。
ffmpeg -i input.mp4 -filter:v 'fade=in:0:50' \
-c:v libx264 -crf 22 -preset veryfast -c:a copy output.mp4
フレーム21000(14分@ 25fps)からフェードアウトするには、50フレームを超えます。
ffmpeg -i input.mp4 -filter:v 'fade=out:21000:50' \
-c:v libx264 -crf 22 -preset veryfast -c:a copy output.mp4
2つを組み合わせてフィルターチェーンにすることができます。
ffmpeg -i input.mp4 -filter:v 'fade=in:0:50,fade=out:21000:50' \
-c:v libx264 -crf 22 -preset veryfast -c:a copy output.mp4
これらの例からわかるように、ビデオフィルタを使用する場合は、ビデオをトランスコードする必要があります。 ffmpegとmencoderは多くのライブラリを共有しているため、mencoderの代わりにffmpegを使用し、不要な余分なエンコードを回避するようにスクリプトを書き直すのはかなり簡単です。 Mencoderでも同じことができると確信していますが、mencoderの構文はわかりません。
映画(オーディオ+ビデオ)の終わりを自動的にフェードアウトするこのbashスクリプトがあります:
#!/bin/bash
# Audio + vidéo fade out at the end of mp4 files
# 2015-09-09 19:07:17.0 +0200 / Gilles Quenot
# length of the fade out
fade_duration=2 # seconds
if [[ ! $2 ]]; then
cat<<EOF
Usage:
${0##*/} <input mp4> <output mp4>
EOF
exit 1
fi
for x in bc awk ffprobe ffmpeg; do
if ! type &>/dev/null $x; then
echo >&2 "$x should be installed"
((err++))
fi
done
((err > 0)) && exit 1
duration=$(ffprobe -select_streams v -show_streams "$1" 2>/dev/null |
awk -F= '$1 == "duration"{print $2}')
final_cut=$(bc -l <<< "$duration - $fade_duration")
ffmpeg -i "$1" \
-filter:v "fade=out:st=$final_cut:d=$fade_duration" \
-af "afade=t=out:st=$final_cut:d=$fade_duration" \
-c:v libx264 -crf 22 -preset veryfast -strict -2 "$2"
FadeOutMp4 <input mp4> <output mp4>