Получение метаданных видео в скрипте ruby ​​с использованием ffmpeg, ffprobe или rvideo - PullRequest
3 голосов
/ 19 января 2012

Я хочу получить метаданные видео, на которые ссылается URL, используя Ruby. В этот момент я нашел много похожих сообщений, но не смог найти решение своей проблемы.

Я пытался использовать RVideo, но когда я делаю:

file = RVideo :: Inspector.new (: file => 'http://www.agreatsite.com/avideo.mp4')

бросает

'ArgumentError: файл не найден (http://www.agreatsite.com/avideo.mp4)...

Так что я не могу получить информацию с помощью RVideo (но она хорошо работает, когда файл размещен на моем локальном компьютере).

Затем я попытался использовать ffprobe, но я не знаю, как прочитать вывод. До сих пор у меня есть следующий метод, который «показывает» информацию, которую я хочу, когда я запускаю ее в консоли, но на самом деле возвращает «true», и я не могу узнать, как захватить нужный мне вывод ... 1017 *

  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!

UPDATE: Я нашел способ получить то, что мне было нужно. Не уверен, что это лучший способ сделать это:

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   

конец

Полагаю, я мог бы заставить это работать таким образом, но мне это не кажется очень элегантным. Будем благодарны за лучшие предложения!

1 Ответ

1 голос
/ 24 января 2013

Проверьте streamio-ffmpeg, если вы все еще ищете решение.Также ffprobe теперь поддерживает формат json: ffprobe -print_format json -show_streams #{input_file}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...