0

私は現在、ファイルを webm/ogg/mp4 形式に変換してユーザーに送り返す perl スクリプトを作成していますが、ビデオは埋め込まれています。EOF を送信できないことを除いて、すべて機能します。そのため、HTML5 ビデオ プレーヤーは最後が何であるかを認識し、ファイルを正しく使用できます (特定の時間に移動したり、ファイルがいつ終了したかを知ることさえできます (今は停止しますが、ビデオではもう何もできません。

開始コード:

elsif ($path =~ /^\/((\w|\d){11})\.webm$/ig) {
    print "HTTP/1.0 200 OK\r\n";
    $handler = \&resp_youtubemovie;
    $handler->($cgi,$1);

webmファイルを送信する機能

sub resp_youtubemovie {
    my $cgi = shift;
    my $youtubeID = shift;
    return if !ref $cgi;
    open(movie,"<$youtubeID.webm");
    local($/);
    $movie = <movie>;
    close(movie);
    print "Content-type: movie/webm\n";
    print $movie;
}

私はすでに while ループとバッファを試しましたが、どちらもうまくいきません。また、HTTP ステータス コードを 206 Partial Content に変更しようとしました。案件。ムービー ファイルを開いて正しくストリーミングする方法を知っている人はいますか?

4

2 に答える 2

2

206 Partial Content HTTP ステータスを使用する必要があり、以下も送信する必要があります。

  • Accept-Range: bytesヘッダー。
  • Content-Range: 0-2048/123456コンテンツの開始バイト インデックスと終了バイト インデックス、およびコンテンツの合計バイト長を送信するヘッダー。クライアントは、要求ヘッダーで必要なバイト範囲を送信します。クライアントは 1 回のリクエストで複数のバイト範囲を送信する場合があります。その場合、マルチパート ワード境界を含むコンテンツも送信する必要があります。

最後に、質問に戻るために、クライアントが満足できないバイト範囲を要求した場合は、416 HTTP ステータスを送信して接続を閉じます。

于 2013-01-26T22:27:16.413 に答える