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 で実行すると、プレーヤーで無効なソースエラーが表示されます。libx264mpeg4MP4 コーデックの両方でこの問題が発生しています。

何がうまくいかないのですか?

アップデート

Ian の指示に従って、ようやく機能するようになりました。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

生成された MP4 ファイルを、Chrome や Safari などの他のブラウザー (MP4 をサポートする) でテストしましたか? 最初のステップは、ファイルが実際に再生されることを確認することです。

生成された MP4 を保存し、Chrome/Safari にドラッグしてから IE10 (他のブラウザが動作する場合) にドラッグして、再生できるかどうかを確認することもできます。このようにして、問題がエンコーディングであるかどうかを確認することができます。

MP4 にはさまざまな種類 (プロファイルと呼ばれる) があり、すべてがブラウザーで再生できるわけではありません。

于 2012-12-10T11:19:11.867 に答える