jrtplib 打包做了哪些事_使用jrtplib打包发送h264数据,关使用vlc|mplayer播放 | 学步园...

本文介绍了如何使用jrtplib库将H264视频流解析为NAL单元,打包成RTP数据包,并通过mplayer或VLC进行播放。主要步骤包括解析H264数据、创建RTP会话、添加目的地、设置RTP参数,以及使用FU指示器和FU头部处理大NAL单元。提供了关键代码示例。
摘要由CSDN通过智能技术生成

前段时间写了个测试程序,使用jrtplib,把h264打成标准的rtp数据包,并能通过vlc,mpalyer等播放器播放出来。这中间主要的难点是解析h264数据中的nal单元,并把nal单元打成rtp包,之后的事情都是jrtplib库做了。然后就可以通过播放器播放出来了。

使用播放器播放时使用以下命令:

mplayer player.sdp

或者

用vlc打开player.sdp

对于rtp打包不懂的同学,可以仔细看下这个包里面的文档和一个rtp打包的代码,这是我上传的资源。

http://download.csdn.net/detail/xyyangkun/6990313

主要的代码贴出来:

/*

* test_jrtp.cpp

*

* Created on: 2014-2-19

* Author: xy

*/

#include "rtpsession.h"

#include "rtpsessionparams.h"

#include "rtpudpv4transmitter.h"

#include "rtpipv4address.h"

#include "rtptimeutilities.h"

#include "rtppacket.h"

#include

#include

#include "h264.h"

#define SSRC 100

#define DEST_IP_STR "127.0.0.1"

#define DEST_PORT 9000

#define BASE_PORT 2222

using namespace jrtplib;

int main(int argc, char** argv)

{

RTPSession session;

RTPSessionParams sessionparams;

sessionparams.SetOwnTimestampUnit(1.0/90000.0);

RTPUDPv4TransmissionParams transparams;

transparams.SetPortbase(8000);

int status = session.Create(sessionparams,&transparams);

if (status < 0)

{

std::cerr << RTPGetErrorString(status) << std::endl;

exit(-1);

}

uint8_t localip[]={127,0,0,1};

RTPIPv4Address addr(localip,9000);

status = session.AddDestination(addr);

if (status < 0)

{

std::cerr << RTPGetErrorString(status) << std::endl;

exit(-1);

}

session.SetDefaultPayloadType(96);

session.SetDefaultMark(false);

session.SetDefaultTimestampIncrement(90000.0 /25.0);

RTPTime delay(0.040);

RTPTime starttime = RTPTime::CurrentTime();

NALU_HEADER*nalu_hdr;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值