문제

그래서 ...

로컬 파일의 RTSP를 통해 캡처 된 원시 H.264 비디오 데이터가 있으며 Java FX 응용 프로그램에서 비디오를 재생하려고 시도하고 있습니다. 이렇게하려면 HTTP Live Streaming을 사용해야합니다.

은 .m3u8 (HLS 인덱스) 파일 및 .TS (MPEG-TS) 파일 컬렉션을 포함하는 로컬 폴더를 사용하여 로컬 서버를 사용하여 로컬 서버를 사용하여 HLS를 통해 비디오를 재생할 수있는 Java FX 아키텍처를 성공적으로 프로토 타입으로했습니다. 나를위한 마지막 부분은 .TS 파일을 .264 / .h264 파일과 로컬 서버에서 바꾸는 것입니다. H.264 Annex B 데이터의 변환 / 포장을 MPEG-TS로 수행하는 것입니다.

H.264 Annex B를 MPEG-TS로 얻는 데 필요한 것을 알아내는 데 어려움을 겪고 있습니다. 나는 다음 정보를 찾았습니다 ...

"Annex B는 일반적으로 라이브 및 스트리밍 형식으로 사용됩니다. 전송 스트림 ... "

szatmary.org/blog/25

"annal of document의 부속서는 NAL을 포장하는 그러한 형식을 지정합니다. 전통적인 MPEG 비디오 초등학교와 닮은 형식의 단위 스트림, 따라서 MPEG와 같은 컨테이너와 함께 사용하기에 적합합니다. PS / TS 필수 프레임을 제공 할 수 없습니다 ... "

wiki.multimedia.cx/?title=h.264

"Java FX는 여러 가지 미디어 유형을 지원합니다. 미디어 유형은 컨테이너 형식과 하나 이상의 조합으로 간주됩니다. 인코딩. 어떤 경우에는 컨테이너 형식이 단순히 인코딩 된 데이터가 포함 된 기본 스트림. "

docs.oracle.com/javafx/2/api/javafx/scene/media/package-summary.html

"ext-x-stream-inf 태그의 코덱 속성을 사용하십시오.이 경우 속성이 있으므로 필요한 모든 코덱과 프로파일이 포함되어야합니다. 스트림을 재생하려면 ... "

developer.apple.com/library/ios/documentation/networkinginternet/conceptual/streamingmediaguide/frequentyaskedquestions/frequentyaskequestions.html

초등화 및 수송 스트림 주위에 간단한 것을 놓치고있는 것처럼 보입니다. FFMPEG를 사용하여 H.264 파일을 TS 파일로 변환하고 차이점을 이해하려고합니다. 나는 대략적인 형식 차이점에 대한 아이디어를 가지고 있지만, 나는 그것을하기 위해 자세한 내용이 없어집니다. 누구든지 MPEG-TS를 통해 H.264 부속서 B 데이터를 제공하는 방법에 대해 간단한 링크가있는 링크가 있습니까?

도구를 사용하지 않으려 고하지 않고 H.264 Annex B 데이터를 구문 분석하고 메모리에서 메모리의 형식 변경을 수행하는 위치에서 사용자 정의 파일 형식을 로컬로 가져야합니다. 나는 이것을 달성하기 위해 파이프가있는 ffmpeg를 사용하는 방법을 알고 있지만, 어떤 종속성과 성능이 중요하지 않기를 원하지 않습니다.

도움이 되었습니까?

해결책

형식이 변경되지 않습니다.그것은 컨테이너입니다.Annex B를 구문 분석하여 TS 파일에 쓸 필요가 없습니다.TS는 부속서 B 스트림을 래핑하는 PES를 래핑합니다.MPEGTS 형식은 특히 제 3 자 라이브러리가없는 꽤 복잡합니다.내가 작성한 TS 코드는 약 1000 줄의 C ++입니다.

TS 코드를 작성하려면 Hex Editor를 사용하여 TS 파일을 읽고 Wikipedia 문서를 참조하여 시작하십시오.책 비디오 demystified 에도 훌륭한 문서를 가지고 있습니다.

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