2013-07-02 2 views
0

페이지에 서버에 mp4, ogg 등의 미디어 파일이 있습니다. 그러나 문제는 미디어 파일이지만 파일에 확장 기능이없는 몇 가지 보안상의 이유로 인한 것입니다. 아파치가 MIME 형식을 인식하지 못하기 때문에 html5 비디오 태그가 비디오를 재생하지 못합니다.브라우저에 확장명이없는 PHP html 출력 비디오

내 옵션에는 어떤 것이 있습니까?

확장자가 없기 때문에 .htaccess이 작동하지 않습니다. 파일 확장자를 이름에 넣으면 작업이 시작됩니다. 또한 이러한 파일의 MIME 형식을 databse에 저장했습니다.

파일 strucure :

asdsad/media 
werewr/media 
23frwe/media 

//where media is the file (could be mp4/ogg/webm) with no extension. 
// before/is folder name 
// If i change media to media.mp4 , it works 

htaccess로 파일

AddType video/ogg .ogv .ogm .ogg 
AddType audio/ogg .oga .ogg 
AddType video/mp4 .mp4 
AddType video/webm .webm 
AddType video/x-m4v .m4v 
AddType text/x-vcard .vcf 

내가 출력 파일의 PHP에서 대신의 localpath에서 연결의 경우? 작동합니까? 이런 식으로.

header("Content-type: video/mp4"); 
echo file_get_contents($pathTmp4); 

답변

0
<?php 
// tell the browser the file type 
header("Content-type: video/mp4"); 
// tell the browser the file size 
header(sprint("Content-size: %d", filesize($pathTmp4))); 
// disable output buffering before delivering the file 
while(ob_get_level()) ob_end_clean(); 
// send it over 
readfile($pathTmp4); 
// done, track speed and such optional stuff here 
?> 

readfile을 고려하십시오. file_get_contents 메모리에서로드를 직접 우회하여 출력합니다.

파일을 열고 fread을 사용하여 청크를 보내면됩니다. 전체 내용을 보내기 전에 메모리에로드하지 마십시오.

속도의 측면에서 UPDATE

, 당신은 테스트해야합니다. 이것은 PHP를 사용하여 파일을 뱉어내는 것처럼 .htaccess 문제를 우회합니다. 이렇게하면 헤더를 제어하고 적절한 유형을 브라우저에 제공 할 수 있습니다. 단점은 파일을 전달하는 PHP 오버 헤드입니다. 우리가 큰 비디오 파일을 얘기로

나는 개인적으로 fopen + fread + fclose 콤보에 대한을 가고 싶어. 또한 DB의 전송 진행 상황을 추적하고 배송 속도를 추적 할 수 있습니다. 실시간으로 다운로드 추적이 유용 할 수 있습니다.

다른 점은 (감자가 작음) 인 경우 readfile()을 사용합니다. 완료 될 때까지 업데이트를 제공하지 않습니다. 그러나 그것은 그 일을합니다.

여전히 테스트해야합니다. 100MB 이상의 동영상 파일을 사용하여 보내십시오. PHP 인스턴스에서 메모리가 어떻게 작동하는지, 전체적으로 어떻게 동작하는지 확인하십시오.

+0

readfile은 출력 버퍼링이 켜져 있지 않으면 메모리에 전체 파일을 읽지 않습니다. – Orangepill

+0

자세히 설명해 주시겠습니까? (1) 긴 비디오를 가지고 있기 때문에 어느 방법이 더 빠를까요? (2) .htaccess 파일의 문제를 우회합니까? – django

+0

readfile과 fread는 더 빠를 것입니까? HTML 태그에서 직접 링크 된 파일보다 속도가 느립니까? – django