문제

파일 중간에 플래시 플레이어에 H.264로 인코딩된 비디오를 제공하기 시작하는 무언가를 구축해야 합니다(아직 버퍼링되지 않은 비디오 지점으로 건너뛰는 것을 지원하기 위해).

현재 비디오는 FLV 컨테이너 형식이지만 트랜스코딩은 옵션입니다.주어진 바이트 오프셋에 대한 파일 헤더와 메타데이터 정보를 다시 작성했습니다.이는 오래된 비디오에는 작동하지만 H.264로 인코딩된 파일에는 작동하지 않습니다.나는 파일 내부의 비디오 태그도 변경해야 하기 때문에 이것이 가능하지 않다고 생각합니다(처리 능력이 너무 많이 필요함).

이를 수행하는 "올바른" 방법은 무엇입니까?

도움이 되었습니까?

해결책

플래시 플레이어는 MOOV Atom을 다운로드한 후에만 H.264 비디오 재생을 시작할 수 있습니다.기존 의사 스트리밍 공급자는 FLV 헤더(파일의 처음 13바이트 또는 하드코딩된 헤더)를 제공한 다음 지정된 오프셋에서 파일을 제공합니다.H.264 의사 스트리머를 만들려면 FLV 헤더, MOOV Atom을 출력하고 지정된 오프셋에서 파일의 나머지 부분을 제공해야 합니다.FLV 컨테이너를 사용하지 않는 경우 FLV 헤더는 필요하지 않지만 MOOV Atom은 여전히 ​​필요합니다.

불행하게도 디스크에 있는 파일의 MOOV Atom을 사용할 수 없을 것 같습니다.포함된 정보는 귀하가 제공하는 파일 조각에 적합하지 않습니다.따라서 기존 원자를 구문 분석하고 파일의 제공되는 부분에 적합한 자체 원자를 생성해야 합니다.

H.264 파일 내에 복잡한 구조가 있는 경우 의사 스트림이 훨씬 더 복잡해질 수 있습니다.파일을 구문 분석하는 것이 불가능할 경우 미디어를 의사 스트리밍하지 못할 수도 있습니다.

다른 팁

@yoavf - OP는 FLV 파일 내부의 주문형 h.264 스트리밍의 서버 측 측면에 관심이 있다고 생각합니다.내 생각엔 기존 플레이어를 재사용하는 것이 그에게 좋을 것 같아요.아니면 내 자신의 필요가 드러나는 것일 수도 있습니까?<:S

yoavf의 두 번째 링크에는 Tinic Uro의 또 다른 링크가 있습니다. 웹상의 비디오에 무슨 일이 일어났나요? .관련 인용문:

H.264 스트림을 기존 FLV 파일 구조에 배치할 수 있습니까?그렇게 되겠지만 우리는 모든 사람이 새로운 표준 파일 형식을 채택할 것을 강력히 권장합니다.H.264를 스트리밍할 때 FLV 구조에는 파일 형식을 재설계하지 않으면 극복할 수 없는 기능적 한계가 있습니다.이것이 우리가 전통적인 FLV 파일 구조에서 벗어나는 이유 중 하나입니다.FLV 스트림에서는 특히 시퀀스 헤더와 엔더를 처리하는 것이 까다롭습니다.

따라서 ffmpeg 인코딩을 수정하거나(나처럼 FLV를 얻는 방법인 경우) 새로운 형식을 사용할 수 있는 것 같습니다.흠....

당신이 할 수 있는 두 가지 일:

1) lighttpd를 사용하면 필요한 스트리밍 컨테이너를 즉시 생성하는 mp4 스트리밍 플러그인이 제공됩니다.

2) 키프레임 FLV를 만들고 의사 스트리밍 스크립트(예: XMOOV)를 사용하여 파일을 스트리밍합니다.

mp4/aac가 필요한 경우 FLV 컨테이너에 넣을 수 있습니다. Adobe에서는 아쉽지만 작동합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top