Есть ли способ определить размер файла видео .ogg до его полной загрузки? - PullRequest
3 голосов
/ 17 марта 2011

Я знаю одно отличие между ogg video и mp4 video в том, что ogg video не имеет метаданных, описывающих размер файла, поэтому при загрузке ogg video элементы управления не могут отображать время, оставшееся до полной загрузки файла,Это может быть проблемой, если видео ogg длится более нескольких минут.Есть ли способ получить этот размер файла при запросе страницы?

(Разработчик на стороне клиента, задающий вопрос, который, как мне кажется, имеет ответ на стороне сервера. Я приветствую предлагаемые изменения этого вопроса, если вы можетепридумайте способ задать это более конкретно.)

1 Ответ

2 голосов
/ 17 марта 2011

Ну, хотя не самый прямой, вы можете попробовать это.

Во-первых, настройте .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.

Надеюсь, это поможет.

...