我对 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 上失败。
任何帮助都会很棒,我已经坚持了一段时间。谢谢!如果需要澄清,我可以提供更多代码。