2013-10-30 3 views
6

내 비디오 스트리밍 웹 응용 프로그램을 클래식 <video src="http://myserver/video.mp4">에서 URL을 사용하여 블로 브으로 전환하려고하면 페이지에서 간단한 Ctrl + s로 전체 다운로드되지 않습니다.자바 스크립트 비디오 BLOB 및 프로그레시브 다운로드

XMLHttpRequest를 사용하면 멀리있는 비디오 파일에서 BLOB를 만들 수 있습니다.

문제는 XMLHttpRequest가 점진적 다운로드 용도로 사용할 수없는 전체 파일을 다운로드하는 것입니다.

다음 코드는 먼 파일에서 blob을로드하는 가장 간단한 예제입니다. 응용 프로그램이 비디오 스트림이기 때문에 (우리는 사용자가 전혀 스트리밍되지 않고 전체 파일을 다운로드 X 분을 기다리고 싶지 않는 경우)

var r = new XMLHttpRequest(); 
r.onload = function() // Triggered only when all video is downloaded 
{ 
    video.prop("src", URL.createObjectURL(r.response)); 
}; 

r.open("GET", "http://myserver/video.mp4"); 
r.responseType = "blob"; 
r.send(); 

,이 방법은 사용할 수 없습니다.

BLOB와 점진적 다운로드를 결합하는 방법이 있습니까?

답변

0

src = "foo.mp4"메소드 만 사용하는 경우 프로그레시브 다운로드가 브라우저의 기본 동작이어야합니다. 그러나 재생 환경은 파일의 실제 형식에 따라 다릅니다.

"일반"MP4 파일은 스트리밍을 위해 설계되지 않았습니다. 재생을 시작하는 데 필요한 데이터가 파일의 시작과 끝 사이에서 분리 될 수 있도록 구조화되어 있습니다. 따라서 플레이어는 재생을 시작하는 데 필요한 데이터를 얻기 위해 모든 것을 버퍼링해야 할 수 있습니다.

"-frag"옵션을 지정하여 과 같은 도구를 사용하여 일반 MP4를 조각화 된 MP4로 변환 해 볼 수 있습니다. 이렇게하면 파일의 데이터가 재정렬되어 모든 초기화 데이터가 앞쪽에 있고 나머지 파일은 청크로 분할됩니다.

더 복잡한 옵션은 MPEG-DASH와 같은 것을 사용하는 것입니다. MP4Box 및 dash.js을 활용하여 완전히 통합 된 적응 형 스트리밍 미디어 플레이어를 설정할 수 있습니다.

+0

포맷 질문에는 적합하지만 블롭에 대해서는 괜찮습니까? – Baart

관련 문제