1

特定の用途に合わせてプログラムをカスタマイズするために、Lame に関する簡単なスクリプトを作成しようとしています。私がやりたいのは、Lame の出力からパーセンテージの完全性だけを解析することです。

ラインは次のようになります。

./lame --nohist ~/Desktop/Driver.wav ~/Desktop/Driver.mp3 2>&1| egrep -o "\([0-9\%]+\)"

しかし、それは何も返しません。Lame からの出力は次のようになります。

    LAME 3.99 (アルファ 1、2009 年 6 月 4 日 19:42:31) 32 ビット (http://www.mp3dev.org/)
    警告: アルファ版はテスト目的でのみ使用してください
    多相ローパスフィルター使用、遷移帯域:16538Hz~17071Hz
    エンコーディング /Users/jkubicek/Desktop/Driver.wav
        /Users/jkubicek/Desktop/Driver.mp3 へ
    44.1 kHz j-stereo MPEG-1 Layer III (11x) 128 kbps qval=3 としてエンコード
    フレーム | フレーム CPU 時間/見積もり | リアルタイム/見積もり | 再生/CPU | ETA
    1500/8765 (17%)| 0:02/ 0:15| 0:03/ 0:17| 14.654x| 0:14

ファイルが変換されると、コードの最後の行が動的に更新されます。この正確なテキストを grep にコピー/貼り付け/エコー/パイプすると、17% は問題なく検出されますが、実際に実行すると zilch が検出されます。

編集: lame からの出力をテキスト ファイルにスローすると、結果は次のようになります。

lameout.txt

出力を一時ファイルにプッシュして、そこから完了したパーセンテージを読み取ることができるように見えますが、これを行うためのよりエレガントな方法があるはずのように、それは厄介です。

4

3 に答える 3

1

あなたにはこれができないのではないかと思います。パーセンテージ出力はおそらくcursesを介して端末に送信されるため (インプレースの動的更新を許可するため)、stdout を介した出力は制限されます。

出力をファイルにリダイレクトして、そこに何が書き込まれるかを確認する価値があるかもしれません。すなわち

lame > /tmp/lame.log
于 2009-06-21T13:45:31.680 に答える
1

lame はおそらく、端末に接続していないときと同じようにこの情報を出力していません。最後に "> output.txt" を付けて不自由なコマンドを実行してみて、別のプロセスにアタッチされたときに出力される内容を確認してください。

もう 1 つの非常に可能性の高い可能性は、「17%」が実際に印刷されることはないということです。おそらく印刷されているのは次のとおりです。

%、左に移動、1、左に移動、2、左に移動 3、... 左に移動、左に移動、1、7、左に移動 8 など

于 2009-06-21T13:46:54.377 に答える