0

我对 Ruby 和编程相当陌生,不到一年的经验。这是 ruby​​ 1.9.3 和来自 FFmpeg 的 Ubuntu 的最新 ffmpeg。我使用的文件是基本的 .avi、一些 v210 .mov、其他 quicktime/finalcutpro 类型的文件。

我正在尝试编写一个自动探测工具,当我开始测试和处理大量媒体文件时,它有助于减轻我的手动工作量。基本上,脚本会遍历一个目录并探测每个文件,提取我需要的信息,然后将其写入 csv。

目前,每次我运行它时,命令行上的实际捕获都失败了。

def prober(file)
  @the_file = file
  stdout,stderr,status = Open3.capture3("ffprobe -v quiet -print_format json -      show_format -show_streams #{@the_file}")
  STDERR.puts stderr
  if status.success?
    out = stdout
  else
    STDERR.puts "There was a problem, please try again."
  end
  @raw_output = JSON.parse(out)
end

我不知道这是否与我运行命令的方式有关(我并不完全了解 I/O 流),或者与 ffprobe 相关。当它通过探测时,它会将@raw_output 作为 nil 返回,这会导致 JSON 解析失败,或者我用于拆分和解析元数据的其他方法在 nil 上失败。

任何帮助都会很棒,我已经坚持了一段时间。谢谢!如果需要澄清,我可以提供更多代码。

4

1 回答 1

0

假期过后,我回来时发现了问题。文件路径字符串在输入到 ffprobe 的标准输入时需要在其周围加上引号,但是当我聚合文件时,它会去掉引号。修复?在字符串中的文件路径周围添加引号。

我希望这对某人有所帮助,显然我是整个互联网上唯一遇到此问题的人。

于 2013-01-03T19:07:10.790 回答