Я хочу получить метаданные видео, на которые ссылается 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
конец
Полагаю, я мог бы заставить это работать таким образом, но мне это не кажется очень элегантным. Будем благодарны за лучшие предложения!