使用 ffmpeg、ffprobe 或 rvideo 在 ruby​​ 脚本中获取视频元数据

2024-02-25

我想使用 Ruby 获取 URL 引用的视频的元数据。此时,我找到了很多相关帖子,但找不到如何解决我的问题。

我尝试使用 RVideo,但是当我这样做时:

文件 = RVideo::Inspector.new(:file => 'http://www.agreatsite.com/avideo.mp4')

它抛出

'ArgumentError:找不到文件(http://www.agreatsite.com/avideo.mp4)...

因此,我无法使用 RVideo 获取信息(但当我将文件托管在本地计算机上时,它效果很好)。

然后我尝试使用 ffprobe,但我不知道如何读取输出。 到目前为止,我有以下方法,当我在控制台中运行它时,它“显示”我想要的信息,但它实际上返回“true”,并且我不知道如何捕获我需要的输出......

  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 或 Video 一起工作!

更新: 我找到了一种方法来获得我需要的东西。不确定这是最好的方法:

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   

end

我想我可以让它以这种方式工作,但对我来说似乎不太优雅。更好的建议将不胜感激!


如果您仍在寻找解决方案,请检查streamio-ffmpeg。 ffprobe 现在也支持 json 格式:ffprobe -print_format json -show_streams #{input_file}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 ffmpeg、ffprobe 或 rvideo 在 ruby​​ 脚本中获取视频元数据 的相关文章

  • 避免在 Ruby 中自动从 Fixnum 转换为 Bignum

    我正在将算法从 C 移植到 Ruby 该算法有一个方法返回一个int有时会溢出 private static int NextRandom int n return 1234567890 n 12345 该算法利用溢出来避免该函数返回的值超
  • 测试 Ruby 字符串或符号的字符串相等(而不是对象相等)的最简洁方法?

    我总是这样做来测试 Ruby 中的字符串相等性 if mystring eql yourstring puts same else puts different end 这是在不测试对象相等性的情况下执行此操作的正确方法吗 我正在寻找最简洁
  • close 似乎不适用于 WebSocket

    我有这个简单的 JavaScript 代码 window ws new WebSocket ws 127 0 0 1 8000 ws onopen function ws send hello Ruby 中的服务器如下所示 require
  • 在 debian Squeeze 上安装 RoR

    有什么方法可以在我的 debian squeeze 上安装 Ruby 1 9 2 或 1 8 7 Rails 3 吗 您可能不想在生产计算机上使用 RVM 它的 PATH 魔力会在不明显的地方 例如 cron 作业 被破坏 然后你就会陷入困
  • Ruby:如何计算相对于另一条路径的路径?

    假设我知道我开始的绝对路径和我试图到达的绝对路径 first first path second second path 现在我想弄清楚如何构建一条相对于第一个路径 例如 answer should be first path second
  • ffmpeg 找不到 vcodec h264

    我是 ffmpeg 的新手 正在 Windows 上使用它 我尝试使用 H 264 vcodec h264 转换 avi 文件 收到此错误 未知编码器 h264 使用 acodec 的 mp3 也会出现 未知编码器 错误 有人可以帮我解决这
  • 如何使用 watir 滚动网页

    我正在尝试滚动网页以查找并单击页面滚动时延迟加载的内容 我正在使用以下命令 require watir webdriver browser Watir new firefox browser send keys space 我在 Firef
  • 回形针如何更改基本名称(文件名)?

    我正在尝试更改照片的基本名称 文件名 在我的模型中我有 attr accessor image url basename has attached file image styles gt original gt 300x250 gt pn
  • 在新的 RHEL6 服务器上安装 ruby​​-filemagic gem 时遇到困难

    它似乎正在寻找 libmagic so 1 文件 我有那个文件 它位于 usr lib64 中 我没有以 root 用户身份运行此安装 我也在使用 rvm 和 Bundler 这是我的 bundle 命令的结果 当它到达 Gemfile 中
  • 如何让 Sinatra 通过 HTTPS/SSL 工作?

    正如标题所示 谷歌没有提供任何与此相关的有用信息 如何为 Sinatra 应用程序设置和配置 HTTPS SSL 如何创建 HTTPS 路由 我以前从未在我的应用程序中使用过 HTTPS 也没有调整 Rack 其他内容的经验 所以我很欣赏详
  • Ruby on Rails 最酷的功能是什么,为什么选择它? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在我问这个问题之前 我浏览了 SO 上 Ruby on Rails 的搜索结果 找不到太多 但以下 在此页面上找到 https stackove
  • gem install rmagick 在 OS X El Capitan 上失败

    几天前我升级到 El Capitan 并运行了 brew update brew upgrade 它更新了 imagemagick 导致 ruby 的 rmagick gem 停止工作 我想没问题 我就跑 gem install rmagi
  • 无需别名的 Ruby YAML 编写

    我正在从 ruby 将数据写入 yaml 文件 并且经常在该文件上添加别名 像 id001 somekey somevalue id001 就我而言 我使用 yaml 文件来aid可读性并将名称添加到文件中的值 因为现有数据只是 没有键的分
  • 在 ruby​​ 中读/写受密码保护和加密的文件

    我想加密一个 ruby 程序将从中加载数据的文件 此外 我需要程序在启动时提示输入密码 该密码将用于解密文件 换句话说 该文件需要加密地驻留在计算机上 只有拥有密码的用户才能运行该应用程序 我已经开始研究 openpgp 但据我了解 这仍然
  • 方法调用中是否有记忆约定?

    我想避免在方法调用中重新评估值 直到现在 我一直在这样做 def some method some method begin lot s of code end end 但它最终变得非常丑陋 在一些代码中 我看到类似以下内容 def som
  • RSpec 请求规范发布一个空数组

    我目前正在 Rails 中开发 API 端点 如果我需要的数据无效 我想确保端点响应具有正确的错误状态 我需要一个 id 数组 无效值之一是空数组 Valid vendor district ids 2 4 5 6 Invalid vend
  • ffmpeg视频已压缩但无法在浏览器中播放

    我已经集成了ffmpeg4android lib 视频压缩工作正常 但视频无法在除 safari 浏览器之外的浏览器中播放 上传到服务器后 我使用了以下命令 ffmpeg y i
  • ||= 是什么意思? [复制]

    这个问题在这里已经有答案了 我的应用程序控制器中有一个受保护的方法 def current user current user User find by id session user id end 我想知道什么 方法 我一直在努力寻找和找
  • Ruby 的字符串并置功能的官方文档在哪里?

    我最近意识到 如果你并置一系列 Ruby 字符串文字 例如 a b c 它相当于这些字符串文字的串联 但是 我在任何地方都找不到这种语言功能的记录 我使用术语 并置 和 串联 进行搜索 但只在几个 StackOverflow 响应中找到了对
  • 回滚后是否应该删除迁移

    我对 ruby 和 Rails 相当陌生 刚刚开始了解迁移 我的问题是回滚后删除迁移的最佳实践或正确时间是什么 到目前为止 我读到的内容是回滚后是否删除迁移的观点问题 但是在团队中工作时删除迁移是否有任何重大影响 以及保留迁移文件相对于删除

随机推荐

  • Flink:处理数据早于应用程序水印的键控流

    我正在使用带有运动源和事件时间键控窗口的 F link 该应用程序将监听实时数据流 窗口 事件时间窗口 并处理每个键控流 我有另一个用例 我还需要能够支持某些关键流的旧数据的回填 这些将是事件时间 鉴于我正在使用水印 这会成为一个问题 因为
  • Azure Functions - Blob 流动态输入绑定

    我正在 azure 上运行一个 C 函数 它需要从容器中获取文件 唯一的问题是输入文件的路径每次都会 可能 不同 并且输入文件的数量将从 1 到大约 4 或 5 不等 因此 我不能只使用默认的输入 blob 绑定据我所知 我的选择是给予容器
  • 通过Ajax发送FormData + js变量

    我有这个 Ajax 来发送多个图像 btn on click function var formData new FormData form1 0 var path php upload adm prodpictures php ajax
  • 如何转到 Eclipse 中的“下一个出现”

    在 Eclipse 中 您可以打开 标记出现次数 然后它将突出显示当前范围内给定变量的每次出现 那太好了 但我真的很想从一次这样的事件转移到下一次 到目前为止 我已经找到了两个关于如何执行此操作的建议 但都没有奏效 首先有这样的帖子 Ecl
  • 使用 configparser 添加注释

    我可以使用 python 中的 ConfigParser 模块使用 add section 和 set 方法创建 ini 文件 请参阅示例http docs python org library configparser html http
  • 调试 $rootScope:infdig

    这是一个常见问题 已达到 5 次 digest 迭代 流产 观察者在最近 5 次迭代中被解雇 文档 https docs angularjs org error https docs angularjs org error rootScop
  • 自动更新 HTML 画布宽度和高度属性

    我想将 HTML5 画布与 Flexbox 结合使用 当用户调整窗口大小时 我需要自动设置 canvas width 和 canvas height 我尝试使用 jQuery 来实现 cnvs attr width cnvs width c
  • “Google_Exception”,消息为“经过身份验证后无法添加服务”

    我正在使用 Oauth 2 0 开发带有 Google Analytics 的 WP 插件 我所有的身份验证和数据提取都工作正常 除了这个问题 第一次获得新的 Google 授权代码 例如 4 xbSbg 并进行身份验证 然后尝试调用new
  • 我可以在 AngularJS 中要求通用父指令吗

    子指令是否可以在不确切知道父指令是什么的情况下需要父指令 而只是知道它 实现了一个接口 例如
  • 如何多次重用相同的代码 - html/css

    我想为每个按钮重复使用模式两次 按钮代码 function popUp model const pop up model document getElementById model pop up model classList toggle
  • TypeScript 合并通用数组

    我想要一个对象的通用对象数组 但是 它生成联合类型 如何获得一种合并对象类型 喜欢 key string boo string foo string type PluginType
  • 在 C# 中使用 xsi:nil="true" 反序列化 XML 元素

    我正在尝试反序列化 XML 文件XmlSerializer in C 随后的目标类是使用 xsd 实用程序自动生成的 System CodeDom Compiler GeneratedCodeAttribute xsd 4 0 30319
  • 从 OLE 二进制字符串解析 MathType MTEF 数据

    需要将 MS WORD 2003 或更低版本中的 MathType 方程转换为 MathML 以便在网络上很好地呈现 MathType 的内置函数 Publish to MathPage 可以很好地完成这项工作 但我想将方程转换过程集成到我
  • 带有 React 和 Node 的 google 应用引擎:生产设置

    我使用 React js 和 Node js Express 创建一个网站 我使用 Google App Engine 和 Google Datastore 作为数据库 在我的本地机器上一切正常 React 前端能够访问 Node js 提
  • 如何在 Jest 中的 beforeAll / beforeEach 和测试之间共享数据?

    我们使用 jest 来测试我们的 API 并且有相当复杂的场景 我们使用beforeAll函数为每个测试设置通用辅助变量 有时设置租户分离 在其他情况下我们使用beforeEach为测试设置租户分离的函数 并为测试租户提供一些默认配置 例如
  • 如何获得DataFrame的n个最长条目?

    我正在尝试获取 dask DataFrame 的 n 个最长条目 我尝试打电话nlargest https docs dask org en latest dataframe api html dask dataframe DataFram
  • Youtube Data API v3 - 获取自动生成频道的视频源

    我想使用自动生成的频道 ID 如下例所示 GET YOUR API KEY 访问他们的视频内容 但似乎我无法利用part snippet contentDetails or filter uploads 我在获取普通用户的播放列表项之前使用
  • Spring 4推荐替换JpaTemplate

    我有一个遗留项目 它使用 Spring 3 0 x 并利用JpaTemplateSpring提供的实现 然而 升级到 Spring 4 0 x 后我了解到JpaTemplate从 Spring 3 2 开始已弃用 我看到了一些建议 可以简单
  • (Android) 具有多窗格布局的导航抽屉

    我很难为一项活动提供一个良好且可接受的布局a tablet 但我不确定我的设计是否与Google的设计指南兼容 简而言之 我的应用程序接收网络嗅探器日志文件并显示数据不同功能的统计信息 例如 随时间变化的流量 随时间变化的 PM 以时间线
  • 使用 ffmpeg、ffprobe 或 rvideo 在 ruby​​ 脚本中获取视频元数据

    我想使用 Ruby 获取 URL 引用的视频的元数据 此时 我找到了很多相关帖子 但找不到如何解决我的问题 我尝试使用 RVideo 但是当我这样做时 文件 RVideo Inspector new file gt http www agr