首先向大家道歉,如果这是一个重复的帖子/相似的帖子,我尽力在已经创建的帖子和谷歌上搜索了特定的解决方案来解决我的问题,但是没有找到。
我正在使用位于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视频。
有没有其他想法,以解决在需要安装更多软件(如ffmpeg2theora)之前的问题?
此外,如果有帮助,我从ffmpeg输出了一些内容,并且当使用以上第二种方法时,会显示许多错误信息。
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版本,但仍然遇到同样的问题。
提前致谢。
编辑:可能的解决方法是,是否可以将视频/音频分别编码,然后将它们重新组合在一起?这会导致可能的音频/视频同步问题吗?