특정 log2_max_frame_num_minus4 값으로 h.264 비디오를 인코딩하도록 ffmpeg를 구성하려면 어떻게해야합니까? 비디오 세그먼트를 연결하는

HLS 비디오 세그먼트를 연결하는 프로젝트를 진행 중입니다. HLS 표준에는 편리하게 # EXT-X-DISCONTINUITY 지시문이 포함되어있어 플레이어가 다른 SPS 또는 PPS를 가진 비디오를 준비해야한다는 신호를 보냅니다 (인코딩 된 해상도를 변경하면 그러한 것이 필요함).

Apple iPad에서는 혼합 스트림이 잘 재생됩니다.

불행하게도, 우리가 목표로하는 장비는 HLS 사양의이 부분을 구현하지 못합니다. 두 클립 모두 장치에서 독립적으로 재생할 수 있지만 동일한 HLS 스트림의 일부인 경우 장치가 오작동합니다 (보조 클립을 렌더링하는 것을 거부하고 기본에서 미디어로 돌아온 후 렌더링을 다시 시작 함) 클립).

지금 우리는 통제가 덜한 클립과 일치하도록 클립 중 하나를 다시 인코딩하는 것을 고려하고 있습니다. ffmpeg를 사용하여 h.264 프로필 수준을 설정하려면 어떻게합니까? 의 답변을 사용하여 프로필과 수준을 이미 조정할 수있었습니다 .

이제 log2_max_frame_num_minus4를 조화시켜야합니다. 이 값으로 5를 사용하도록 ffmpeg에 알리려면 어떻게해야합니까?



답변

당신은 할 수 없습니다. 그렇게하려면 x264 (H.264 인코더)를 다시 프로그래밍해야합니다.

encoder/set.c누군가 가이 값을 설정하기위한 것이 아니라고 생각하기 때문에 소스 ( ) 로 이동하여 하드 코딩해야합니다.

또는 SPS에서 해당 값에 해당하는 바이트를 수동으로 수정하면 H.264 구문이 손상 될 수 있습니다 (다른 매개 변수는 해당 값에 따라 달라지기 때문에).