如果这是一个重新发布/类似的帖子,首先让我道歉,因为我尽了最大努力在此处和谷歌上已创建的帖子中搜索我的问题的具体解决方案,但无法。
我在 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 版本,但仍然收到相同的问题。
提前致谢。
编辑:作为一种可能的解决方法,有没有一种方法可以简单地分别对视频/音频进行编码,然后将它们重新组合在一起?这会导致可能的音频/视频同步问题吗?