WMA2オーディオとMP4ビデオを含むAVIカプセル化ビデオを前提として、ビデオをパススルーするにはどうすればよいですか。オーディオをMP3に変換します。次に、ファイル全体をAVIに再カプセル化しますか?
ffmpeg -i "foo bar.avi" -acodec libmp3lame "Converted\foo bar.avi"
このディレクトリ内のすべての.avi
ファイルに対して同じコマンドを実行するにはどうすればよいですか?
(bashまたはWindows CLI [for
?]を使用したソリューションが必要です)
from sh import ffmpeg
from os import listdir
from os.path import split
from sys import argv
[ffmpeg("-i '{0}' -acodec libmp3lame 'Converted\{0}'".format(_file))
for _file in sum([listdir(split(arg)[0]) for arg in argv], [])]
これは単に機能しませんか?
for file in *.avi;do ffmpeg -i "$file" -acodec libmp3lame "Converted\\$file";done
編集:
バックスラッシュの問題があるようです...
これを試して:
for file in *.avi;do ffmpeg -i "$file" -acodec libmp3lame 'Converted\\'"$file";done
またはこれ:
for file in *.avi;do ffmpeg -i "$file" -acodec libmp3lame 'Converted\'"$file";done
bash
で、.avi
ファイルがあるディレクトリで実行すると、次のようになります。
#!/bin/bash
for file in *.avi; do
ffmpeg -i "$file" -c:a libmp3lame "Converted\\$file";
done;
関連するコマンドとの試行錯誤の会話の後、これはbashシェルで機能することがわかりました
for i in *.ts; do ffmpeg -i "$i" -threads 6 -f mpegts -vcodec libx264 -preset slow -bufsize 8000 -async 48000 -acodec ac3 -ab 384k -n subdir/"${i%}"; done
これにより、同じ名前でサブディレクトリにある入力.tsファイルの高品質の圧縮バージョンが作成されます。サブディレクトリが存在しない場合は書き込まないので、「サブディレクトリ」と呼んでいるものの代わりにサブディレクトリを指定する必要があると思います。また、このバッチプロセスの適切な構文を見つける前に、個別にレンダリングしたファイルが上書きされないように-nを使用しました(6コアプロセッサを使用しているため、「-threads」もハードウェアに合わせて調整する必要があります)