2

我正在运行 ffmpeg 命令来尝试获取视频文件的时长,命令如下...

system('ffmpeg -i C:\Users\example\Desktop\video9.mp4 -f ffmetadata')

当我运行该行时,它会向 Rails 控制台输出大量信息,包括持续时间。但是我将如何捕获这些信息以便我可以拆分它并获取我需要的数据?(我在 Rails 控制器中执行此操作)

当我运行这样的事情时......

metadata = system('ffmpeg -i C:\Users\example\Desktop\video9.mp4 -f ffmetadata')
puts metadata

它返回的都是假的。

4

3 回答 3

2

采用:

output = `ffmpeg -i C:\\Users\\example\\Desktop\\video9.mp4 -f ffmetadata`

问题是它system没有捕获正在运行的命令的输出。相反,我们使用%x[...]反引号或其等效项,它捕获子外壳的 STDOUT。

如果您需要更多控制,请查看Open3.capture3.

于 2013-01-08T19:03:23.027 回答
0

找到了...

  inspect_command = "ffmpeg -i " + file_location + " 2>&1 "
  metadata = `#{inspect_command}`
于 2013-01-08T19:32:43.450 回答
0

如果您只需要获得视频持续时间,请使用ffprobe而不是 ffmpeg。它直接返回视频元数据。

于 2019-08-18T18:11:09.923 回答