社区
吴涛的课程社区_NO_1
RTSP实时音视频开发实战
帖子详情
rtsp server rtp封包H264/H265/AAC代码实现-02
剑门微雨
2023-02-05 11:08:57
课时名称
课时知识点
rtsp server rtp封包H264/H265/AAC代码实现-02
rtsp server rtp封包H264/H265/AAC的介绍和代码实现
...全文
295
回复
打赏
收藏
rtsp server rtp封包H264/H265/AAC代码实现-02
课时名称课时知识点rtsp server rtp封包H264/H265/AAC代码实现-02rtsp server rtp封包H264/H265/AAC的介绍和代码实现
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
5
RTP
之
AAC
封包
和解包1
1. 需要将
aac
的前7个(或9个)字节的ADTS去掉,即是跳过adts header 5. 从第17字节开始就是payload(去掉ADTS的
aac
数据)数据
openrtxp.zip
openrtxp是一个小型的
rtsp
/rtmp协议的rtxp
server
, ANSI C语言开发,方便移植到嵌入式系统如IPCam. 功能list: (1)支持
H2
64
+
AAC
编码格式
封包
成
RTSP
/RTMP,可以使用VLC/VLC网页控件播放,RTMP可以用VLC/flash player/kmplayer播放. 支持
RTP
over TCP/UDP. (2)
RTSP
/RTMP的URL可配置,缺省URL如下: VOD点播(文件回放):
rtsp
://192.168.2.62/playback/test.mp4 直播:
rtsp
://192.168.2.62/stream/0 RTMP的url和
RTSP
一致,只需要把"
rtsp
"修改为"rtmp" 图像延迟在250ms左右. (4)同时支持基于UDP/TCP的TS流直播. (5)移植很方便,只需要编写约7个直播流获取Audio/Video的函数即可. (6)支持DVR功能,通过简单的调用,即可
实现
把直播流保存到硬盘中(支持.mp4/.ts格式) (7)所有
代码
为纯C
代码
,可移植性强。 移植很方便,只需要编写约7个直播流获取Audio/Video的函数即可. int liveInit(); int liveUninit(); void* liveCreate(char* filename,void* prv,double* duration,unsigned int* video_codec,unsigned int* video_width,unsigned int* video_height,unsigned int* video_fps,unsigned int* video_bps,unsigned int* audio_codec,unsigned int* audio_samplerate,unsigned int* audio_channels,unsigned int* audio_bps); int liveGetHeaderPacket(void* hdl,int data_type,char* buf); int liveGetVideoPacket(void* hdl,char* buf,double* pts,int* sync); int liveGetAudioPacket(void* hdl,char* buf,double* pts); int liveDestroy(void* hdl); FAQ: 1.为什么要用ffmpeg和ssl? 答:ssl是rtmp协议要用到。ts流,mp4文件都是由ffmpeg中的方法来
实现
的。如果去掉这两个lib,就支持不了rtmp,.ts,.mp4等功能。 libssl和libcrypto则是rtmp要使用的,修改configs.h 和Makefile就可以很容易地去掉。 playback/DVR/TS功能要用到ffmpeg lib的支持,修改configs.h和Makefile也很容易去掉ffmpeg,但这三项功能就
实现
不了。 去掉openssl和ffmpeg后,编译出来的image size在83KB左右。 2.如何支持底层的多通道?比如一个是1080P ch,一个是CIF ch. 答:通过live->idx = idx=atoi(filename);来区分不同的hw path。 3.如何支持多session或多个client连接? 答:来一个session,就调用liveCreate()来生成一个live实体。 liveCreate()的时候每次都是malloc()一个新的instance,那个instance包含一个
h2
64
enc指针和一个rd。
h2
64
enc指针内部有一个wr,也就是说所有的流都共享一个
h2
64
enc指针,但每个流的rd是独立的。 第二次liveCreate()的时候,
h2
64
enc指针已经有了,就不需要再次建立
h2
64
enc指针了,直接引用就可以了(因此
h2
64
enc内部要做引用计数) 每多调用一次liveCreate(),
h2
64
enc->ref++。 每调用一次liveDestroy(),就
h2
64
enc->ref--,==0的时候就真正destroy
h2
64
enc。
C++ 通过FFmpeg将
rtsp
视频流到本地mp4文件.zip
C++ 通过FFmpeg将
rtsp
视频流到本地mp4文件,源
代码
仅供参考。
基于ZLMediaKit C API封装, 几行
代码
实现
流媒体服务集成
基于ZLMediaKit C API封装, 几行
代码
实现
流媒体服务集成
TS流封装(live555+f
aac
).rar
使用live555的test
RTSP
Client来进行网络实时流获取,采用
H2
64
+
AAC
文件方式封装ts流文件。
吴涛的课程社区_NO_1
2
社区成员
96
社区内容
发帖
与我相关
我的任务
吴涛的课程社区_NO_1
专注音视频领域技术研究,具有实时音视频技术开发经验以及H264/H265编解码算法优化,SIMD(avx/avx2/neon)指令集优化等相关经验。
复制链接
扫一扫
分享
社区描述
专注音视频领域技术研究,具有实时音视频技术开发经验以及H264/H265编解码算法优化,SIMD(avx/avx2/neon)指令集优化等相关经验。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章