Mac端末で、次のようにffmpegを呼び出します。
$ find . -type f -name *.webm | while IFS= read -r f; do echo "$f"; ffmpeg -i "$f" "${f%.webm}".mp4 2> ~/Desktop/err; done
findから返された最初のファイルのみを処理します。
./artist/moody blues/_vid/whitenightsatin_lyrics.webm
エラー抜粋:
次のコマンドを入力します。| all | -1 []
解析エラーです。 3つ以上のパラメータが必要ですが、文字列[[360p].webm]には1つのパラメータしかありません。
入力コマンド:| all | - 1 []構文解析エラー、少なくとも3つのパラメーターが必要です。 'hannel/Ash Wainman/_Inbox/BOHEMIAN RHAPSODY - ASH WAINMAN[HD,1280x720].webm' 文字列には 1 つだけが提供されます。パラメータ
「チャンネル」の代わりに「チャンネル」が必要です。
答え1
シェルループを誤って使用しfind
て不必要に生成しています(読みにくいです!)。ffmpeg
内部で実行できるからですfind
。
find . -type f -name *.webm \
-exec sh -c 'echo "$1"; ffmpeg -nostdin -i "$1" "${1%.webm}".mp4 2>> ~/Desktop/err' sh {} ';'
LordNeckBeardを尊敬してください。 (私は間違いなく毛皮です。)
答え2
LordNeckBeardが提案したように、addは相互作用(または継承された標準入力を読む)を-nostdin
停止します。ffmpeg
マニュアルページには次のように言及されています。
-stdin
Enable interaction on standard input. On by default unless standard input is used as an input. To explicitly disable interaction you need to specify "-nostdin".
Disabling interaction on standard input is useful, for example, if ffmpeg is in the background process group. Roughly the same result can be achieved with "ffmpeg ... <
/dev/null" but it requires a shell.