ffmpeg/PHP - 将任何视频格式转换为 ogg 时出现问题 - 视频断断续续/无音频 - win64

2023-12-15

如果这是一个重新发布/类似的帖子,首先让我道歉,因为我尽了最大努力在此处和谷歌上已创建的帖子中搜索我的问题的具体解决方案,但无法。

我在 win64 系统的本地主机上使用 ffmpeg 创建/测试视频转换脚本,然后将它们上传到服务器。

我能够成功地在 mp4/flv/wmv/mov 之间进行转换,没有任何问题,但是,每当我尝试从任何其他格式转换为 .ogg 时,都会遇到问题。

首先我尝试了这个:

exec($ffmpegPath." -i ".$srcFile." ".$destFile);

但最终得到一个没有视频/声音的损坏文件。然后我做了一些阅读,发现一些帖子说在转换为 .ogg 时必须显式启用 libvorbis/libtheora,所以我尝试了以下方法:

$aCodec = ' -acodec libvorbis';
$vCodec = ' -vcodec libtheora';
exec($ffmpegPath." -i ".$srcFile.$aCodec.$vCodec." ".$destFile);

这次我得到了一个有效的 .ogg 文件,有声音,但是视频输出非常不稳定。为了尝试找到问题,我开始对 exec 行进行编辑,最终得到以下结果:

$ffmpegObj = new ffmpeg_movie($srcFile);
$srcVB = intval($ffmpegObj->getVideoBitRate());
$vCodec = ' -vcodec libtheora';
exec($ffmpegPath." -i ".$srcFile.$vCodec." -vb ".$srcVB." ".$destFile);

它以良好的质量输出 .ogg 视频,但没有声音。

在需要安装更多软件(ffmpeg theora)等之前,您对这个问题还有什么想法吗?

另外,如果有帮助的话,我回显了 ffmpeg 的输出,并且当使用上面的方法 #2 时,会显示许多错误。

100 buffers queued in output stream 0:1, something may be wrong.
[ogg @ 00000000024bf780] st:0 PTS: 6743 DTS: 6743 < 7745 invalid, clipping
[ogg @ 00000000024bf780] st:0 PTS: 6871 DTS: 6871 < 7746 invalid, clipping
[ogg @ 00000000024bf780] st:0 PTS: 6999 DTS: 6999 < 7747 invalid, clipping
[ogg @ 00000000024bf780] st:0 PTS: 7127 DTS: 7127 < 7748 invalid, clipping
[ogg @ 00000000024bf780] st:0 PTS: 7255 DTS: 7255 < 7749 invalid, clipping
[ogg @ 00000000024bf780] st:0 PTS: 7383 DTS: 7383 < 7750 invalid, clipping

看来 libvorbis 和 libtheora 配合得不太好?

最后,我已经多次更改 ffmpeg.exe 版本,但仍然收到相同的问题。

提前致谢。

编辑:作为一种可能的解决方法,有没有一种方法可以简单地分别对视频/音频进行编码,然后将它们重新组合在一起?这会导致可能的音频/视频同步问题吗?


像往常一样,在在这里发布我的问题后(​​经过无数个小时的故障排除),我相信我可能已经纠正了这个问题。我不仅需要指定用于转换文件的音频/视频编解码器,还需要指定输出的 .ogg 视频的音频/视频比特率:

//CREATE CLASS INSTANCE
$ffmpegObj = new ffmpeg_movie($srcFile);
//GET AUDIO BITRATE FROM SOURCE FILE
$srcAB = intval($ffmpegObj->getAudioBitRate());
//GET VIDEO BITRATE FROM SOURCE FILE
$srcVB = intval($ffmpegObj->getVideoBitRate());

//SET THE AUDIO CODEC TO LIBVORBIS
$aCodec = ' -acodec libvorbis';
//SET THE VIDEO CODEC TO LIBTHEORA
$vCodec = ' -vcodec libtheora';

exec($ffmpegPath." -i ".$srcFile.$vCodec." -vb ".$srcVB." -ab ".$srcAB." ".$destFile);

这输出的视频/音频的质量非常接近原始视频格式。

显然,任何尝试使用上述代码的人都需要添加对 $ffmpegPath/$srcFile/$destFile 的引用,并使 ffmpeg 类可用于其脚本。

另外,最初在我的电脑上本地火狐浏览器中查看 .ogg 视频时,视频在第一次开始播放时会冻结,然后在几秒钟后跳转到正确的位置(相对于音频),但是,如果从头开始重播会玩没有问题。我假设我的显卡没有达到标准;这可以解释转换后第一次查看文件时的问题。

无论如何,上述代码应该适用于任何其他在使用 ffmpeg 和 php 正确转换为 .ogg 格式时遇到问题的人。

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

ffmpeg/PHP - 将任何视频格式转换为 ogg 时出现问题 - 视频断断续续/无音频 - win64 的相关文章

  • PDO::commit() 成功或失败

    The PHP PDO 提交 http www php net manual en pdo commit php文档指出该方法成功时返回 TRUE 失败时返回 FALSE 这是指beginTransaction 和commit 之间的语句执
  • Smarty 3 或更早版本中有类似 Dwoo-s {with} 或 {loop} 的东西吗?

    Dwoo 模板引擎中的 with 和 loop 插件更改变量名称解析的默认上下文 如果在 Dwoo 中您提供模板 arr foo with arr foo arr foo with 有数据 array arr gt array foo gt
  • 从文本块中提取相关标签/关键字

    我想要一个特定的实现 以便用户提供如下文本块 要求 使用 Linux Apache 2 的 LAMP 环境的工作知识 MySQL 5 和 PHP 5 Web 2 0 标准知识 熟悉 JSON 使用框架 Zend OOP 的实践经验 跨浏览器
  • 如何防止 CakePHP 中重复表单提交?

    我发现 CakePHP 中的安全组件通过将令牌作为隐藏值添加到表单中来帮助防止 CSRF 我想知道是否有办法防止使用此组件或其他组件 帮助器重复表单提交 在之前的项目中 我使用了保存在会话中的唯一哈希值 该哈希值会在提交时读取并删除 重复提
  • 在 Kohana 中,可以触发 404 错误吗?

    我有一个名为articles 它创建从数据库获取相关数据的文章模型 我想 如果我调用的方法返回false 触发 404 错误 这是我到目前为止所拥有的 articleName this gt uri gt segment articles
  • 如何将 php Web 应用程序转换为桌面应用程序并保留数据库 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我们有一个用 PHP 开发的 Web 应用程序 但大多数客户并没有一直连接到互联网 那么 有没有办法将应用程序转换为桌面应用程序 以便
  • PMA 4.5.2.0 file_exists():open_basedir 限制生效

    从 PPA 在我的 Ubuntu 服务器上安装 phpMyAdmin 后 https launchpad net nijel archive ubuntu phpmyadmin https launchpad net nijel archi
  • 通过jquery传递搜索参数

    我有一个表单 如果用户输入搜索查询 其参数应通过 jquery 传递 并在获取结果后将结果加载到 div 容器中 由于我不太熟悉 jquery 我该怎么做 html currently the data is being displayed
  • PHP mail() 函数不发送邮件

    我有一个小问题 我正在使用一个工作脚本 在我的测试帐户 共享服务器上工作 使用 mail 函数通过 PHP 发送邮件 我刚刚得到了一个专用服务器 但我还无法让该功能发挥作用 在过去的 10 个小时左右的时间里 我阅读了有关 BIND 用于
  • PHP上传文件产生错误代码4。为什么?

    HTML
  • Javascript 函数与 php 一样吗?

    我在网站上使用 WebIM 提供聊天支持 我希望能够在客户端启动聊天会话时设置一个计时器 如果操作员 技术人员在 x 秒内没有响应 我希望页面重定向到客户端可以留言的另一个页面 有点像 请稍等 我们尝试联系您 这样 如果所有技术人员都太忙或
  • Facebook 中用户的时区是如何编码的

    我需要检查用户的时区 但我找不到它的真正定义 参考API http developers facebook com docs reference api user says 用户的时区与 UTC 的偏移量 现在在维基百科上这些是可能的时区
  • 在 PHP 中将十进制/双精度/浮点值与 PDO 绑定的最佳方法是什么?

    看来类常量只涵盖PDO PARAM BOOL PDO PARAM INT and PDO PARAM STR用于绑定 您只是将十进制 浮点 双精度值绑定为字符串还是有更好的方法来处理它们 MySQLi 允许使用 d 类型表示 double
  • 在 Apache 服务器上将特定的 .htm 页面处理为 .php [重复]

    这个问题在这里已经有答案了 我正在为 Apache 服务器编程 并且只需要将一个特定的 html 页面 例如 first htm 作为 PHP 脚本进行处理 可以设置吗 SetHandler http httpd apache org do
  • 如何将 yii2 Restful api 中两个表的关系数据显示为 json 格式

    我遇到了将两个表中的数据显示为 JSON 格式并在 yii2 Restful api 上工作的问题 这是我的结构数据库 TABLE volunteer volunteer id int 11 NOT NULL auto increment
  • laravel 5.4 在请求验证之前修改数据[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我有我的自定义请求 它扩展了 Backpack CrudController 现在我想重写 ValidatesWhenResolv
  • 如何使用 PHP 从 MySQL 检索特定值?

    好吧 我已经厌倦了 过去一周我花了大部分空闲时间试图解决这个问题 我知道 SQL 中的查询已更改 但我无法弄清楚 我能找到的所有其他帖子似乎都已经过时了 如果有人能帮助我 我将非常感激 我想做的就是使用手动输入数据库的唯一 密码 来检索行的
  • 如何使用 PHP 获取列中的所有值?

    我一直在到处寻找这个问题 但仍然找不到解决方案 如何从 mySQL 列中获取所有值并将它们存储在数组中 例如 表名称 客户 列名称 ID 名称 行数 5 我想获取此表中所有 5 个名称的数组 我该如何去做呢 我正在使用 PHP 我试图 SE
  • php56 - CentOS - Remi 仓库

    我刚刚在测试盒上安装了 php 5 6 正常的 cli php 解释器似乎不存在 gt php v bash php command not found gt php56 v PHP 5 6 13 cli built Sep 3 2015
  • 如何移动 Zend_Layout 的“视图”

    通常它会是这样的结构 application modules somemodule views scripts index index phtml 我如何将其移动到 application templates somemodule temp

随机推荐

  • javascript 字符串比较

    我有以下脚本 document write 12 lt 2 返回 true 有什么理由吗 文档说 javascript 以数字方式比较字符串 但是 我不明白 12 如何小于 2 JavaScript 逐个字符地比较字符串 直到其中一个字符不
  • 将日期从 Excel 转换为 R

    我很难将日期从 excel 从 csv 读取 转换为 R 非常感谢帮助 这是我正在做的事情 df date as Date df excel date format d m Y 但是 有些日期会被转换 但有些则不会 这是以下的输出 head
  • ggpairs 绘图,其中包含具有重要性星级和自定义主题的相关值热图

    我想用 ggPairs 创建一个相关图 其中应该包含 相关值的热图 就像在这个SO问题中一样 相关性的显着性星号 就像在这个SO问题中一样 根据自定义主题的字体类型和字体大小 基于 user20650对上述SO问题提供的优秀解决方案 我成功
  • Angular2:将表单上下文绑定到 ngTemplateOutlet

    我试图定义一个包含动态表单 使用 ReactiveForms 的组件 用户应该能够在其中添加 删除控件 控件可以采用多种形式 并且必须在组件外部定义 因此我认为 TemplateRef 最适合这种情况 我正在努力寻找一种通过使用 formC
  • XSL 与区域化/国际化数字格式

    在格式化数字时 XSL 中是否内置了任何区域化支持 目前 我的底层 XML 包含英国 美国格式的数字 例如 54321 12345 我可以对此进行选择总和 以相同的格式给出总计 我可以使用 format number 54321 12345
  • Lattice中的facet_wrap相当于什么

    假设我们有一些这样的数据 dta lt data frame group rep letters 1 8 each 1000 x runif 8000 y runif 8000 我想为每个组生成一个包含 y x 的格子图 但是 第一行有 a
  • 左外连接等效

    我有一个包含空值的表 在 ORDER 表中 PART ID 部分有 2 个空值 CUSTOMER ID 部分有 2 个空值 我有这样的疑问 SELECT O ORDER ID O ORDER DATE O CUST ID O QUANTIT
  • 将图形直接放入 Knit 文档中(不将其文件保存在文件夹中)

    我正在 RStudio 中创建一个名为 test Rnw 的文档 其 MWE 如下 documentclass 12pt english nohyper tufte handout usepackage tabularx usepackag
  • 逗号运算符的正确用法是什么?

    我看到了这段代码 if cond perror an error occurred exit 1 为什么要这么做 为什么不只是 if cond perror an error occurred exit 1 在你的例子中 它根本没有任何理由
  • Coq 将不存在的语句转换为 forall 语句

    我是 Coq 的新手 这是我的问题 我有一个声明说 H forall x term exists y term P x y P y x 我猜它相当于 forall x y term P x y P y x gt false 但我可以使用哪种
  • 浮点数转换恐怖,有出路吗?

    背景 最近 我的同事向我们的测试项目添加了一些新测试 其中之一还没有传递或持续集成系统 由于我们有大约 800 个测试 并且需要一个小时才能运行所有测试 因此我们经常会犯错误 并且只在我们的开发机器上运行我们当前已实现的测试 这种方法有其弱
  • 如何从不返回简单 HTML 的网站抓取数据

    我一直在使用 requests 和 BeautifulSoup for python 从基本网站中抓取 html 但大多数现代网站不仅仅提供 html 结果 我相信他们运行 javascript 或其他东西 我不是很熟悉 这里有点菜鸟 我想
  • spring boot hibernate查询无效用户错误

    嗨 我是 Spring Boot 的新手 我尝试连接到 Oracle 并列出相关记录 我的代码在存根环境中运行 即没有连接到数据库 当我尝试从 Spring 连接到数据库时 出现编辑 2 中给出的错误 家庭控制器 package blog
  • 转换数据类型为 Option Strict

    我只是想知道如何正确 将字符串转换为日期 将整数转换为短整型 将字符串转换为整数 将字符串转换为双精度 正确地不使用任何类型 我打开了 Option Strict 现在所有这些错误都弹出了 所以我正在尝试修复它们 NET 提供了多种检查 测
  • 在另一个函数中使用一个函数的返回结果[重复]

    这个问题在这里已经有答案了 我知道这有几个问题 我读过但我无法理解 我试图在另一个函数中使用一个函数的返回结果 def multiplication a c a a return c def subtraction c d c 2 retu
  • 如何包含 pandas date_range() 的两端

    我想从一对日期创建一个按月频率的日期列表 包括两个日期所指示的月份 import pandas as pd import datetime Option 1 pd date range datetime 2022 1 13 datetime
  • 如何设置面板的透明不透明度

    我如何将面板设置为透明 如不透明度为0 我通过程序设置面板 它位于视频播放器的顶部 代码是这样的 Private Sub Button1 Click sender As Object e As EventArgs Handles Butto
  • 为什么我们要在 PyTorch 中“打包”序列?

    我试图复制如何对 rnn 的可变长度序列输入使用打包但我想我首先需要理解为什么我们需要 打包 序列 我明白为什么我们 填充 它们 但为什么 打包 通过pack padded sequence 必要的 我也偶然发现了这个问题 下面是我的发现
  • Bert 针对语义相似性进行了微调

    我想应用微调 Bert 来计算句子之间的语义相似度 我搜索了很多网站 但几乎没有找到有关此的下游信息 我刚刚发现STS基准测试 我想知道是否可以使用STS基准数据集来训练微调bert模型 并将其应用到我的任务中 合理吗 据我所知 计算相似度
  • ffmpeg/PHP - 将任何视频格式转换为 ogg 时出现问题 - 视频断断续续/无音频 - win64

    如果这是一个重新发布 类似的帖子 首先让我道歉 因为我尽了最大努力在此处和谷歌上已创建的帖子中搜索我的问题的具体解决方案 但无法 我在 win64 系统的本地主机上使用 ffmpeg 创建 测试视频转换脚本 然后将它们上传到服务器 我能够成