android端rtp流接收问题ijkplay解析提示缺少sdp

有个功能,我接收到了电子后视镜传来的数据。数据是rtp协议传来的,rtp里面是h264 。我用ijkplay把地址设为ijkMediaPlayer.setDataSource(rtp://127.0.0.1:5004),会提示Unable to receive RTP payload type 96 without an SDP file 如下图。意思缺少sdp 。电子后视镜开发人员用的vlc 打开个.sdp文件打开播放的。他说没问题。这.sdp文件也给我了。

我自己模拟用 命令模拟rtp : ffmpeg -re -i 222.h264 -vcodec copy -f rtp rtp://192.168.28.150:5006>test.sdp 也会保存个sdp,直接用 ijkMediaPlayer.setDataSource(“rtp://192.168.28.150:5006”); 也会报错缺少sdp错误。
请问在ijkPlayer中用什么方法, 怎么把这个test.sdp 设置上去 正常播放,麻烦谁具体说明下,非常感谢?

img

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    回答:

    增加SDP文件:

    在ijkplayer中设置SDP文件,可以通过avformat_open_input函数中的options传入的方式进行设置。具体代码如下:

    AVDictionary *options = NULL;
    av_dict_set(&options, "probesize", "50", 0);
    av_dict_set(&options, "udp_max_size", "1316", 0);
    av_dict_set(&options, "rtsp_transport", "tcp", 0);
    av_dict_set(&options, "rtsp_flags", "prefer_tcp", 0);
    av_dict_set(&options, "allowed_media_types", "video", 0);
    av_dict_set(&options, "rtsp_initial_pause", "1", 0);
    av_dict_set(&options, "sdp_file", "xxx.sdp", 0);
    AVFormatContext *format_ctx = NULL;
    avformat_open_input(&format_ctx, url, NULL, &options);
    

    其中,sdp_file参数即为设置SDP文件的参数。

    沟通问题:

    如果数据源确实有问题,我们需要与后视镜开发人员进行沟通,具体需要提出以下问题:

    1. 数据源的具体格式是什么?如RTP、RTCP、RTSP等。
    2. 数据源的编码方式是什么?如H.264、H.265等。
    3. 数据源的码率是多少?
    4. 数据源是否遵循相应的标准协议规范?
    5. 是否有其他需要注意的问题?

    根据后视镜开发人员提供的信息,我们可以进行相应的修改建议,如调整编码方式、码率等,以便更好地接收数据源。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^