当前位置: 首页 > news >正文

青岛城阳网站制作网站建设详细步骤

青岛城阳网站制作,网站建设详细步骤,123房产网,网站建设 电子书前言 本文主要介绍自研的RtmpStreamSender.dll#xff0c;rtmp库提供接口接收裸流数据#xff0c;支持将裸流数据封装为flv格式并通过rtmp协议发流。 关于rtmp协议基础介绍可查看#xff1a;https://blog.csdn.net/www_dong/article/details/131026072 关于rtmp收流介绍可…前言 本文主要介绍自研的RtmpStreamSender.dllrtmp库提供接口接收裸流数据支持将裸流数据封装为flv格式并通过rtmp协议发流。 关于rtmp协议基础介绍可查看https://blog.csdn.net/www_dong/article/details/131026072 关于rtmp收流介绍可查看https://blog.csdn.net/www_dong/article/details/135073488 设计 主要流程 rtmp服务端启动tcp端口:1935监听创建rtmp server对象rtmp客户端发起tcp连接连接成功后等到收流rtmp服务端以动态库的形式呈现提供SendData接口有上层应用调用时塞入数据rtmp服务端接收数据将数据封装为flv格式rtmp服务端将flv格式的流发送给rtmp客户端rtmp客户端将数据解复用、解码和播放 流程 创建tcp、启动端口监听 int RtmpServerThread(void* param) {assert(param);CRtmpStreamSender* receiver (CRtmpStreamSender*)param;receiver-RtmpServerWorker();return 0; }int CRtmpStreamSender::InitRtmpSession_() {if (0 ! ParseUrl_()){printf(parse url failed\n);return -1;}do{m_tcpServer std::make_sharedZDTcpServer(nullptr, this);if (!m_tcpServer.get()|| 0 ! m_tcpServer-TcpCreate()|| 0 ! m_tcpServer-TcpBind(m_rtmpPort)|| 0 ! m_tcpServer-TcpListen(5)){break;}m_command std::make_sharedCRtmpServerCommand(m_tcpServer);if (!m_command.get()|| 0 ! m_command-Create()){break;}m_thread std::thread(RtmpServerThread, this);return 0;} while (0);Stop();return 0; }// 在线程中等待连接 void CRtmpStreamSender::RtmpServerWorker() {bool bAccept false;while (m_running){if (!bAccept){if (0 m_tcpServer-TcpAccept()){bAccept true;}continue;}std::this_thread::sleep_for(std::chrono::seconds(5));} }创建rtmp server // CRtmpServerCommand:librtmp封装类 m_command std::make_sharedCRtmpServerCommand(m_tcpServer); if (!m_command.get()|| 0 ! m_command-Create()) {break; }// 创建rtmp server int CRtmpServerCommand::Create() {// 创建flv复用对象m_flvMuxer flv_muxer_create(SendRtmpDataMutexFLV, this);if (!m_flvMuxer)return -1;struct rtmp_server_handler_t handler;memset(handler, 0, sizeof(handler));handler.send SendCallback;// 创建rtmp serverm_rtmp rtmp_server_create(this, handler);if (!m_rtmp)return -1;return 0; }数据封装 // 上层通过SendData塞数据 int CRtmpStreamSender::SendData(void* data, int len, char* codec) {if (!m_command.get())return -1;return m_command-InputData(data, len, codec); }// 数据做flv封装 int CRtmpServerCommand::InputData(void* data, int len, const std::string codec) {if (!m_flvMuxer || !data || len 0 || codec.empty())return -1;int ret -1;if (0 codec.compare(H264)){ret flv_muxer_avc(m_flvMuxer, data, len, 0, 0);}else if (0 codec.compare(H265)){ret flv_muxer_hevc(m_flvMuxer, data, len, 0, 0);}else if (0 codec.compare(AAC)){ret flv_muxer_aac(m_flvMuxer, data, len, 0, 0);}return 0; }发送数据 int CRtmpServerCommand::Package(int type, const void* data, size_t bytes, uint32_t timestamp) {if (!m_rtmp || !data || bytes 0)return -1;int ret -1;if (FLV_TYPE_AUDIO type){ret rtmp_server_send_audio(m_rtmp, data, bytes, timestamp);}else if (FLV_TYPE_VIDEO type){ret rtmp_server_send_video(m_rtmp, data, bytes, timestamp);}else if (FLV_TYPE_SCRIPT type){ret rtmp_server_send_script(m_rtmp, data, bytes, timestamp);}if (0 ! ret)return ret;return 0; }资源销毁 void CRtmpServerCommand::Destroy() {if (m_rtmp){rtmp_server_destroy(m_rtmp);m_rtmp nullptr;}if (m_flvMuxer){flv_muxer_destroy(m_flvMuxer);m_flvMuxer nullptr;} }
http://www.zqtcl.cn/news/544649/

相关文章:

  • 先做网站再付款 怎么回答设计方案步骤
  • 汕头建站模板济南网站建设富库网络
  • 创业网站建设方案项目书手机app设计软件
  • 建设端午节网站的目的主题wordpress语法高亮插件
  • 做网站开发使用百分比的好处深圳建设网站公司简介
  • 行距网站上海专业网站建设机构
  • 闵行手机网站建设鲅鱼圈规划建设局网站
  • 合肥市城乡和建设网站网页设计与网站建设区别
  • 青岛网站建设企业建站北京网站模仿
  • 广州建设网站的公司简介湛江建设厅网站
  • 做网站不赚钱了网站关键词排行查询
  • 印度人通过什么网站做国际贸易三门峡做网站
  • 网站排名快速提升工具招远建网站首选公司
  • 手机网站格式商城网游开发公司
  • 手机怎样创建网站长春网站建设哪家专业
  • 做pop网站定制开发教程
  • 成都响应式网站建报告问题
  • 做设计找素材的+网站有哪些建立平台什么意思
  • 网站设置在哪里找宁德网站建设制作
  • logo网站设计素材品牌高端网站建设公司
  • 芙蓉区乡建设局网站郑州网站建设qicaizz
  • 网站建设的缺陷个人网站制作图片
  • 四川省建设厅注册管理中心网站设计上海2021门票
  • 帝国cms做微网站人力资源公司怎么开
  • 网站建设学徒松江品划做网站公司
  • 灯饰网站需要这么做深圳专业网站设计公司
  • 政务网站设计wordpress 嵌入html5
  • 移动网站 pc网站的区别吗网站建设工厂
  • 有意义网站织梦圈子如何调用网站默认模板
  • 南京公司网站模板建站网页制作中的网站维护