是否可以通过命令行在视频中添加“淡化为黑色”效果?


9

我有一个脚本来编码视频(使用mencoder),但是有一种方法可以从命令行添加一个简单的“淡入/淡入黑色”,最好是免费的(就像在开源中一样)。

它可以在Windows或Ubuntu Linux上。


1
是否mmsuper8似乎对你的工作?请状态操作系统等
slhck

抱歉。Ubuntu或七。
Manu 2012年

以mmsuper8作为您的答案,我给您投票:)
Manu

Answers:


1

根据命令行mmsuper8,我唯一能找到的是Linux工具。

具体来说,它具有该mmsuper8fade工具,似乎对您有用。

最好是,如果您编辑此问题并提供适合您的示例!


14

最近带有“淡入淡出”视频过滤器的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

您可以将两者结合成一个过滤链:

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共享许多库,因此使用ffmpeg代替mencoder重写脚本应该相当容易,并避免不必要的额外编码。我非常确定您可以在mencoder中实现相同的功能,但是我不知道mencoder语法。


6

我有这个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>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.