2016-09-02 4 views
0

をffmpegのためにスペースを複数のパラメータおよびファイル名を含むパス文字列は、私は次のようにエントリを持つテキストファイルを生成するスクリプトを持っている:のbashスクリプト:

-ss 5.5 -i "/path/vid 1.mp4" -t 3 "/path/vid out1.mp4" 

しかし、私はそれが失敗した添付この文字列でのffmpegを呼び出すとき。 変数を引用すると、ffmpegは文字列全体を単一のオプションと見なします。エラー "オプションが見つかりません"。 私は、その後、何らかの理由でffmpegのために二重引用符やレポート「/パス/ VID:そのようなファイルやディレクトリ、それは-iとして正しく入力を印刷していても

。」無視引用していない場合は/パスを。。/ VID 1.mp4"

単一引用符を含むファイル名を二重引用符の交換は を助けていません。しかし、私はzenityを使うために文字列を渡した後、手動で、端末にコピーしたときに、それが動作します:

zenity --entry --entry-text "ffmpeg -nostdin $line2" 

だから、コマンド全体をvarとruに割り当ててみました bash $ varまたはexec $ varですが、運はありません。あなたの引数場合

#!/bin/bash 


fffile="/home/vume5/Desktop/dwhelper/bud grafting animation.mp4" 

line="-ss 4.920000 -i \"$fffile\" -t 60.000000 -map 0 -c:v copy -c:a copy \"$fffile.cut.mkv\"" 

zenity --entry --entry-text "$line" 

ffmpeg $line 

read dummy 
+0

手動で 'ffmpeg -ss 5.5 -i"/path/vidコマンドを試します。1.mp4 "-t 3"/path/vid out1.mp4 "仕事? – Sundeep

+0

はい。問題は二重引用符がファイル名の文字として扱われることだと思います。それはそれがどのように見えるかです。そして、私はこれを防ぐ方法を知らない。 –

+0

ちょうど推測しますが、これは役に立ちますか? '-ss 5.5 -i" \ "/ path/vid 1.mp4 \" "-t 3" \ "/ path/vid out1.mp4 \" " –

答えて

2

:問題を実証

echo $stringvar | xargs ffmpeg 

短い完全なスクリプト:ジョーンEstabanによって

ソリューションを「コマンドが見つかりません」:別名にそれを割り当てることはどちらか動作しません。スペースやその他の特殊文字を含む場合は、配列を使用してそれらを保存することができます。

cat my_list_of_params.txt | xargs -l ffmpeg

この実行ffmpegのように何度もファイルの行のように:あなたはxargsのを使用することができ、各実行のための希望のparamsのテキストファイルを持っている場合は

例えば:

params=(-ss 5.5 -i "/path/vid 1.mp4" -t 3 "/path/vid out1.mp4") 
mycommand "${params[@]}" 
0

。 param -lは、ファイル上の各行が1回実行されなければならないことを意味します。ffmeg