コマンドラインからビデオに「フェード トゥ ブラック」効果を追加する方法はありますか?

コマンドラインからビデオに「フェード トゥ ブラック」効果を追加する方法はありますか?

ビデオをエンコードするスクリプト(mencoder を使用)がありますが、コマンド ラインから単純な「フェード アウト/フェード イン (黒にフェード アウト/フェード イン)」を追加する方法はありますか。できれば無料 (オープン ソースなど) でお願いします。

Windows でも Ubuntu Linux でも可能です。

答え1

コマンドラインに基づいて私が見つけた唯一のものはmmsuper8Linux ツール。

具体的には、mmsuper8fadeあなたにとって役立つと思われるツールが紹介されています。

この質問を編集して、自分にとってうまくいった例を提供していただければ最善です。

答え2

最近の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 (25fps で 14 分) から 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 の構文はわかりません。

答え3

映画(オーディオ + ビデオ)の最後を自動的にフェードアウトする 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>

関連情報