Rubyを使用してURLで参照されるビデオのメタデータを取得します。この時点で、私は多くの関連記事を見つけましたが、私の問題を解決する方法を見つけることができませんでした。ffmpeg、ffprobe、またはrvideoを使用してRubyスクリプトでビデオメタデータを取得する
私はRVideoを使用しようとしましたが、私はやるとき:
file = RVideo::Inspector.new(:file => 'http://www.agreatsite.com/avideo.mp4')
それは、だから私はRVideoを使用して情報を取得することはできません(私は持っていたときに、それがうまく機能
'ArgumentError: File not found (http://www.agreatsite.com/avideo.mp4)...
をスローします私のローカルコンピュータでホストされているファイル)。
私はffprobeを使用しようとしましたが、出力を読み取る方法がわかりません。 これまでのところ、コンソールで実行したときに必要な情報を「表示」する方法がありますが、実際には「true」を返し、必要な出力をどのようにキャプチャするのかわかりません...
def media_info source = self command = <<-end_command ffprobe -v quiet -print_format json -show_format -show_streams #{source} end_command command.gsub!(/\s+/, " ") system(command) end
はffprobeまたはRVideoのいずれかで、この作品を作るために、いくつかの助けを大好きです!
更新: 私は必要なものを手に入れる方法を見つけました。私はそれがそのように動作させることができると思い
def get_media_duration
source = self.media[0][:url] command = <<-end_command ffprobe -v quiet -show_streams #{source} end_command command.gsub!(/\s+/, " ") duration = "" IO.popen(command) { |io| while (line = io.gets) do puts "++ "+line.inspect duration = line.split("duration=")[1].gsub("\n", "") if line.split("duration=").length > 1 end } duration
end
が、私にとって非常にエレガントないないようです:わからない、これはそれを行うための最善の方法です。より良い提案が大いに評価されるだろう!
私は助けることができますが、私はffmpegのドキュメントでこれを見つけました:http://ffmpeg.org/ffmpeg.html#concat。もちろん、あなたが使っているrubyのlibは本質的にURLを受け入れない 'ffmpeg -i'を実行します。おそらくあなたはそれをハックすることができます – Brian
あなたは遠隔地からファイルを開こうとしていますが、 'RVideo :: Inspector'がそれを想定しているように扱うかどうかはわかりません。 –