2020年12月1日火曜日

ffmpeg の進捗率を pipe viewerで表示

[概要]
シェルスクリプトのクリックで起動。KDEのkdialogを使って、ディレクトリ/home/usr/Videoから mp2t/tsのファイルを表示。選んだファイル1個を ffmpegで 同名.mp4に変換する。入力ファイルのサイズが大きいとkdialogが固まったようにみえるので、KDE konsoleを表示して ffmpegの標準エラー出力と pv(pipe viwer)の進捗状況を表示。キャンセルで終了。

[材料]
KDE kdialog, konsole (Gnomeならgnome-terminal, zenity), pv, ffmpeg 

[ts2mp4.shの中身] 基本的なとこだけ
#! /bin/bash
while true
do
 infile=$(kdialog --title ts2mp4 --getopenfilename '/home/usr/Video/' 'video/mp2t   video/mpeg')
  if [ "$?" = "0" ]; then
    konsole -e $SHELL -c "pv '$infile' | ffmpeg -i pipe:0 -codec copy \"${infile%.*}.mp4\" ; echo \"...Finished\"; sleep 3"
#    trash-put "$infile"
  elif [ "$?" = "1" ]; then
    kdialog --title ts2mp4 --passivepopup "CANCEL" 3
    exit $?
  else
    kdialog --title ts2mp4 --error "ERROR";
    exit $?
  fi;
done

[説明]
・ffmpeg用のGUI メディアコンバーター: winff-qtをインストールすれば済む話。
・ディスクトップ環境KDEで、シェルスクリプトからGUIモドキが使える kdialogを使用。gnomeではZenityを使う。
・KDEのkonsoleは、xtermだと、xterm -e "pv $infile | ffmpeg -i pipe:0  -codec copy \"${infile%.*}.mp4\" ; echo \"...Finished\"; sleep 3" となる。
・pv はインストール要。
・ffmpegのオプション pipe:0 標準入力, 1:標準出力, 2:エラー出力, ":-"または ": " 自動判定。
・pv はあくまで目安程度。瞬間表示で見難いけどバーが伸びていって%表示や残り時間を表示。

・KDE:trash-cli をインストールすると、元ファイル.tsをゴミ箱に送れる $ trash-put "$infile"
・kdialog --progressbar ...は、awkの変数をシェルスクリプトにうまく渡せないのでヤメた。

環境は "2020年11月27日金曜日"の下の方
以上、素人の使い捨て道具

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。