2

ユーザーがアップロードした動画をさまざまなブラウザー/プラットフォームで高品質で表示したい。かなり良いスタートを切ったと思いますが、いくつか問題があります。ffmpeg 0.10 (PHP から呼び出される) と jwPlayer 5.8 (ライセンス) を自由に使用できます。

理想的には、私はサポートしたいと思います:

  • Flash 9 以降を搭載したブラウザ
  • 最新の Firefox/Chrome/Safari (Flash なし)
  • iOS 4.1+
  • アンドロイド 2.2+

現在のコード変換コマンドは次のとおりです。

$commands = array(
    'flv' => "/usr/bin/ffmpeg -y -i {$sourceFile} -b 500k -ar 22050 -ab 64 {$tmpFileName}.flv 2>&1",
    'webm' => "/usr/bin/ffmpeg -i {$sourceFile} -acodec libvorbis -ac 2 -ab 96k -ar 44100 -b 500k {$tmpFileName}.webm 2>&1",
    'mp4' => "/usr/bin/ffmpeg -i {$sourceFile} -acodec libfaac -ab 96k -vcodec libx264 -level 21 -refs 2 -vf 'scale=trunc(ih*a/2)*2:trunc(iw/a/2)*2' -b 500k -bt 1000k -threads 0 -f mp4 {$tmpFileName}.pre.mp4 2>&1",
    'jpg' => "/usr/bin/ffmpeg -y -i {$sourceFile} -ss 5 -vcodec mjpeg -vframes 1 -an -f rawvideo {$tmpFileName}.jpg 2>&1"
);

$fastStartCommand = "/usr/bin/qt-faststart {$tmpFileName}.pre.mp4 {$tmpFileName}.mp4");

私の現在の表示コードは次のとおりです。

<video id="video" controls="controls" width="{$width}" height="{$height}" poster="{$fileJPG}" style="width: {$width}px; height: {$height}px;">
    <source src="{$fileMP4}" type="video/mp4" data-ext="mp4" />
    <source src="{$fileWEBM}" type="video/webm" data-ext="webm" />
    <a href="{$fileMP4}" title="Play Video">
        <img border="0" src="{$fileJPG}" width="{$width}" height="{$height}" alt="Play Video" />
    </a>
</video>
<script type="text/javascript">
swfobject.embedSWF(
    '/flash/jwPlayer.swf',
    'video',
    {$width},
    {$height},
    '9.0.0',
    '',
    {
        file: '{$fileFLV}',
        width: {$width},
        height: {$height},
        provider: 'video',
        stretching: 'uniform',
        smoothing: 'true',
        dock: 'true'
    },
    {
        menu: 'false',
        allowfullscreen: 'true',
        allowscriptaccess: 'always',
        allownetworking: 'always',
        wmode: 'transparent'
    }
);
</script>

アイデアは、Flash プレーヤーを優先し (引き続き使用したいカスタム スキンが多数あります)、HTML 5 ビデオにフォールバックし、それが失敗した場合は、mp4 ファイルへのリンクを含む JPEG を表示することです (これは、 iOS 2/3 および古いブラウザの最後の手段として動作するため、少なくとも QuickTime を起動してビデオを再生できます)。

現時点で解決方法がわからない主な問題は次のとおりです。

  • Flash で高品質のビデオを表示するにはどうすればよいですか? flv の代わりに mp4 ビデオを使用してみましたが、動作せず、音声のみでビデオは再生されません。最近の Flash は h.264 をサポートするはずだと思いますが、どうすればよいのでしょうか? Flash の古いバージョンと新しいバージョンでは、別のトランスコーディング方法を使用する必要がありますか?
  • ビデオをより良い品質でトランスコードするにはどうすればよいですか? 現在、すべての解像度で同じビットレートを使用しています。ffmpeg がビットレートを自動的に調整する方法はありますか? または、アップロードされたビデオの解像度を検出して、解像度のリストに一致させることはできますか?
4

0 に答える 0