video-toolbox를 사용하여 h264 스트림을 디코딩하는 iOS 앱을 만들고 있습니다. PC에서 ffmpeg로 스트림을 만들고 RTP를 사용하여 iPhone으로 전송합니다. 이 명령을 사용하여 만들 때 잘 작동합니다.-12909 인트라 리프레시가있는 h264 스트림 디코딩 오류가 발생했습니다.
ffmpeg -y -f:v rawvideo -c:v rawvideo -s 1280x720 -pix_fmt bgra -r 30 -an -i - -pix_fmt yuv420p -c:v libx264 -tune zerolatency -preset fast -b:v 5M -refs 1 -g 30 -profile:v high -level 4.1 -f rtp rtp://192.168.1.100:5678
iPhone이 모든 프레임을 수신하여 표시합니다. 내가 사용할 때 그러나 VTDecompressionSessionDecodeFrame()
가 호출 될 때
-intra-refresh 1
디코딩 오류 코드 -12909
(시뮬레이터에 -8969
) 실패 내를 새로 고침.
NAL 단위를 추출하기 위해 UDP 패킷을 처리하므로이 프로세스를 세 번 확인하고이 코드 부분에서 문제를 버렸습니다.
Video-toolbox는 인트라 새로 고침을 지원하지 않으므로 Video-toolbox가 인트라 새로 고침을 지원합니까? 그리고 만약 그렇다면, 나는 비디오 - 툴박스에 의해 지원되지 않는 스트림을 만드는 ffmpeg 쪽에서 뭔가를 놓치고 있습니까? CMVideoFormatDescriptionCreateFromH264ParameterSets()
을 사용하여 SPS 및 PPS 데이터로 작성하는 것 외에 CMVideoFormatDescriptionRef
에 뭔가를 추가해야합니까?