Совместимое с PHP HTML5 видео MP4 с использованием FFMPEG


Привет, я использую 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, плеер выдает мне неверный источник ошибку. У меня возникла эта проблема как с libx264, так и с mpeg4 кодеками MP4.

Есть идеи, что происходит не так?

Обновление

Следуя указаниям Яна, я наконец-то заставляю его работать. Я использовал профиль базового уровня 3 с libx264. Вы можете предоставить дополнительные параметры, но я думаю, что профиль - это ключ! Я экспериментировал с несколькими профилями и заметил, что все видео HTML5 на vimeo и YouTube используют этот базовый профиль 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";
Author: Annie, 2012-12-10

1 answers

Тестировали ли вы сгенерированный файл MP4 в других браузерах (поддерживающих MP4), таких как Chrome и Safari? Первый шаг - убедиться, что файл действительно воспроизводится.

Вы также можете сохранить сгенерированный MP4 и попытаться перетащить его в Chrome/Safari, а затем в IE10 (если работает другой браузер), чтобы посмотреть, сможет ли он воспроизводиться. Таким образом, вы можете попытаться выяснить, не в кодировке ли проблема.

Существует множество различных вариантов (известных как профили ) MP4, не все могут воспроизводиться в браузерах.

 4
Author: Ian Devlin, 2012-12-10 11:19:11