我正在编写一个 Java 应用程序,它有时会在控制台中使用 ffMPEG 命令。该命令需要执行以下操作:
DDTV/episodes-unconverted/example.[mpg/avi]
DDTV/DDTVwatermark.png
,视频透明度为 33%。DDTV/episodes-converted/example.mpg
这会起作用:
ffmpeg -i "DDTV/DDTVwatermark.png" -i "DDTV/episodes-unconverted/example.mpg" \
-filter_complex "[0:v]colorchannelmixer=0.33[ov];[1:v]scale=iw*sar*min(1280/(iw*sar)\,780/ih):ih*min(1280/(iw*sar)\,780/ih),pad=1280:780:(ow-iw)/2:(oh-ih)/2:black[mainv];[ov][mainv]overlay=main-w-10:main_h-10[video_out] \
-map [video_out] -map 1:a DDTV/episodes-converted/example.mpg
如果您想添加更多输出选项(如编解码器),请将其放在以下命令中:
-filter_complex "~" -map [video_out] -map 1:a -c:v mpeg2video -c:a mp3 DDTV/episodes-converted/example.mpg
实际上,你可以把它放在命令行的任何地方,但这只是常规的事情。并且在这种情况下不要使用副本。您无法复制输入编解码器,因为您正在使用过滤器。复制选项仅在不使用过滤器时才有效。
如果您还有任何疑问,请告诉我。