ffmpeg/PHP - 将任何视频格式转换为ogg的问题 - 歪歪视频/无音频 - win64
让我先认识一下,如果这是重新发布/类似帖子,我尽我所能搜索特定的解决方案给我在这里已经创建的帖子内,在谷歌上,但不能。ffmpeg/PHP - 将任何视频格式转换为ogg的问题 - 歪歪视频/无音频 - win64
我在win64系统上的本地主机上使用ffmpeg来创建/测试视频转换脚本,然后将它们上传到服务器。
但是,无论何时我尝试从任何其他格式转换为.ogg,我都能够成功转换为/从mp4/flv/wmv/mov发出问题。
首先我尝试这样做:
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的输出,并使用上述方法#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类可用于其脚本。另外,一开始在我的电脑上本地查看firefox中的.ogg视频,视频在第一次开始播放时会冻结,然后在几秒钟后跳到正确的位置(相对于音频),但是,如果从开始重播将毫无问题地播放。我假设我的视频卡没有达到标准;这将在转换后首次查看文件时解释问题。
在任何情况下,上述代码应该适用于任何其他使用ffmpeg和php正确转换为.ogg格式的问题。