使用 FFMPEG 的 PHP HTML5 兼容 MP4 视频

Posted

技术标签:

【中文标题】使用 FFMPEG 的 PHP HTML5 兼容 MP4 视频【英文标题】:PHP HTML5 compatible MP4 video using FFMPEG 【发布时间】:2012-11-27 17:59:56 【问题描述】:

您好,我正在使用 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  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 中运行时,播放器提示我 invalid source 错误。我在使用 libx264mpeg4 MP4 编解码器时遇到了这个问题。

有什么想法吗?

更新

按照伊恩的指示,我终于开始工作了。我在 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";

【问题讨论】:

感谢您的更新。我的系统现在运行良好! 【参考方案1】:

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

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

MP4 有很多不同的风格(称为profiles),并不是所有的都可以在浏览器中播放。

【讨论】:

它不适用于任何浏览器; IE9、IE10、Safari 和 Chrome。一般来说,如果来源无效,Chrome 不会在播放器中显示错误。搜索栏上没有活动表明有问题。无论如何,HTML5 支持哪些配置文件?你提到的***页面没有解释这一点。 好的,是编码不起作用。基本配置文件通常是我认为最好的,但这个答案:(***.com/questions/3119797/…) 可能有助于使用 FFMPEG 创建兼容的 MP4 视频。 谢谢伊恩。有效!我已经用确切的解决方案更新了我的帖子。我会把你的作为答案。我使用baseline level 3 配置文件和libx264 编解码器。

以上是关于使用 FFMPEG 的 PHP HTML5 兼容 MP4 视频的主要内容,如果未能解决你的问题,请参考以下文章

在 PHP 中从没有 ffmpeg 的视频创建缩略图

将任何类型的视频转换为MP4 php而不用ffmpeg [关闭]

PHP 将amr音频文件转换为mp3格式

FFMPEG 转换的视频在 HTML5 中不起作用

window下ffmpeg怎么解决 在线等 对其不熟 只想用

HTML5 视频:ffmpeg 编码的 MP4 不在任何浏览器中播放(虽然在 VLC 中播放)