![如何在使用 -s 选项转换为多个视频时添加水印?](https://linux22.com/image/1379986/%E5%A6%82%E4%BD%95%E5%9C%A8%E4%BD%BF%E7%94%A8%20-s%20%E9%80%89%E9%A1%B9%E8%BD%AC%E6%8D%A2%E4%B8%BA%E5%A4%9A%E4%B8%AA%E8%A7%86%E9%A2%91%E6%97%B6%E6%B7%BB%E5%8A%A0%E6%B0%B4%E5%8D%B0%EF%BC%9F.png)
我在为视频添加水印时遇到了问题。我使用 -s 选项将视频转换为 5 种不同的分辨率。
我尝试过的:
waterMark="\"movie=/watermark.png [watermark]; [in][watermark] overlay=main_w-overlay_w-10:10 [out]\""
resolutions=$(echo -e "${resolutions} -s ${newX}x${myY} ${map} -vcodec libx264 ${options}
-vf ${waterMark} ${NEW_FILENAME}_${myY}p.mp4")
ffmpeg -i $FILENAME "${resolutions}"
这是该命令的回显:echo "ffmpeg -i $FILENAME $resolutions"
ffmpeg -i test.mp4
-s 1728x720 -map 0:0 -map 0:1 -vcodec libx264 -acodec aac -strict experimental -movflags faststart -vf "movie=/watermark.png [watermark]; [in][watermark] overlay=main_w-overlay_w-10:10 [out]" test_720p.mp4
-s 1152x480 -map 0:0 -map 0:1 -vcodec libx264 -acodec aac -strict experimental -movflags faststart -vf "movie=/watermark.png [watermark]; [in][watermark] overlay=main_w-overlay_w-10:10 [out]" test_480p.mp4
-s 864x360 -map 0:0 -map 0:1 -vcodec libx264 -acodec aac -strict experimental -movflags faststart -vf "movie=/watermark.png [watermark]; [in][watermark] overlay=main_w-overlay_w-10:10 [out]" test_360p.mp4
-s 576x240 -map 0:0 -map 0:1 -vcodec libx264 -acodec aac -strict experimental -movflags faststart -vf "movie=/watermark.png [watermark]; [in][watermark] overlay=main_w-overlay_w-10:10 [out]" test_240p.mp4
-s 344x144 -map 0:0 -map 0:1 -vcodec libx264 -acodec aac -strict experimental -movflags faststart -vf "movie=/watermark.png [watermark]; [in][watermark] overlay=main_w-overlay_w-10:10 [out]" test_144p.mp4
我不知道错误是什么,我得到的只是红色代码的一部分:
Metadata: handler_name : VideoHandler Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 126 kb/s Metadata: handler_name : SoundHandler
此部分为红色*
-s 1728x720 -map 0:0 -map 0:1 -vcodec libx264 -acodec aac -strict experiments -movflags faststart -vf "movie=/watermark.png [watermark]; [in][watermark] overlay=main_w-overlay_w-10:10 [out]" test_720p.mp4 -s 1152x480 -map 0:0 -map 0:1 -vcodec libx264 -acodec aac -strict experiments -movflags faststart -vf "movie=/watermark.png [watermark]; [in][watermark] overlay=main_w-overlay_w-10:10 [out]" test_480p.mp4 -s 864x360 -map 0:0 -map 0:1 -vcodec libx264 -acodec aac -strict experiments -movflags faststart -vf "movie=/watermark.png [水印]; [输入][水印] overlay=main_w-overlay_w-10:10 [输出]" test_360p.mp4 -s 576x240 -map 0:0 -map 0:1 -vcodec libx264 -acodec aac -strict experiments -movflags faststart -vf "movie=/watermark.png [水印]; [输入][水印] overlay=main_w-overlay_w-10:10 [输出]" test_240p.mp4 -s 344x144 -map 0:0 -map 0:1 -vcodec libx264 -acodec aac -strict experiments -movflags faststart -vf "movie=/watermark.png [水印]; [输入
奇怪的是,如果我从终端运行从 echo 获得的代码"ffmpeg -i $FILENAME $resolutions"
,它确实有效!但它在 bash 中不起作用
我还尝试在 -i $FILENAME 之后添加水印
ffmpeg -i $FILENAME -vf "movie=/watermark.png [watermark]; [in][watermark] overlay=main_w-overlay_w-10:10 [out]" $resolutions"
但在这种情况下,只有第一个视频会带有水印。
答案1
我通过使用 eval 运行 ffmpeg 命令来解决这个问题。eval 以字符串作为其参数,并对其进行评估,就像您在命令行上输入该字符串一样。