FFmpeg RTP拉流分析

原因:由于上次简单分析了一下RTP推流,并创建了一个简单demo用于RTP推流,为了检测RTP推流故在此简单实现一个播放器用于播放RTP流.

概述:通过url创建解码器,但是由于没有使用sdp作为信息传递,故解码器信息需要在接收到sps和pps后,才会被真实填充,通过获取的音视频的pts进行音视频通过,重点为pts的时间戳转换。

下面进行伪代码分析:可以看出流程为常规流程,通过打开url获取对应的AVFormatContext对象,内部会进行udp创建,随后获取并打开解码器,但是此时解码器内部参数为空,只有在avcodec_send_packet函数解析出sps和pps后,才会进行参数赋值.

char *url = "rtp://127.0.0.1:1234";
char *url_a = "rtp://127.0.0.1:1236";

int ir = avformat_open_input(&pFormatCtx, url, nullptr, nullptr);

ir = avformat_find_stream_info(pFormatCtx, nullptr);

ir = avcodec_open2(pCodecCtx, pCodec,nullptr);

int ir = avcodec_send_packet(pCodecCtx, &pkt);

avcodec_receive_frame(pCodecCtx, pFrame)

获取到音视频数据后目前是通过SDL进行绘制,具体代码如下:下面为音频输出,可以看出首先需要配置SDL_AudioSpec.如果配置的参数属性和真实接收到的数据不匹配,则需要进行重采样变换后才能正确输出.

int iSDL = SDL_Init(SDL
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值