我正在运行ffmpeg命令试图获取视频文件的持续时间,命令如下......
system('ffmpeg -i C:\Users\example\Desktop\video9.mp4 -f ffmetadata')
当我运行该行时,它会向rails控制台输出大量信息,包括持续时间。但是我如何捕获这些信息以便我可以拆分它并获取我需要的数据? (我在轨道控制器中这样做)
当我运行这样的东西时......
metadata = system('ffmpeg -i C:\Users\example\Desktop\video9.mp4 -f ffmetadata')
puts metadata
它返回的全部都是假的。
答案 0 :(得分:1)
使用:
output = `ffmpeg -i C:\\Users\\example\\Desktop\\video9.mp4 -f ffmetadata`
问题是system
没有捕获正在运行的命令的输出。相反,我们使用反引号来使用%x[...]
或它的等价物,后者捕获子shell的STDOUT。
如果您需要更多控制权,请查看Open3.capture3
。
答案 1 :(得分:0)
发现它......
inspect_command = "ffmpeg -i " + file_location + " 2>&1 " metadata = `#{inspect_command}`
答案 2 :(得分:0)
如果您只需要视频时长,请使用ffprobe而不是ffmpeg。它直接返回视频元数据。