제 질문은 간단합니다 : 검색 가능한 PHP로 어떻게 mp3를 출력 할 수 있습니까? 필자는 적절한 헤더가 설정되어 있고 readfile()과 fopen()을 모두 사용하여 시도했기 때문에 readfile()이 byteranges 및 fopen()을 지원하지 않는다고 생각하게되었습니다. 그러나, 나는 정말로 분명히 필요로하는 byteranges로 작업하거나 설정하는 방법을 이해하지 못합니다. jPlayer를 통해 노래를 연주하고 있는데 노래가 잘 재생되지만 찾을 수는 없습니다. 즉, 검색 바의 다른 위치를 클릭하여 노래를 건너 뛸 수 없습니다.jPlayer에서 PHP가있는 Seekable MP3
header("Pragma: public"); // required
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private", false); // required for certain browsers
header("Content-Type: audio/mpeg, audio/x-mpeg, audio/x-mpeg-3, audio/mpeg3");
header("Content-Disposition: inline; filename=" . $file . ";");
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . filesize($path));
//readfile("$path");
$music = fopen($path, 'r');
fseek($music, 0);
fpassthru($music);
exit();
나는 Range 헤더를 읽을 필요가 있다면, 내가 그걸 어떻게해야합니까 : 여기
는 MP3 파일을 출력하는 코드는?
해결 했습니까? 이 질문은 재미있었습니다! – realtebo
아니요. 난 그냥 가서 mp3 파일에 대한 직접 링크를 사용했기 때문에 해결 된 것으로 표시하지 않았습니다. 또한 Mac에서 Safari를 검색 할 수 있지만 Mac 및 Safari에서는 Chrome, iOS에서는 Chrome이 작동하지 않음을 발견했습니다. 특히 흥미로운 점은 iOS에서 PHP가 제공하는 mp3 파일이 라이브 스트리밍 파일로 취급되고 audio.duration 태그가 무한대로 설정된다는 것입니다. – Colin
MP3는 검색 가능한 컨테이너에서 사용하지 않는 한 기술적으로 검색 할 수 없습니다. MPEG 스트림에는 멋진 포인터가 없으며 보장 된 프레임 오프셋도 없습니다. MP3를 사용하는 대부분의 소프트웨어는 파일 길이, 평균 비트 전송률 및 스트림의 원하는 지점을 기반으로 추측 된 지점에서 "바늘 떨어 뜨림"을합니다. 그런 다음이 지점에서 디코딩됩니다. 위치를 보장하는 유일한 방법은 전체 스트림을 해당 지점까지 디코딩하는 것입니다. – Brad