から情報を取得する私はビデオを処理するためのスクリプトを作成しようとしていますが、私は私ができるので、より良い調子に受信ファイルからの出力をbit_rateの、幅、高さ情報を取得するために期待していました。このスクリプトは一度に1つのファイルを処理するときに機能しますが、突然ループに入れると情報が得られません。バッシュスクリプトffprobe
だから、この作品:これはfind ./ -type f -regex ".*\.\(mkv\|mp4\|wmv\|flv\|webm\|mov\|avi\)" -print0 | xargs -0 /root/newbatch.sh
for i; do
eval '$(ffprobe -v quiet -show_format -of flat=s=_ -show_entries stream=height,width,nb_frames,duration,codec_name $i)';
width=${streams_stream_0_width};
height=${streams_stream_0_height};
bitrate=${format_bit_rate};
kbitrate=$((bitrate/1000));
echo $i,$width,$height,$kbitrate;
done
から実行されていない場合
#!/bin/bash
eval $(ffprobe -v quiet -show_format -of flat=s=_ -show_entries stream=height,width,nb_frames,duration,codec_name input.mp4);
width=${streams_stream_0_width};
height=${streams_stream_0_height};
bitrate=$((${format_bit_rate}/1000));
echo $width,$height,$bitrate;
私はまた、ループ内bitrate
の数学とエラーが出るが、私はそれをコメントする場合でも、私はまだ結果が得られません。一度に1つしか動作しないので、問題はbashスクリプティングであり、ffmpeg/ffprobeとは関係がないと仮定しています。
言われていること、私はこれを行うことができます:
echo $i,$width,$height,$bitrate;
をバック
./file1.mkv,,,
./file2.mkv,,,
./file3.mkv,,,
./file4.mkv,,,
を取得するので、それが戻っていくつかの情報を取得しているが、それはevalのステートメントからの情報を失います。
なぜ入力からビットレートを知る必要がありますか? [shellcheck.net](http://www.shellcheck.net/)でスクリプトをチェックしてください。それでも問題が解決した場合は、クリーンアップスクリプトを表示してください。 – LordNeckbeard
私は何千ものビデオをエンコードしており、入ってくるビデオの解像度とビットレートは他のものよりはるかに低いですが、libx265よりも適切なビットレートを選ぶためのアルゴリズムがはるかに少ないnvenc_hvecを使用したいので、各ファイルについて私はいくつかの 'if、else'ロジックを使用して出力に適切なレートを選択することを考えていました。私は誤って400kbpsのファイルを1,200kbpsにエンコードしません。 – Alan
私はshellcheck.netを使用しましたが、私は推薦状に感謝しますが、このサイトは私には新しいものです。 – Alan