2013-04-17 1 views
5

요소에서 재생할 .wav 파일의 헤더를 만들어야합니다. 내가 해당 페이지에 갈 때 .wav 파일 다운로드에 대한 PHP 헤더가 포함되어 있지만 재생할 수 없습니다.

$filename = basename($_GET['file']); 

$pos = strrpos($file, '.'); 

$extension = ($pos !== false) ? substr($file, $pos) : ''; 

$mime_type = ""; 
switch ($extension) { 
    case '.mp3': 
     $mime_type = "audio/mpeg, audio/x-mpeg, audio/x-mpeg-3, audio/mpeg3"; 
     break; 
    case '.ulaw': 
     $mime_type = "audio/basic"; 
     break; 
    case '.gsm': 
     $mime_type = "audio/x-gsm"; 
     break; 
    case '.wav': 
     $mime_type = "audio/x-wav, audio/wav"; 
     break; 
} 

if(file_exists($filename)){ 
    $handle = fopen($filename, "rb"); 

    header('Content-Description: File Transfer'); 
    header("Content-Transfer-Encoding: binary"); 
    header('Content-Type: '.$mime_type); 
    header('Content-length: ' . filesize($filename)); 
    header('Content-Disposition: attachment;filename="' . $filename.'"'); 

    while (!feof($handle)) { 
     echo fread($handle, 4096); 
     flush(); 
    } 
    fclose($handle); 
}else{ 
    header("HTTP/1.0 404 Not Found"); 
} 

은, 지금 www.example.com/listen?file=Test.en.wav

에 의해 호출, 파일 다운로드 및 작품 (내가 원하는의 절반), 그러나 내가하려고하면

<embed src="www.example.com/listen?file=Test.en.wav"> 

플레이어가 나타나지만 파일을 재생할 수 없으며 재생할 수 없습니다.

편집 : 재생할 수 있는지, 어떻게 재생할 수 있는지 알고 싶습니다.

+0

헤더를 제거? Echo는 파일의 내용을 인쇄합니다. 어떻게 .wav를 재생해야합니까? – Wookie88

+0

죄송합니다. 제 질문은 그다지 구체적이지 않았습니다. 가능한 경우 파일을 재생하는 방법을 알고 싶습니다. 고맙습니다! – Benoit

+0

안녕하세요, 의도적이지만'echo fread ($ handle, 4096); '는 파일의 처음 4MB만을 표시 할 것입니다 ... – user1909426

답변

0

시도 audio/vnd.wave. RFC 2361

판매용 대신 쉼표로 구분의 요청에 따라 하나의 MIME 타입을 지정하려고.

case '.mp3': 
    $mime_type = "audio/mpeg"; 

아마 당신은 또한 당신의 브라우저에서 다음을 재생하기 위해 Quicktime 같은 것을 설치해야합니다. 일부 브라우저는 잘못된 MIME 유형을 수정하기 위해 컨텐츠 [MIME] 스니핑을 시도합니다.

+0

을 참조하십시오. 나는 MPEG 용으로 1 마임을 사용하고, 파이어 폭스에서는 재생을 멈추고, .wav는 여전히 파이어 폭스에서 재생하고 싶지 않지만, 크롬에서는 작동한다. 고맙습니다 – Benoit

0

다른 헤더 그냥 설정 "Content-Type을"당신은 위의 모든 플레이어 코드를 게시 한

header('Content-Type: '.$mime_type); 
관련 문제