如何在使用 -s 选项转换为多个视频时添加水印?

如何在使用 -s 选项转换为多个视频时添加水印?

我在为视频添加水印时遇到了问题。我使用 -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 以字符串作为其参数,并对其进行评估,就像您在命令行上输入该字符串一样。

相关内容