2009-04-16 1 views
5

にサブプロセスとしてのffmpegを実行することはできませんstdoutに接続され、ffmepgIO.readlinesが空です。 ffmpegユーティリティには特別な処理が必要ですか?または、ffmpeg出力を得る別の方法はありますか? このコードをWinXPとFedora Linuxでテストしました。結果は同じです。は、私はサブプロセスとしてffmpegのユーティリティを実行して、ビデオの解像度を決定し、その出力を獲得し、それを解析するには、次のコードをしようとしていますルビー

答えて

7

mouvicielさんのコメントにフォローアップをするには、あなたがpopen3ようなものを使用する必要があります:

require 'open3' 

Open3.popen3("ffmpeg", "-i", path_to_file) { |stdin, stdout, stderr| 
    # do stuff 
} 

(ところで、パラメータとして配列を使用することはpopenすることに注意してくださいファイル名にスペースやその他の引用符が必要なキャラクタが含まれている場合は特に安全です)

3

FFmpeg stdoutはメディア出力用です。 (解像度などの)情報をログに記録するには、ffmpeg stderrを解析する必要があります。

0

あなたがしようとしていることに応じて、rvideo gemを使用する方が簡単かもしれません。例えば

video = RVideo::Inspector.new(:file => path_to_file) 
video.resolution # => "480x272" 
video.width # => 480 
video.height # => 272 
+0

私はすでにRVideo gem becausに失望していますそれはffmpegで動作しません。私はこの宝石のソースコードを検査し、私が記述したようにffmpegを実行しようとしたため、失敗することを発見しました。 – Eskat0n

関連する問題