我在变量中遇到了一些空格问题:
ALBUM=' -metadata album="Peregrinações Alheias"'
此命令:
ffmpeg -i $R_IMG -r 1 -b 1800 -i $SOUND -acodec libmp3lame -ab 128k "$ALBUM" -y $OUT
返回:
Unable to find a suitable output format for ' -metadata album="Peregrinações Alheias"'
如果我从变量中取出“”:
ffmpeg -i $R_IMG -r 1 -b 1800 -i $SOUND -acodec libmp3lame -ab 128k $ALBUM -y $OUT
返回:
Unable to find a suitable output format for 'Alheias"'
而且我确信我在bash sintax中遗漏了一些东西......
更新
所以看起来问题不是空格而是“-metadata”参数......
问题是我有很多元数据,我想把它们放在一个变量中。像这样:
META=' -metadata album="Peregrinações" -metadata title="Passeio ao PETAR" -metadata author="Rogério Madureira" -metadata date="2012" -metadata description="Áudio de um passeio ao PETAR" -metadata comment="Áudio capturado com TACAM DR-07MKII e Foto capturada com Canon PowerShot S5IS" '
然后:
ffmpeg -i $R_IMG -r 1 -b 1800 -i $SOUND -acodec libmp3lame -ab 128k $META -y $OUT
答案 0 :(得分:2)
Bash将引号中的单词解释为单个参数。尝试
ALBUM='album="Peregrinações Alheias"'
ffmpeg -i $R_IMG -r 1 -b 1800 -i $SOUND \
-acodec libmp3lame -ab 128k -metadata "$ALBUM" -y $OUT
答案 1 :(得分:2)
答案 2 :(得分:1)
ALBUM='album=Peregrinações Alheias'
ffmpeg -i $R_IMG -r 1 -b 1800 -i $SOUND -acodec libmp3lame -ab 128k -metadata "$ALBUM" -y $OUT
答案 3 :(得分:1)
如果您总想设置ALBUM
,那么Adam的答案就可以了。但是如果你想选择设置ALBUM
,那么使用它:
ALBUM="Peregrinações Alheias"
TITLE="Passeio ao PETAR"
OPTIONAL=
ffmpeg -i $R_IMG -r 1 -b 1800 -i $SOUND \
-acodec libmp3lame -ab 128k \
${ALBUM:+-metadata album="$ALBUM"} \
${TITLE:+-metadata title="$TITLE"} \
${OPTIONAL:+-metadata optional="$OPTIONAL"} \
-y $OUT
如果未设置ALBUM
,则省略完整的${var:+subst}
块。其他变量当然是相同的 -
当然,如果存在您想要设置的固定数据集,则可以扩展到多个-metadata
选项。
答案 4 :(得分:1)
使用eval
可以执行您想要的操作...根据$R_IMG
,$SOUND
和$OUT
中的内容,他们可能需要双引号转义,例如。 \"$SOUND\"
....
你的$META
(我假设这个名字是你原来命名为$ ALBUM的另一个名字)不需要像这样布局,但它确实有助于(我)...只是空格,就像在你的原作也一样。
META='
-metadata album="Peregrinações"
-metadata title="Passeio ao PETAR"
-metadata author="Rogério Madureira"
-metadata date="2012"
-metadata description="Áudio de um passeio ao PETAR"
-metadata comment="Áudio capturado com TACAM DR-07MKII e Foto capturada com Canon PowerShot S5IS"
'; META="$(echo "$META" |sed 's|"|\\\\"|g' |tr '\n' ' ')"
eval "ffmpeg -i $R_IMG -r 1 -b 1800 -i $SOUND -acodec libmp3lame -ab 128k $META -y $OUT"
如果您不想使用sed
转换行,则只需将"
中的每个$META
更改为\\"
,如下一个示例所示:
META=' -metadata album=\\"Peregrinações\\" -metadata title=\\"Passeio ao PETAR\\" -metadata author=\\"Rogério Madureira\\" -metadata date=\\"2012\\" -metadata description=\\"Áudio de um passeio ao PETAR\\" -metadata comment=\\"Áudio capturado com TACAM DR-07MKII e Foto capturada com Canon PowerShot S5IS" '
eval "ffmpeg -i $R_IMG -r 1 -b 1800 -i $SOUND -acodec libmp3lame -ab 128k $META -y $OUT"
我已使用以下ffmpeg
编码参数成功测试了它:
eval "ffmpeg -i ~/input.flv -sameq -acodec libmp3lame -ab 128k $META -y ~/output.mp3"