2011-12-21 13 views
0

私はFFMPEGとNode.jsを使って簡単なオンライン変換ツールを書いています。私は、FFMPEGから受け取った変換出力の各行を解析し、ブラウザ内の関連する結果のクライアント側のみを表示する方法を理解しようとしています。私の場合、FFMPEGがコマンドラインで吐き出すエンコーディング時間カウンタが必要です。これまでnode.jsのSTDERR出力をchild_process行ごとに解析する

My機能である:

function metric(ffmpeg, res) { 

    ffmpeg.stdout.on('data', function(data) { 
    res.writeHead(200, {'content-type': 'text/html'}); 
    res.write('received upload:\n\n'); 
    console.log(data); 
    }); 

    ffmpeg.stderr.on('data', function (data) { 
    var temp += data.toString(); 
      var lines = temp.split('\n'); 

      //for debugging purposes 
      for(var i = 0;i<lines.length;i++) { 
       console.log('this is line: ' + i + '----' + lines[i]); 
      } 
    res.write(lines); 
    }); 

    ffmpeg.on('exit', function (code) { 
    console.log('child process exited with code ' + code); 
    res.end(); 
    });  
} 

は、これは復帰してしまうことは、以前のアレイからのデータ、ならびに次のデータチャンクを含み、その各々は、複数のアレイです。たとえば、この関数は配列1を返します。{0 => A、1 => B}、配列2:{0 => A、1 => B、2 => C}、配列3:{0 => A、 1 => B、2 => C、3 => D}などとなります。

私はノードにはかなり新しいので、おそらく単純なものがありません。どんな指導も大歓迎です!

+0

既に存在しているffmpegのモジュールのいずれかを使用しないのはなぜ? http://toolbox.no.de/search?q=ffmpeg – fent

+0

私は既存のモジュールを使用していません。なぜなら、私がこの記事を書き始めたとき、私は最初にGoogleに何があったのか気にしなかったからです。今私はおそらく90%完了しており、この時点でそれをスクラップするのは愚かなようです。さらに、Nodeを使い始めるには良い方法でした! – primer

答えて

0

これは、ジョブを実行する必要があります。バッファの詳細については

var buff = new Buffer(data); 
console.log(buff.toString('utf8')); 

を、ここではドキュメントへのリンクです:http://nodejs.org/docs/v0.4.2/api/buffers.html

+1

同様に、バッファの代わりに常に文字列を出力する場合は、 'ffmpeg.stderr.setEncoding( 'utf8')を呼び出すこともできます。 –

関連する問題