all*_*skd 0 command-line bash ffmpeg
我正在尝试完成一批 3 个视频以将其留在那里直到早上处理,但似乎其中有特殊字符......我在终端中尝试“原始”并且它有效但在 bash 脚本中它停止工作
例子:
args1="-r 29.97 -t 00:13:30 -vsync 0 -vpre libx264-medium -i"
args12="-r 29.97 -ss 00:40:30 -vsync 0 -vpre libx264-medium -i"
args2="[in] scale=580:380 [T1],[T1] pad=720:530:0:50 (other arguments with lots of [ and ]"
Run Code Online (Sandbox Code Playgroud)
在输出中它说
无法为 'scale=580:380' 找到合适的输出格式,不知道为什么......就像我说的,该命令在命令行中运行良好,只是不在脚本中
/usr/local/bin/ffmpeg "$args1" "${file}" -vf "$args2" "$args3" "${args[0]}_${startingfrom}_0001_02.mp4"
Run Code Online (Sandbox Code Playgroud)
不要在一个变量中放入多个参数,它适用于非常简单的情况,但除此之外只会给你带来悲伤。改用数组。例如
infile=video.avi
outfile=${infile%.*}.mp4 # video.mp4
args=(
-r 29.97
-t 00:13:30
-vsync 0
-vpre libx264-medium
-vf "[in] scale=580:380 [T1],[T1] pad=720:530:0:50"
)
#...
ffmpeg -i "$infile" "${args[@]}" "$outfile"
Run Code Online (Sandbox Code Playgroud)
(引号很重要)
但在这种情况下,您可能需要一个函数。很难说,因为你的问题有点含糊。