.ts
複数のビデオファイルを変換しようとしていますが、.mp4
ファイルを見つけるときにfind
結果をループにリンクして各ファイルに対して実行し、古いファイルを削除する必要があるwhile
ようです。変換されたファイルです。これが私がfindで得るものです:ffmpeg
.ts
$ find ./ -iname "*.ts"
./Parent-Dir/video1.ts
./Parent-Dir/video2.ts
./Parent-Dir/video3.ts
./Parent-Dir/video4.ts
..
..
.. about a 100 more videos ..
find
ループでこれを行うことはできますかwhile
?
find ./ -iname "*.ts" | while IFS= read video
do
ffmpeg -i "${video}" -c:v libx264 -c:a aac "${video}".mp4
rm -f ${video}.ts
done
答え1
正しいファイル名を取得するには変更する必要があります。
ffmpeg -i "${video}" -c:v libx264 -c:a aac "${video}".mp4
到着
ffmpeg -i "${video}" -c:v libx264 -c:a aac "${video%.*}".mp4
次のように使用することもできますfor
。
for video in **/*.ts
これはキャプチャされませんが、.TS
より良い検索を処理します。
そして、ファイルを削除するときは常に引用符を追加してください。
rm -f "${video}"
答え2
結局、これは私にとって完璧に動作します。
find ./ -iname "*.ts" \
| while IFS= read -r video; do
ffmpeg -nostdin -i "${video}" -c:v libx264 -c:a aac "${video%.*}".mp4
rm -f "${video}"
done
それから私が見つけたものとまったく一致するものにvideo.ts
変換されます!video.mp4
からインスピレーションを受けるこの回答。 @Romeo Ninovにご協力いただきありがとうございます!