FFmpeg的/ PHP的 - 问题转换任何视频格式OGG - 波涛汹涌的视频/无音频 - Wi

2019-09-01 07:39发布

让我先appologize如果这是我尽我所能去寻找在这里已经创建的帖子中的特定解决我的问题再后/相近的岗位,并在谷歌,但不能。

我使用的ffmpeg在localhost Win64的系统上之前,它们上传到服务器上创建/测试视频转换脚本。

我能够成功转换到/从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的,当方法#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建立好几次,仍然收到了同样的问题。

提前致谢。

编辑:作为一个可能的解决办法,是有办法,我可以简单地进行单独编码的视频/音频,然后就打他们重新走到一起? 这会导致可能的音频/视频同步问题?

Answer 1:

像往常一样,在这里发布我的问题(无数个小时后故障排除),我相信我可能已经修正了该问题。 我需要说明,不仅是音频/视频编解码器转换文件,同时也为输出.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);

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

显然,任何人谁是试图利用上面的代码需要引用可用ffmpeg的类添加到$ ffmpegPath / $ SRCFILE / $ destFile,并有自己的脚本。

此外,在最初观看本地在我的电脑在Firefox中.OGG视频,视频会从何时起,几秒钟后打,然后跳转到正确的位置(相对于音频)冻结,但是,如果从开始重播会玩没有问题。 我假设我的显卡只是没有达到标准; 其在转换后首次查看该文件会解释这个问题。

在任何情况下,上面的代码应该适用于谁是有问题转换为.OGG格式使用的ffmpeg和PHP正确任何人。



文章来源: ffmpeg/PHP - Problems converting any video format to ogg - Choppy Video / No Audio - win64