4

您好我正在使用 FFMPEG 将上传的视频与 PHP 进行转换。

echo "conversion exercise started...<br/><br/>";

/* looping through all files in the directory */
if ($handle = opendir('assets/uploaded_videos')) {
    while (false !== ($entry = readdir($handle))) {

        /* filtering the desired extensions */
        if ($entry != "." && $entry != ".." && in_array(substr($entry, strrpos($entry, '.')), array(".wmv", ".mpg", ".mpeg", ".flv", ".ogg", ".mp4")))
        {
            $filename = substr($entry, 0, strrpos($entry, '.'));

            //$command = "ffmpeg -i assets/uploaded_videos/$entry -vcodec libx264 assetss/videos/$filename.mp4";

            $command = "ffmpeg -i assets/uploaded_videos/$entry -vcodec mpeg4 -acodec libfaac files/videos/$filename.mp4";

            echo $command."<br />";

            shell_exec($command."> /dev/null 2>/dev/null &");
        }
    }
    closedir($handle);
}

我已将播放器嵌入到视图文件中,如下所示:

<video width="350" poster="<?php echo $first_video['thumb_path'];?>" controls>
    <source src="<?php echo $first_video['video_path']; ?>" />
    <span id="silverlight_player_for_fallback"></span>
</video>

现在,当我在 IE10 中运行时,播放器给了我无效源错误。我在使用MP4 编解码器libx264时都遇到了这个问题。mpeg4

任何想法出了什么问题?

更新

按照伊恩的指示,我终于开始工作了。我在libx264中使用了baseline-level3配置文件。您可以提供额外的参数,但我猜配置文件是关键!我尝试了几个配置文件,并观察到 ​​vimeo 和 youtube 上的所有 HTML5 视频都使用这个基线 L3 配置文件。

任何与 MP4 斗争的人都可以考虑使用以下命令进行转换:

/* following command converted all my uploaded *.wmv files to mp4 */
$command = "ffmpeg -i files/uploaded_videos/$entry -vcodec libx264 -profile:v baseline -level 3 files/videos/$filename.mp4";
4

1 回答 1

4

您是否在 Chrome 和 Safari 等其他浏览器(支持 MP4)中测试过生成的 MP4 文件?第一步是确保文件实际播放。

您也可以保存生成的 MP4 并尝试将其拖入 Chrome/Safari 和 IE10(如果其他浏览器工作),看看它是否可以播放。通过这种方式,您可以尝试查看是否是编码问题。

MP4有许多不同的风格(称为配置文件),并不是所有的都可以在浏览器中播放。

于 2012-12-10T11:19:11.867 回答