2011-03-17 2 views
3

ogg 비디오와 mp4 비디오의 차이점 중 하나는 ogg 비디오에는 파일 크기를 설명하는 메타 데이터가 없으므로 ogg 비디오를로드하면 파일이 완전히로드 될 때까지 컨트롤에 남아있는 시간이 표시되지 않습니다. ogg 비디오가 몇 분 이상 길면 문제가 될 수 있습니다. 페이지가 요청 될 때이 파일을 가져 오는 방법이 있습니까? 잘완전히로드되기 전에 .ogg 비디오의 파일 크기를 알 수있는 방법이 있습니까?

(좀 더 구체적으로 요청하는 방법을 생각할 수있는 경우 클라이언트 측 개발자는, 내가 서버 측의 대답을 가지고 있다고 생각 질문을. 나는이 질문에 대한 수정 제안에 오신 것을 환영합니다.)

답변

2

가장 직접적인 것은 아니지만 이것을 시도 할 수 있습니다.

첫째, 투명하게 모든 .ogv 비디오를 잡아

htaccess로 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 헤더에서 파일 크기를 추출 할 수 있습니다.

희망이 도움이됩니다.

+0

답변 - 투표와 마찬가지로 답변도 좋지만 받아 들일 준비가되지 않았다고 생각합니다. "서버가 자동으로 파일 크기 헤더를 보내지 않는 경우를 대비해서"라고 말하면 일반적으로 그렇게합니까? 그렇다면 파일 크기 헤더를 읽을 수있는 방법이 있습니까? 또한, "HTTP 헤더에서 파일 크기를 추출하십시오"라고 말하면, 처음에는 그렇게하고 싶다고 생각합니다. 그러나 확실하지 않습니다. –

+0

나는 $ filesize 데이터를 채우기 위해 내일 실제 파일과 se를 사용하여 이것을 시도 할 것이다. –

+0

마지막 코멘트 : "가장 직접적인 것은 아니지만"- 무엇이 * 가장 직접적입니까? 내가 모르는 분명한 방법이 있나? –