2

変数内のスペースに関するいくつかの問題に直面しています:

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シンタックスで何かが欠けていると確信しています...


アップデート:

したがって、問題はスペースではなく、「-metadata」引数にあるようです...

問題は、多くのメタデータがあり、それらを 1 つの変数だけに入れたいということです。このような:

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

4

5 に答える 5

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
于 2012-04-13T15:29:29.083 に答える
2

代わりにコマンドを配列に入れてください。

于 2012-04-13T15:29:38.567 に答える
1

常に設定したい場合はALBUM、アダムの答えはOKです。ただし、オプションで設定する場合は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これはいくつかのオプションにスケールアップします。

于 2012-04-13T15:37:10.923 に答える
1
ALBUM='album=Peregrinações Alheias'

ffmpeg -i $R_IMG -r 1 -b 1800 -i $SOUND -acodec libmp3lame -ab 128k -metadata "$ALBUM" -y $OUT
于 2012-04-13T15:32:05.757 に答える
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"
于 2012-04-13T17:00:34.537 に答える