FLV 컨테이너에서 MP4 컨테이너보다 H.264 비디오가 훨씬 더 빠른 이유는 무엇입니까?


9

튜브 사이트를 개발 중이며 현재 H.264 형식에 문제가 있습니다. YouTube에서 고화질 동영상을 MP4 컨테이너에 넣은 것을 논리적으로 알았습니다.

다음으로 mod_h264_streaming스트리밍 및 타임 라인 제거 작업을 수행하기 위해 lighttpd를 설치 했습니다.

문제는 큰 파일 (약 500MB 이상의 해상도)이 버퍼링을 시작하기까지 영원히 걸리는 것입니다 (Flowplayer 및 기타 Flash 플레이어는 먼저 메타 데이터를 다운로드해야 함을 읽었습니다). MP4Box를 사용하여 xmov 원자를 파일 앞쪽으로 옮겼습니다 (Qt QuickStart도 시도했습니다). 그러나 도움이되지 않았습니다.

다음으로, 오디오 트랙을 인터리브해야한다는 것을 읽었으며, 그렇게했습니다. 이로 인해 아무런 변화가 없었습니다. 비디오는 여전히 느 렸습니다.

똑같은 H.264 영화를 FLV 컨테이너에 넣으려고했는데 재생 버퍼링이 거의 즉시 시작되었습니다.

그래서 내가 여기서 무엇을 놓치고 있습니까? 왜 mod_264_streaminglighttpd가 내장 된 일반 FLV 컨테이너보다 모듈 이 느린 MP4 컨테이너를 선택 mod_flv_streaming해야합니까? 분명히 많은 웹 사이트에서 MP4 컨테이너를 선택하지만 이유를 이해하지 못합니다.

그리고 부수적 인 질문으로 HTML5 <video>태그를 사용 하여 동일한 H.264 MP4 동영상을 사용해 보려고 시도했으며 스크러빙이 매우 빨랐습니다 ! lighttpd의 로그 파일을 조사한 결과 video.mp4?start=234, 타임 라인을 스크러빙 할 때마다 Flash 플레이어가 추가 되는 반면 네이티브 HTML5 <video>태그를 사용하는 브라우저 는 그런 것이 없습니다. 이것이 일종의 플래시 제한입니까? 플래시 스트리밍이 HTML5 스트리밍만큼 빠를 수없는 이유는 무엇입니까?

답변:


4

TL; DR : MP4는 비디오 사이트가 FLV가 지원하는 것보다 많은 메타 데이터를 비디오에 저장하거나 FLV가 지원하지 않는 오디오 코덱을 사용할 때 사용됩니다. FLV의 단순성과 스트리밍 디자인은 MP4를 사용해야 할 이유가 없다면 좋은 선택입니다.

플래시의 타임 라인 스크러빙에 관해서는, 플래시를 코딩하지 않았기 때문에 왜 그렇게하는지 알지 못하지만, 노브를 사용하거나 파일을 찾기 위해 어도비의 스트리밍 서버와 특별히 작동하는 것일 수 있습니다. 또한 성가신 사용자가 디스크에 파일을 보관하지 못하게하는 방법으로도 작동합니다.


당신이 이미 알고있는 것들 :

사이 근본적인 차이가 있습니다 FLVMP4(일명 isomedia) 용기. FLV는 처음부터 스트리밍 컨테이너로 Adobe에 의해 고안되었으며 실제로 매우 간단 합니다. 비디오 패킷을 보낸 다음 오디오 패킷을 보낸 다음 비디오 패킷을 보내는 것뿐입니다. 그러나 아주 적은 코덱 만 지원하며 밀리 초 단위의 타임 스탬프 이외의 메타 데이터는 지원하지 않습니다. MP4 관련 기능이 필요하지 않은 경우 FLV를 사용하면됩니다.

반면 ISO 미디어는 Apple의 MOV 컨테이너를 기반으로합니다. 원자로 분리되어 있으며, 다른 원자 를 읽기 moov전에 해독해야하는 특정 원자가 있습니다. MP4에서 발생하는 문제 moov는 파일의 끝 부분에 아톰이 작성되어 프로그램 인코딩에 훨씬 쉽습니다. qtfaststart 와 같은 도구가 있습니다.이 도구 moov는 파일의 시작 부분에 원자 를 배치하는 데 필요한 뭉킹 을 수행 합니다. 따라서 파일은 시작하기 전에 완전히 다운로드하지 않고 데이터가있는 즉시 재생을 시작합니다.


0

mov 컨테이너를 사용하는 경우 모듈을 설치하거나 flv 컨테이너에 배치하고 모듈을 사용할 필요없이 즉시 스트리밍됩니다. 그냥 내 생각 mov를 사용하고 적절한 MIME 유형을 추가하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.