live555
文章平均质量分 81
王二の黄金时代
碰到问题,就解决问题
展开
-
ubuntu 上vscode gdb可视化源码调试live555
要捋清楚源码,不得不说这个live555的风格还是很奇怪的,一段时间没动回过来看几乎又不知所云了,跑着跑着就崩溃了,所以这次准备在ubuntu 上,vscode 可视乎debug一下live555.vscode, 完美替代甚至超出了source insight, 重要的是,免费,三平台通用,各种插件加持下不仅可以编辑,格式化,提示补全,还可以debug原创 2022-08-24 22:17:01 · 1398 阅读 · 0 评论 -
<二:使用,接收端> android NDK使用live555+Mediacodec播放RTSP视频流
将上传到github:这里做个简短的说明:以前有写过一篇 《android播放rtsp视频流app, demo app .使用live555+MediaCodec》,用的是 vlc里面编译出来的 live555库,然后将数据拷贝到java层,在java层用mediacode 解码渲染。现有空给优化下,自行编译的最新版live555库+ndk native层使用mediacode直接解码渲染。效果用之前编译得到的 testH264VideoStreamer 作为推流端,该app作为拉流播放端,.原创 2021-08-03 13:51:45 · 1687 阅读 · 4 评论 -
<一 编译> ndk 编译live555 for android
一:编译live555给android使用,概况个人总结两个方法:一:自己编写 Android.mk 或者是 CMakeLists.txt , 把源码里面的文件都加进来用ndk-build或camek编译。(工作量稍大,另一个问题是如果live555源码有更新,这里升级修改起来也不方便,本人之前即使用这种方式,csdn上有很多都是介绍使用Androd.mk方式编译,主要是live555源码比较少,依赖也不多。)二:根据live555 官方自身提供的编译命令,修改配置使其使用ndk交叉编译器编译。..原创 2021-08-03 10:44:26 · 1505 阅读 · 2 评论 -
<二:使用 ,接收端>live555 拉流 udp 重排序
使用live555 拉流,在基于udp的rtp流情况下, 面对udp不稳定不可靠的传输层,需要做rtp乱序重排的处理。live555 rtp接受端,在代码:liveMedia/MultiFramedRTPSource.cpp 内部类ReorderingPacketBufferprivate: unsigned fThresholdTime; // uSeconds重排序等待的缓冲时间,fThreadholdTime, 单位微秒, 默认值 100 ms可以通过接口设置:参考 te...原创 2021-07-29 17:01:59 · 1280 阅读 · 0 评论 -
<三:使用,推流端>live555-从buffer读取h264推流
使用live555库推流h264,一般从testOnDemandRTSPServer.cpp 修改而来,不过其中都是通过从本地文件,或作类似文件描述符“fd”源中读数据,这类数据源,需要对数据源进行分析处理,拿h264裸文件来说,就需要根据NAL 00 00 00 01 来切分出一帧帧的数据,这是一个消耗资源的操作,如果我们是已经就绪的h264帧数据在内存里,就不需要这一部分,否则造成明显的推流延...原创 2019-12-12 14:38:18 · 3599 阅读 · 4 评论 -
live555 服务端推流自动断开
使用live555作为服务端推流,基于udp传输时比较正常,但切换tcp 经常一段时间后自己断开。原因一: 服务端故意为之。rtsp 协议的传输使用tcp,在RTSPserver.hh, RTSPServer的构造函数中有:class RTSPServer: public GenericMediaServer {public: static RTSPServer* createNew...原创 2019-12-06 11:56:08 · 2840 阅读 · 1 评论 -
live555推流----局域网延迟的分析
============20191212--追加---------以下主要追究发送比较大的网络数据时多次调用 系统调用send而产生的耗时问题,不过对于实际上传输音视频实时流的使用场景,往往数据不会这么大,延迟的性能瓶颈主要不在于此========================最近在做局域网投屏相关,发现使用vlc做推流和接受,延迟过大(1s以上),改用live555推流和接受,延迟还是过大...原创 2019-11-18 11:41:39 · 5408 阅读 · 4 评论 -
<三:使用,推流端>live555源码分析——RTSP服务端发送数据流程
一直有个疑惑,发送rtp数据的时间间隔在哪里控制的,onDemandServer 从文件中读取h264,aac等,也没有看到sleep,wait等等。但是播放依然是匀速的。【live555使用单线程任务驱动的方式,scheduleDelayedTask(int64_t microseconds,...) 这个就可以添加一个延迟指定时间执行的任务】拿aac ADTSAudioFileSource....原创 2019-11-14 11:17:38 · 1093 阅读 · 0 评论 -
live555类图
//补充一张完整的关系图分析testOnDemandRTSPServer.cpp,以test.264文件作为输入源,发布rtsp。区分不同的输入,是h264还是aac等,即在sms->addSubsession(H264VideoFileServerMediaSubsession ::createNew(*env, inputFileName, reuseFirstSource));...原创 2019-11-06 16:10:39 · 737 阅读 · 0 评论 -
live555官方源码和测试文件下载
http://www.live555.com/liveMedia/public/例如测试 rtsp推送aac视频。在testProgs目录,放入上诉路径下载的test.aac测试源文件,执行服务端程序# ./testOnDemandRTSPServer按照服务程序的提示,执行测试程序:#./testRTSPClient rtsp://192.168.43.154:8554/aacAud...原创 2019-11-02 14:55:06 · 1048 阅读 · 0 评论 -
从零编写rtsp-client端
目录简介:github工程源码:rtsp协议简介rtsp相关的一些问题简介:使用live555接受rtsp流,发现在 使用udp传输的过程中,h264数据丢帧,播放端花屏,起初以为是网络不好出现udp丢包,可是局域网环境下也不至于如此严重。换低码流的数据倒是ok, 传输 1920x1080 @30fps 码率在600KByte/s 的h264视频流,从live555接...原创 2019-10-23 16:08:55 · 5243 阅读 · 0 评论 -
android播放rtsp视频流app, demo app .使用live555+MediaCodec
用libvlc提供的库播放rtsp,总是延迟比较大(局域网的情况下,存在明显的画面延时),netcaching设置为0还是存在延迟,但是网络延迟已经比较低了,没办法,自己写了一个APP,现在只测试了接受一个视频流的rtp流,没有音频。延迟较低,总的播放延迟基本在网络部分。原理:1.0 解码播放端:使用android 的MediaCodec 播放h264流,先行使用h264裸流文件模拟网络流进行...原创 2019-09-23 18:04:28 · 8684 阅读 · 5 评论 -
vlc读取rtsp流-源码分析---时间戳dts的计算
h264流中有两个概念,pts,dts: vlc源码分析--播放速度控制原理,pts,dts vlc 使用插件的形式开发,读取rtsp流时,会根据url地址解析,加载 liblive555_plugin.so 插件,作为demuxer使用,输入线程 (input.c 中)会调用 demuxer的 demux() 函数,驱动其解复用。liblive555_plugin.so的源码文件,在 /...原创 2019-09-02 15:23:48 · 2723 阅读 · 0 评论 -
<三:使用,接收端>live555--接收端 testRTSPClient.cpp 源码分析-读取rtsp流demo
testRTSPClient.cpp 位于live555源码目录 live/testprogs目录下,编译出来 testRTSPClient可以直接用来接收流,不过这个流接受之后只是打印一下信息,然后丢弃,并没有存储到什么文件。例如:#testRTSPClient rtsp://192.168.43.154:8989/stream分析源代码:RTSPClient.cpp 中封装有sen...原创 2019-07-03 16:27:00 · 2755 阅读 · 2 评论 -
<三:使用,推流端>live555--服务端 testOnDemandRTSPServer 源码分析
live555 源码框架结构,源码版本最后修改日期:2018-12-13 21官方相关图解连接:http://www.live555.com/liveMedia/doxygen/html/inherits.html相关的文章比较多,不过光看别人的介绍很难理解,自己拿源码看,边看边作图理清楚结构关系,再和他人的文章对比下图解是否有误,这样学起来效果不错。:从 testOnDeman...原创 2019-01-22 16:51:48 · 1314 阅读 · 0 评论 -
修改live555支持从缓冲区读取h264帧 (纠正下是 h264 slice)
==2023.1.1 追加,归纳总结一下,作为复习的提要:实现新的MediaSubsession,覆盖实现其中的虚函数createNewStreamSource() ,用来创建source . 覆盖 实现 其中的虚函数createNewRTPSink() 用来创建sink实现自己的 FrameSource, 实现其中的虚函数 doGetNextFrame(),在这个里面把自己的h264数据拷贝到 fTo 缓冲区,并且赋值成员变量fFrameSize 、时间戳、最大帧数据大小等等原创 2019-01-28 15:37:33 · 4547 阅读 · 2 评论