4

oggビデオとmp4ビデオの違いの1つは、oggビデオにはファイルサイズを説明するメタデータがないため、oggビデオがロードされると、ファイルが完全にロードされるまでコントロールが残り時間を表示できないことです。これは、oggビデオの長さが数分を超える場合に問題になる可能性があります。ページが要求されたときにこのファイルサイズを取得する方法はありますか?

(クライアント側の開発者、サーバー側の回答があると思う質問をします。より具体的に質問する方法を考えられる場合は、この質問の編集案を歓迎します。)

4

1 に答える 1

2

最も直接的ではありませんが、これを試すことができます。

まず、.htaccess を設定して、すべての .ogv ビデオを透過的に取得し、PHP で処理します。

.htaccess

RewriteEngine On
RewriteRule ^(.*)\.ogv$ ogv.php?file=$1

ogv.php

<?php
$file = $_GET['file'] . '.ogv';

while ( strpos($file, '..') !== false )
{
    $file = str_replace('..', '', $file);
}

$filesize = filesize($file);

header("Content-Type: video/ogg");
header("Content-Transfer-Encoding: binary"); 
header("Content-Length: {$filesize}");
readfile($file);
exit()
?>

HTML:

<video src="video.ogv" id="video" controls></video>

<script>
var video_src = document.getElementById('video').src;
var xhr = new XMLHttpRequest();
xhr.open('GET', video_src, false);
xhr.send(null);
var size = xhr.getResponseHeader('Content-Length');
alert(size);
</script>

では、このシステムがどのように機能するかを説明します。通常のように .ogv ビデオをリンクするだけですが、最初に .htaccess ファイルがリクエストをキャプチャして ogv.php に送信します。次に、サーバーが自動的に送信しない場合に備えて、PHP ファイルは特にファイル サイズ ヘッダーを送信します。わかりました、それはまだあなたに多くの利益をもたらしませんよね?次に、ビデオの Ajax リクエストを作成し、HTTP ヘッダーからファイルサイズを抽出します。

お役に立てれば。

于 2011-03-17T03:18:40.577 に答える