HLS 비디오 세그먼트 합병증. ffmpeg를 사용하여 전송 스트림을 만드는 방법


2

h264 비디오가 있으며 현재 Apple의 HTTP 비디오 스트리밍 도구 및 미디어 파일 세그먼트를 사용하여 이러한 파일을 분할하고 있습니다. 내가해야 할 일은 이 매우 인기있는 오픈 소스 세그 먼터를 기반으로 대체 세그 먼터로 전환하는 것입니다

문제는이 세그 먼터가 비디오를 가져 오는 것이 아니라 MPEG-TS 비디오 만 가져 간다는 것입니다. h264 비디오를 TS로 먼저 변환해야합니다.

ffmpeg로 할 수 있습니다. 나는 이것을 사용하고있다 :

ffmpeg -i encoded.mp4 -vcodec h264 -i encoded.mp4 -sameq -acodec aac -strict experimental -f mpegts output.ts  

그러나 이것은 상당히 큰 출력을 만듭니다. 그 이유는 Apple의 세그 먼터가 동일한 코덱-AVC 및 동일한 오디오 코덱-AAC를 유지하는 반면 ffmpeg는 비디오 형식을 MPEG 비디오로 변경하기 때문입니다.

문제는 어떻게 든 동일한 AVC 비디오 코덱을 유지하면서 비디오를 전송 스트림으로 변환 할 수 있습니까?

그래서 제 목표는 Apple의 medifilesegmenter와 동일한 비디오 품질과 동일한 비디오 코덱을 유지하는 것입니다.

UPD : 좋아요 ... ffmpeg CAN이 비디오를 세그먼트로 분할하는 것 같습니다 :

ffmpeg -i encoded.mp4 -c copy -map 0 -vbsf h264_mp4toannexb -f segment -segment_time 10 -segment_list test.m3u8 -segment_format mpegts segment%d.ts

그것은 여전히 ​​하나의 문제가 있습니다 : 그것은 http live streaming index 파일을 생성하지 않습니다. (-segment_list는 세그먼트 목록이있는 파일을 작성하지만 HLS 색인처럼 보이지는 않습니다.) 따라서 여전히 색인 파일을 만들어야합니다

답변:


5

시험:

ffmpeg -i in.mp4 -acodec copy -vcodec copy out.ts

Ffmpeg에는 세그 먼터도 있습니다. http://ffmpeg.org/ffmpeg.html#segment_002c-stream_005fsegment_002c-ssegment를 참조 하십시오.


네, 지금 알고 있지만 HLS를 준수합니까? 올바른 .m3u8 인덱스 파일을 만들지 않기 때문에 묻습니다. 그래서 당신은 여전히 ​​어떻게 그것들을 만들어야합니다. 나중에 오늘은 m3u8을 수동으로 생성하여 분할 된 비디오를 재생하려고합니다.
iLemming

@agzam : 여기 HLS에 대한 사양입니다 tools.ietf.org/html/draft-pantos-http-live-streaming-08
user319862

@agzam : tools.ietf.org/html/… 간단한 m3u8의 모습을 보여줍니다
user319862

2

설정 시도 -segment_list_typem3u8. 그것의 모양에서 볼 때까지 세그먼트 기간이 목록에 추가되지 않기 때문에 정적 파일 변환에는 적합하지만 라이브 스트림에는 적합하지 않습니다 close_list.

목록 유형은 현재 릴리스의 목록 이름 파일 확장자에서 설정해야하지만 그렇지 않습니다.


2

설정을 시도 -segment_list_flags live


1
이것에 대해 자세히 설명해 주시겠습니까? 감사.
fixer1234
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.