ffmpegとsedを使用したBashスクリプト

ffmpegとsedを使用したBashスクリプト

そのため、bashでconcat_files.txtの各行の先頭に相対パスを追加するスクリプトを作成しようとしています。次に、すべてのファイルをリンクし、パス変数で定義されているのと同じディレクトリに出力ファイルを保存しようとします。これまでのところ、sedコマンドはうまく機能しています。出力ファイルの前にパスを挿入する方法を見つけるだけです。最も簡単な方法は、現在のディレクトリからファイルをリンクし、出力ファイルをパス変数に移動することです。ただし、現在のディレクトリには十分な場所がないため、これはオプションではありません。

#!/bin/bash

# Script that concatenates all the files defined in concat_files.txt

path=/mnt/disk/video_evaluation/XDROOT/Clip/

sed -i "s@^@file '$path@" concat_files.txt
sed -i "s/$/'/" concat_files.txt


ffmpeg -f concat -i concat_files.txt -c copy $path/output.mxf

スクリプトに対するもう1つの改善点は、特定の拡張子を持つすべてのファイルを選択してファイルに入れることができることです。しかし、これもどうすればいいのかわかりません...

ベストアンサー1

実際に@foxが正しいです。スクリプトはうまく実行されます。彼が提案した変更に対応するために少し修正しました。

#!/bin/bash

# Script that concatenates all the files defined in concat_files.txt
path=/mnt/disk/video_evaluation/XDROOT/Clip/

sed -e "s@^@file '$path@" concat_files.txt > new.txt
sed -e "s/$/.MXF'/" new.txt > final.txt
ffmpeg -f concat -safe 0 -i final.txt -c copy $path/output.mxf

現在、特定の拡張子を持つファイルをファイルに追加する機能はありません。

おすすめ記事