请帮助我解决我的问题,因为我在使用 ffmpeg 时遇到了麻烦,我使用以下命令:
ffmpeg -i whiskey.mkv -threads 0 -c:v libx264 -crf 28 -preset veryslow -vf "movie=logo.png[wm];[in][wm]overlay=0:0,subtitles=whiskey.srt[out]" whiskey2.mp4
但出现错误
root@:~/ffmpeg# ffmpeg -i whiskey.mkv -threads 0 -c:v libx264 -crf 2
8 -preset veryslow -vf "movie=logo.png[wm];[in][wm]overlay=0:0,subtitles=whiskey
.srt[out]" whiskey2.mp4
ffmpeg version N-80522-ge0faad8 Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 4.9.2 (Debian 4.9.2-10)
configuration:
libavutil 55. 24.100 / 55. 24.100
libavcodec 57. 46.100 / 57. 46.100
libavformat 57. 38.102 / 57. 38.102
libavdevice 57. 0.101 / 57. 0.101
libavfilter 6. 46.102 / 6. 46.102
libswscale 4. 1.100 / 4. 1.100
libswresample 2. 1.100 / 2. 1.100
Unrecognized option 'crf'.
Error splitting the argument list: Option not found
如果您有任何对水印 + 字幕进行无损编码的命令,请告诉我。
答案1
不支持 libx264
您正在尝试使用编码器 libx264,但您的ffmpeg
配置未支持此编码器。您的configure
行是空白的,但需要--enable-libx264
&--enable-gpl
才能使用 libx264。
解决这个问题最简单的方法是下载静态构建ffmpeg
:它将支持libx264。
无“质量损失”
过滤需要重新编码,但您尝试使用会产生有损输出的选项。
如果您确实不想损失质量,则必须进行无损输出,但大多数用户并不希望这样做,因为文件会很大,而且并非所有播放器/设备都支持它。对于使用 libx264 的无损输出,请使用-crf 0
。
您实际上可能想要的是具有损耗但质量足够好以至于您无法判断其在技术上是否无损。对于此用途-crf 18
。
您的命令有多余的、无用的选项。清理后的示例如下:
ffmpeg -i whiskey.mkv -i logo.png -filter_complex \
"[0:v][1:v]overlay,subtitles=whiskey.srt" \
-c:v libx264 -crf 18 -preset veryslow output.mp4
如果输入音频与 MP4 容器兼容,则添加-c:a copy
到流复制音频而不是重新编码它。