media-server icon indicating copy to clipboard operation
media-server copied to clipboard

rtp组帧frame数据

Open wsx958191 opened this issue 3 years ago • 5 comments

你好,大佬,我这边有个rtp包组包成帧数据送入解码进行解码,目前使用的rtp_payload_decode_create 输入rtp数据,每次回调函数被调用的时候不是完整的frame的数据,这个我该怎么处理呢?

wsx958191 avatar Feb 28 '22 15:02 wsx958191

可以参考librtsp/source/utils/rtsp-demuxer.c,这里实现了常见264、265、aac音视频帧组帧功能。

ireader avatar Mar 01 '22 00:03 ireader

感谢,我还想咨询下rtp_payload_decode_create这个作用是用来组包的吗?

wsx958191 avatar Mar 01 '22 02:03 wsx958191

rtp_payload_decode_create 可以用来组包,但组的包不一定是完整视频帧。

比如264的视频帧可能会由多个nal组成,每个nal可以拆分成多个rtp包。rtp_payload_decode_create 函数只能将多个rtp包组成一个nal,但是不能将多个nal组成一个完整的264视频帧。

组帧需要用到rtsp-demuxer.

ireader avatar Mar 01 '22 02:03 ireader

好的,明白了,非常感谢. 我理解下来应该是这样。 1 创建rtp_demuxer_create(100, 90000, payload, encoding, rtp_demuxer_test_onpacket, &ctx) 2 送入rtp数据 rtp_demuxer_input 3 回调接收数据 rtp_demuxer_test_onpacket 这里面进来应该是frame数据了

wsx958191 avatar Mar 01 '22 05:03 wsx958191

rtp-demuxer只是处理了rtp包乱序,rtsp-demuxer才有组帧功能。

用rtsp-demuxer, librtsp目录下的,不是rtp-demuxer。

ireader avatar Mar 01 '22 05:03 ireader