live555--服务器,客户端(转载)

24V供电D1047/B817对管AB类音频功放设计与制作全解析 音频功率放大器是电子系统将微弱音频信号放大驱动扬声器的核心电路,其核心原理是通过晶体管或集成电路对信号进行电压和电流放大。从技术价值看,优秀的功放设计需兼顾效率、保真度与稳定性,AB类放大器便是经典折中方案,它在A类低失真与B类高效率间取得平衡。在应用场景上,这类电路广泛应用于家用音响、多媒体音箱、车载音频及DIY音频项目。本文聚焦于一个采用24V直流供电、以D1047和B817互补对管为核心输出级的AB类功放实例,深入剖析其**电路设计**与**元件选型**,涵盖从BC547小信号放大、偏置设置、PCB布 阅读详情

本文转自http://blog.youkuaiyun.com/gavinr/article/details/7050797


原文:http://blog.youkuaiyun.com/evsqiezi/article/details/7895715

服务器

用live555中的库写了一个最简单的RTSPServer程序,仅用于学习目的。从下例的代码中,可以清析的明白RTSPServer的函数调用流程。

[cpp]  view plain copy
  1. static ServerMediaSession* createNewSMS(UsageEnvironment& env, char const* fileName);    
  2. int main()    
  3. {    
  4.     TaskScheduler* scheduler;    
  5.     UsageEnvironment* env ;    
  6.     RTSPServer* rtspServer;    
  7.     ServerMediaSession* sms;    
  8.     //创建任务调用器     
  9.     scheduler = BasicTaskScheduler::createNew();    
  10.     //创建交互环境     
  11.     env = BasicUsageEnvironment::createNew(*scheduler);    
  12.     //创建RTSP服务器     
  13.     rtspServer = RTSPServer::createNew(*env,554);    //使用554端口     
  14.     if(rtspServer == NULL)    
  15.     {    
  16.         rtspServer = RTSPServer::createNew(*env,8554);   //554端口被占用,就使用8554端口   
  17.     }    
  18.     //打印服务器地址     
  19.     *env << "Play streams from this server using the URL\n\t"    
  20.          << rtspServer->rtspURLPrefix() << "<filename>.\n";    
  21.     //创建session     
  22.     sms = createNewSMS(*env, "test.mpg");    
  23.     rtspServer->addServerMediaSession(sms);    
  24.     //添加其它文件对应的session...     
  25.     //进行事件循环     
  26.     env->taskScheduler().doEventLoop(); // does not return     
  27.     return 0;    
  28. }    
  29.     
  30. static ServerMediaSession* createNewSMS(UsageEnvironment& env, char const* fileName)    
  31. {    
  32.     char const* extension = strrchr(fileName, '.');    
  33.     ServerMediaSession* sms = NULL;    
  34.     Boolean reuseSource = False;    //不重用source     
  35.     sms = ServerMediaSession::createNew(env, fileName);  //创建一个session     
  36.     //     
  37.     //在session中添加subssesion     
  38.     //     
  39.     if(strcmp(extension, ".aac") == 0)    
  40.     {    
  41.         sms->addSubsession(ADTSAudioFileServerMediaSubsession::createNew(env, fileName, reuseSource));    
  42.     }    
  43.     else if(strcmp(extension, ".264") == 0)    
  44.     {    
  45.         sms->addSubsession(H264VideoFileServerMediaSubsession::createNew(env, fileName, reuseSource));    
  46.     }    
  47.     else if(strcmp(extension, ".mpg") == 0)    
  48.     {    
  49.         MPEG1or2FileServerDemux* demux    
  50.           = MPEG1or2FileServerDemux::createNew(env, fileName, reuseSource);    
  51.         sms->addSubsession(demux->newVideoServerMediaSubsession());    
  52.         sms->addSubsession(demux->newAudioServerMediaSubsession());    
  53.     }    
  54.     //添加其它媒体格式支持...     
  55.     return sms;    
  56. }  


客户端

首先是OPTION
然后是DESCRIBE
建立Media Session,调用的函数是 MediaSession::createNew,在文件liveMedia/MediaSession.cpp中实现。为这个Media Session建立RTPSource,这是通过调用 MediaSubsession::initiate来实现的的,这个方法在liveMedia/MediaSession.cpp中实现。
在然后是SETUP
最后是PLAY
rtp数据的句柄:MultiFramedRTPSource::networkReadHandler 在liveMedia/MultiFramedRTPSource.cpp中
rtcp数据处理的句柄:RTCPInstance::incomingReportHandler 在liveMedia/RTCP.cpp中
rtp数据处理的句柄的设置:MultiFramedRTPSource: oGetNextFrame 在liveMedia/MultiFramedRTPSource.cpp中, 被FileSink::continuePlaying调用在FileSink.cpp中.
rtcp数据处理的句柄设置fRTCPInstance = RTCPInstance::createNew 在/liveMedia/MediaSession.cpp中调用,
createNew调用了构造函数RTCPInstance::RTCPInstance,这个构造函数有如下调用
TaskScheduler::BackgroundHandlerProc* handler = (TaskScheduler::BackgroundHandlerProc*)&incomingReportHandler; 

通过分析live库提供的例子程序OpenRTSP,可以清晰地了解客户端接收来自网络上媒体数据的过程。注意,RTP协议和RTCP协议接收的数据分别是视音频数据和发送/接收状况的相关信息,其中,RTP协议只负责接收数据,而RTCP协议除了接收服务器的消息之外,还要向服务器反馈。
A.        main函数流程
main(int argc,char *argv[])
{
1.            创建BasicTaskScheduler对象
2.            创建BisicUsageEnvironment对象
3.            分析argv参数,(最简单的用法是:openRTSP rtsp://172.16.24.240/mpeg4video.mp4)以便在下面设置一些相关参数
4.            创建RTSPClient对象
5.            由RTSPClient对象向服务器发送OPTION消息并接受回应
6.            产生SDPDescription字符串(由RTSPClient对象向服务器发送DESCRIBE消息并接受回应,根据回应的信息产生SDPDescription字符串,其中包括视音频数据的协议和解码器类型)
7.            创建MediaSession对象(根据SDPDescription在MediaSession中创建和初始化MediaSubSession子会话对象)
8.            while循环中配置所有子会话对象(为每个子会话创建RTPSource和RTCPInstance对象,并创建两个GroupSock对象,分别对应 RTPSource和RTCPInstance对象,把在每个GroupSock对象中创建的socket描述符置入 BasicTaskScheduler::fReadSet中,RTPSource对象的创建的依据是SDPDescription,例如对于MPEG4 文件来说,视音频RTPSource分别对应MPEG4ESVideoTRPSource和MPEG4GenericRTPSource对象。 RTCPInstance对象在构造函数中完成将Socket描述符、处理接收RTCP数据的函数 (RTCPInstance::incomingReportHandler)以及RTCPInstance本身三者绑定在一个 HandlerDescriptor对象中,并置入BasicTaskScheduler::fReadHandler中。完成绑定后会向服务器发送一条消息。)
9.            由RTSPClient对象向服务器发送SETUP消息并接受回应。
10.        while循环中为每个子会话创建接收器(FileSink对象),在FileSink对象中根据子会话的codec等属性缺省产生记录视音频数据的文件名,视音频文件名分别为:video-MP4V-ES-1和audio-MPEG4-GENERIC-2,无后缀名
11.        while循环中为每个子会话的视音频数据装配相应的接收函数,将每个子会话中的RTPSource中的GroupSock对象中的SOCKET描述符,置入BasicTaskScheduler::fReadSet中,并将描述符、处理接收RTP数据的函数 (MultiFramedRTPSource::networkReadHandler)以及RTPSource本身三者绑定在一个 HandlerDescriptor对象中,并置入BasicTaskScheduler::fReadHandler中,并将FileSink的缓冲区和包含写入文件操作的一个函数指针配置给RTPSource对象,这个缓冲区将会在networkReadHandler中接收来自网络的视音频数据(分析和去掉RTP包头的工作由RTPSource完成),而这个函数指针在networkReadHandler中被调用以完成将缓冲区中的数据写入文件。
12.        由RTSPClient对象向服务器发送PLAY消息并接受回应。
13.        进入while循环,调用BasicTaskScheduler::SingleStep()函数接受数据,直到服务器发送TREADOWN消息给客户端,客户端接收到该消息后释放资源,程序退出。

全志平台Sensor驱动移植实战:从点亮到调优的完整指南 本文详细介绍了在全志平台上进行Sensor驱动移植的全过程,从硬件引脚配置到软件参数调优,涵盖点亮、出图和调优三大阶段。重点解析了OV02B10传感器的I2C通信建立、上电时序调试和初始化参数配置等关键技术点,并提供了实用的调试技巧与问题排查指南,帮助开发者高效完成全志平台Sensor驱动移植工作。 阅读详情

相关推荐

NA400与昆仑通态MODBUS/TCP通讯调试说明

点击增加设备通道,弹出窗口进行设置,通道类型选择“0区输出继电器”,通道地址为1,通道个数为1,读写方式为读写。点击增加设备通道,弹出窗口进行设置,通道类型选择“4区输出寄存器”,数据类型选择“16位 无符号二进制”,通道地址为21001,通道个数为1,读写方式为读写。5.添加设备通道:双击莫迪康MODBUSTCP子设备,点击添加设备通道,根据Modbus规约地址表进行参数的设置,表格可在NAPro软件帮助中查看,如下图所示。然后可以在设备通道调试数据中观察到Q1的值为1,NW1的值678,表示通讯成功。

weixin_44281509的博客 2490

live555传输实时h264视频流和mp3音频流

主要是利用live555的rtsp服务器发送实时视频和音频流,并扩大视频buffer的容量来防止视频帧较大时出现数据丢失的问题。 h264的实时视频流 live555的h264视频流是参考https://blog.youkuaiyun.com/caoshangpa/article/details/53200527 主要是创建服务器的时候 sms->addSubsession(H264VideoFi...

风斜夜的博客 5426

python123题目——个税计算器

类型:简单分支。

m0_62488776的博客 5803

pjsip对接已编码的流

pjsip功能很强,做sip rtp语音通话库首选。在2.0之后,也支持视频。不过,它的视频功能缺省是从视频设备采集,然后进行编译,再发送出去的。假设,我们已经有了视频源,比如IP摄像机,不需要采集和编码这个过程,怎么处理呢?假设我们采用pjsip附带的pjsua为例。 通常的方法: 1 把视频源当然文件来处理,sample有。不过这种方法用的不多。 2 修改vid_stream.c,在

htjx99的专栏 5012

可视化工具--Plotly

随着信息技术的发展和硬件设备成本的降低,当今的互联网存在海量的数据,要想快速从这些数据中获取更多有效的信息,数据可视化是重要的一环。对于Python语言来说,比较传统的数据可视化模块是Matplotlib,但它存在不够美观、静态性、不易分享等缺点,限制了Python在数据可视化方面的发展。   为了解决这个问题,新型的动态可视化开源模块Plotly应运而生。由于Plotly具有动态、美观、易用、种类丰富等特性,所以一经问世就受到开发人员的喜爱。

YFater的博客 1万+

ADS谐波平衡仿真自动优化报错?三步搞定HB控件设置(附常见错误排查)

本文针对ADS谐波平衡仿真在自动优化中常见的报错问题,提供了三步核心排查法。首先检查并禁用HB控件中可能导致冲突的小信号仿真模式,其次合理化仿真频率与扫描参数设置,最后审视优化变量与目标的定义。通过精准配置HB控件以适配自动优化流程,能有效解决大多数仿真失败问题,确保非线性电路设计顺利进行。

c2d3e4f的博客 791

基于智能移动设备的IP电话软件的设计与实现

 摘  要 介绍了以Pocket PC2003为操作系统,带WiFi功能的智能移动设备平台下IP电话软件的设计方案与实现方法。实践证明,本软件具有实时性好、移植性强等优点。    关键字 智能移动设备;IP电话;PJSIP;WiFi;Pocket PC 2003  1 引言    IP电话以其低廉的价格,较好的通话质量,成为通信市场上有力的竞争者 。IP电话分为硬件电话和软

3282

stm32教程之三重ADC交错采样

ps:本文基于stm32F407ZGT6单片机 stm32F4单片机单通道采集的最大采样率为2.4M,所以有时会难以满足较高频率的采样,于是查阅芯片手册,发现stm32F4支持多重ADC采集,利用每个通道的转换时间,错位采样,从而提高采样率,最大把采样率开到2.4*3=7.2M. (去年初学ADC时研究的,基于cube和HAL库的三重ADC交错采样参考资料不多,我也是研究了一段时间,写下这篇博客希望可以帮助到更多人。) 示意图如下: 以下是官方例子的说明, In this ex...

weixin_52178036的博客 8877

live555学习笔记5

五 RTSP服务运作 基础基本搞明白了,那么RTSP,RTP等这些协议又是如何利用这些基础机制运作的呢? 首先来看RTSP. RTSP首先需建立TCP侦听socket。可见于此函数:DynamicRTSPServer* DynamicRTSPServer::createNew(UsageEnvironment&amp; env, Port ourPort, UserAuthenticatio...

wodamazi 240

第二天 原来Labview语言结构也挺自然(2.1 顺序结构)

新建项目文件StructureTest.lvproj,新建四个子VI(FlatSequence.vi、CaseStructure.vi、LoopStructure.vi、EventStructure.vi),具体新建流程可以参考1.2节。

weixin_38637405的博客 1004

【ROS2】机械臂MoveIt2

navigation2 专注于移动机器人的导航与定位,处理大范围空间的底盘运动;MoveIt2 专注于机械臂的操作规划,处理多关节协同的末端执行器运动。在复合机器人(如,移动机械臂)navigation2 负责移动到目标区域,MoveIt2 负责机械臂抓取。官网:https://moveit.picknik.ai/main/index.html。

郭老二 597

live555--testRTSPClient学习心得

最近因为公司项目的缘故,开始学习live555项目,关注client端和server端的逻辑分析,在网上看了很多资料,都是大致的讲一些,对于其内部的一些逻辑还是没有详细解释,现在把自己在学习过程中的一些心得与大家分享,如有问题,可以回帖。 下载live555开源包之后,解压,testRTSPClient所在目录为testRTSPClient.cpp目录中,我采用的是sourceInsight来阅

cheng7068的专栏 1万+

【ESP32摄像头开发实例】-视频流接入Home Assistant

在这个项目中,我们将使用ESP32-CAM板构建一个IP监控摄像头。ESP32摄像头将托管一个视频流媒体网络服务器,您可以使用网络中的任何设备进行访问。

视觉与物联智能 791

live555开发笔记(二):live555创建RTSP服务器源码剖析,创建rtsp服务器的基本流程总结

基于Live555的流媒体服务器方案源码剖析,了解基本的代码搭建步骤。

长沙红胖子 Qt・西安|省级科研团队从业背景,深耕双一流体系高精尖技术配套研发|剥离高精尖机理,沉淀高端特种行业领域 Qt 工程化落地经验|博文仅分享通用技术总结,输出公开普适工程思路。 1万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

live555开发笔记(一):live555介绍、windows上msvc2017编译和工程模板

在pc上搭建流媒体服务器软件,打开视频接受推流,使用live555方案。Live555是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了标准流媒体传输,是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了对标准流媒体传输协议如RTP/RTCP、RTSP、SIP等的支持。

长沙红胖子 Qt・西安|省级科研团队从业背景,深耕双一流体系高精尖技术配套研发|剥离高精尖机理,沉淀高端特种行业领域 Qt 工程化落地经验|博文仅分享通用技术总结,输出公开普适工程思路。 4万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

live555的rtsp服务器demo功能简单验证

live555的rtsp服务器demo功能简单验证live555的rtsp服务器一、 环境搭建篇:二、编译完成:三、测试准备四、测试:博客来源 live555的rtsp服务器 综述:Live555是一款在安防领域非常出名的推流框架,既可以作为rtsp的服务器,也可以作为客户端,这次先使用其作为推流服务器尝下鲜,我的本地环境:Ubuntu14.04; 一、 环境搭建篇: Live555官网:http://www.live555.com/ GitHub上源码位置:https://github.com/rgauf

嵌入式与人工智能 3002

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Windows系统live555MediaServer下搭建rtsp服务器

原文地址::https://www.jianshu.com/p/47770d133b61 相关文章 1、使用 Live555 搭建流媒体服务器----https://www.cnblogs.com/stulzq/p/7118598.html 2、使用 Live555 搭建流媒体服务器----https://blog.youkuaiyun.com/chenxing109/article/details/8...

xqhrs232的专栏 1087

live555学习 转载 + 原创

LIVE555不支持实时流 需要自己实现   1. RTSP连接的建立过程       RTSPServer类用于构建一个RTSP服务器,该类同时在其内部定义了一个RTSPClientSession类,用于处理单独的客户会话。       首先创建RTSP服务器(具体实现类是DynamicRTSPServer),在创建过程中,先建立Socket(ourSocket)在TCP的554 端

yxnyxnyxnyxnyxn的专栏 1070

Live555学习之(一)-------Live555的基本介绍

  前一阵子,因为项目需要,研究了一下Live555开源框架,研究的不是很深入,基本上把Live555当做API用了一下,但是毕竟也是本人看的第一个开源框架,在此记录总结一下。   Live555是一个实现了RTSP协议的开源流媒体框架,Live555包含RTSP服务器端的实现以及RTSP客户端的实现。Live555可以将若干种格式的视频文件或者音频文件转换成视频流或者音频流在网络中通...

1444

LIVE555基础介绍(转)

本文转自http://blog.youkuaiyun.com/ithzhang/article/details/38613359 转载请注明出处  LIVE555基础        LIVE555是为流媒体提供解决方案的跨平台C++开源项目。从今天起我们将正式开始深入LIVE555代码。   一、各库简要介绍     LIVE555下包含LiveMedia、Usage

domonta58的专栏 588

基于Hi3516A的H265 IPC LIVE555 开发

转载于http://m.blog.youkuaiyun.com/faihung/article/details/73008742,如有侵权,请告知删除。 1 系统工作原理 系统以Hi3516A开发平台(由高分辨率1080 p的AR0330摄像头模块和带千兆以太网功能的Hi3516A控制器模块组成硬件平台,并在硬件平台上烧写了U-Boot、Linux内核和加载了相关 驱动)作为基础,在该

主要记录嵌入式学习与开发过程。 3132

使用VLC和live555MediaServer搭建RTSP服务器

一、使用VLC搭建(转载) 服务端 1、打开“媒体——流”选项,如图所示: 2、点击“添加”按钮选择流媒体文件,然后点击“串流”按钮 3、点击“下一个”后,在“目标设置”界面选择“RTSP”,然后点击添加按钮,可以取消“激活转码”。设置端口和路径(可默认) 4、然后点击下一个可以看到基本信息。 5、最后点击“串流”即可,这是VLC会开始播放刚选择的视频文件。(注意:播放

5645

用live555做本地视频采集转发

转载于:http://blog.youkuaiyun.com/xiejiashu/article/details/8269873 用live555做本地视频采集转发 分类: 流媒体 服务器 转发 live555 2012-12-07 17:05 404人阅读 评论(2) 收藏 举报         在分别做了基于live555与Darwin两种开源服务器的转发服务器后

闲云野鹤 的专栏 1485

Source & Sink (live555)

Source &amp;amp;amp; Sink Source 和 Sink 在live555中是两个非常重要的概念. Source 发送端, 流的起点, 可直观理解为生产者, 负责读取文件或网络流的信息. Sink 接收端, 流的终点, 可理解为是消费者, 直译为水槽 . 视音频的数据从源头到最终保存到文件或显示, 整个过程就像一个水流, 从源头流呀流, 经过了条条小路, 最终流到了水槽中. Sou...

不死鸟 3746

live555 Source & Sink

Source & Sink Source 和 Sink 在live555中是两个非常重要的概念. Source 发送端, 流的起点, 可直观理解为生产者, 负责读取文件或网络流的信息. Sink 接收端, 流的终点, 可理解为是消费者, 直译为水槽 . 视音频的数据从源头到最终保存到文件或显示, 整个过程就像一个水流, 从源头流呀流, 经过了条条小路, 最终流到了水槽中. Source: 可能是RTP读取数据, 从文件中或摄像头设备中等. Sink: 数据流最终可保存在文件中, 或显示在屏幕上等.

hyl999的专栏 937

基于Live555实现RtspServer及高清高码率视频传输优化

转载:https://www.cnblogs.com/haibindev/p/9503639.html 最近做了一些pc和嵌入式平台的RTSP服务器项目,大多数的要求是简单但是功能全面,并且性能还要强劲。综合考虑后,基本都是在基于live555的基础上进行开发,在进行Live555本身的优化以及程序内部视频数据传输的优化后,不仅实现了需求而且性能还超出预期,实现了10Mbps高码率的1080p...

yaningli的博客 845
上一篇: 开发者需要的10类工具
下一篇: 安防工程师网站
labrary
博客等级 码龄15年 8粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值