2014-04-12 5 views
1

귀하의 조언이 필요합니다.웹 페이지에서 성장 MP3 파일 재생

나는 WAV에서 mp3 파일을 생성하는 웹 서비 스를 가지고 있습니다.

변환 과정에 시간이 걸리고 변환이 진행되는 동안 방문자가 즉시 음악을 듣기를 원합니다.

나는 html5 태그를 시도하면서 mp3 파일의 일부만 재생할 수 있다는 것을 알았습니다. mp3 파일을 가져온 순간에 준비가되었습니다. 내 말은 파일을 가져온 이후로 파일이 커 졌는지 걱정하지 않는 것 같습니다.

이 상황에 접근하는 올바른 방법은 무엇입니까?

미리 감사드립니다.

답변

0

저는 JPlayer을 사용하여 재생할 수 있다고 생각합니다. 기능 중 하나는 미리로드되지 않는다는 것입니다.

편집 : HTML5 오디오 플레이어는 또한 다음과 같은 값을 가질 수있는 프리로드 속성이 있습니다

"없음"아무것도를 프리 페치하지 않습니다

"메타 데이터"는을의 경우 (확실하지 정확한 단어) : 길이 같은 몇 가지 기본적인 것들, 샘플 속도를 얻을 것이다

"자동"당신은 좀 더 contro를 얻을 필요가 전체 MP3를

+0

감사합니다. 그 중 하나를 시도해보십시오 – user1312695

+0

@ user1312695 죄송합니다. 게시물을 수정했습니다. – Limnic

+1

preload 속성이

0

프리 페치합니다 웹 서버에 남겨두기보다는 서빙 프로세스에 대한 정보를 제공합니다.

웹 서버가 HTTP 요청에 응답하면 클라이언트에 요청 된 리소스의 크기 (바이트)를 알려주는 Length: 헤더가 포함됩니다. 웹 서버는 파일이 추가 될 예정임을 알지 못하기 때문에 요청시 사용 가능한 길이까지만 전송합니다. 클라이언트는 모든 데이터를 다운로드하지만 클라이언트의 관점에서 파일이 아직 인코딩되지 않은 상태에서 전체 파일을 아직 다운로드하지 않았습니다.

이 문제를 해결하려면 인코더의 출력을 파일과 클라이언트 모두에 동시에 파이프해야합니다. 클라이언트에 대한 응답 데이터의 경우 Length: 헤더를 전혀 포함하지 마십시오. 대부분의 클라이언트는 청크 분할 인코딩을 사용하므로 HTTP/1.1을 준수 할 수 있습니다. 일부 클라이언트 (초기 Android, 이전 브라우저, 이전 VLC)는 청크 분할 인코딩을 처리 할 수 ​​없으며 들어오는대로 데이터를 스트리밍합니다.

어떻게 수행 할 것인지는 전적으로 서버 측 당신은 당신의 질문에 명시하지 않았습니다. 개인적으로, Node.js를 사용하면 프로세스가 매우 쉽습니다. 두 스트림 모두로 간단하게 파이프 할 수 있습니다. 다중 파이프 방법을 사용하면 파이프가 가장 느리게 실행됩니다. 일부 스트리밍 클라이언트 (예 : VLC)는 TCP 창 크기를 줄여 너무 많은 데이터를 클라이언트 측에서 버퍼링하지 않아야합니다. 이 경우 디스크에 쓰는 것은 클라이언트의 속도로 실행됩니다. 이것은 당신에게 중요하지 않을 수도 있지만 인식해야 할 것입니다.

+0

고마워, 그게 내가 할거야 (그리고 내 프로토 타입에서 작동 증명). 파일을 직접 참조하는 대신 stream.php? file =/mp3/123.php와 같이 파일을 생성 할 때 스트리밍합니다. 그리고 마지막으로 "Lneght :", 운좋게도 mp3의 크기는 알려집니다 (가변 비트 전송률을 사용하지 않음). 내가 일종의 걱정거리 인 실행 시간 제한이 있다면, 파일이 빌드되고 있다면, 잠깐, 그러면 stream.php의 해당 프로세스가 꽤 오래 살아 있다는 것을 의미합니다. excep server reconf 주위에 어떤 방법이 있습니까? – user1312695

+0

@ user1312695 MP3 크기가 정확하게 알려지지 않았습니다. CBR은 지정된 비트율에 매우 가깝지만 정확한 길이가 아니므로 길이 헤더를 예측하는 데 적합하지 않습니다. 길이 헤더를 완전히 띄우십시오. – Brad

+0

이상하게도, 나의 실험에서 같은 길이의 wav에 대한 CBR은 항상 같은 크기의 파일을 최대 1 바이트까지 제공합니다. 나는 기본 설정과 함께 절름발이 인코더를 사용합니다. 어쨌든 헤더가 없으면 클라이언트는 예상 할 데이터가 더 이상 없다는 것을 어떻게 알 수 있습니까? – user1312695