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

咨询公司网站模板淘客优惠券网站建设

咨询公司网站模板,淘客优惠券网站建设,下载微信小程序app,网站建设飠金手指科杰十五前言 本文主要介绍自研的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/139478/

相关文章:

  • 二手网站建设论文答辩校园官方网站如何制作
  • 高科技展厅效果图设计商丘 峰少 seo博客
  • 太原网站优化工具方法广州天河 网站建设
  • 西安市做网站公司有哪些秦皇岛网站制作
  • 用ps做美食网站河北网站设计制作
  • 怎么做自己网站的APIwordpress memcache
  • 昆山高端网站建设机构公司展厅装修效果图
  • 服务器怎样建设网站中国建设银行货币基金网站
  • 沈阳专业制作网站公司吗万盛集团网站建设
  • 做汽车价格的网站东莞官方网站建设
  • 方案策划网站企业做推广可以发哪些网站
  • 天河网站建设世界建筑设计公司排名
  • 电商网站制作价格和硕网站建设
  • 深圳市门户网站建设哪家好微信小程序案例源码
  • 信息产业部icp备案中心网站asp网站制作教程
  • 品牌网站建设的意义建站公司联系电话
  • 网站建设 备案什么意思哪里有做效果图的网站
  • 教你免费申请个人网站html网站建设方案
  • 网站运营方案怎么写?在线制作手机网站
  • 微信html5模板网站哪个网站有手机
  • 网站知名度网站广东省备案系统
  • 柯桥区网站建设湖南人文科技学院
  • 建设一个网站需要哪些福田企业网站推广哪个好
  • 网站外链建设的15个小技巧中国农业建设中心网站
  • 交易平台网站怎么做wordpress 置顶 函数
  • 义乌市场官方网站jsp做就业网站
  • 推荐网站在线看兄弟们企业概况简介
  • 软装设计方案网站网站制作排名优化
  • 网站前端模板专业建站报价
  • 站长工具星空传媒怎么做游戏网站编辑