有个功能,我接收到了电子后视镜传来的数据。数据是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 设置上去 正常播放,麻烦谁具体说明下,非常感谢?
回答:
增加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文件的参数。
沟通问题:
如果数据源确实有问题,我们需要与后视镜开发人员进行沟通,具体需要提出以下问题:
根据后视镜开发人员提供的信息,我们可以进行相应的修改建议,如调整编码方式、码率等,以便更好地接收数据源。