CN114173205A - 一种在小程序上播放rtsp音视频流的方法 - Google Patents
一种在小程序上播放rtsp音视频流的方法 Download PDFInfo
- Publication number
- CN114173205A CN114173205A CN202111480819.9A CN202111480819A CN114173205A CN 114173205 A CN114173205 A CN 114173205A CN 202111480819 A CN202111480819 A CN 202111480819A CN 114173205 A CN114173205 A CN 114173205A
- Authority
- CN
- China
- Prior art keywords
- stream
- nginx
- audio
- rtsp
- video
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 20
- 238000006243 chemical reaction Methods 0.000 claims abstract description 13
- 238000005070 sampling Methods 0.000 claims description 6
- 238000012544 monitoring process Methods 0.000 claims description 5
- 238000005538 encapsulation Methods 0.000 claims description 3
- 239000003795 chemical substances by application Substances 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 239000012634 fragment Substances 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/60—Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client
- H04N21/63—Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
- H04N21/643—Communication protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/231—Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
- H04N21/23103—Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion using load balancing strategies, e.g. by placing or distributing content on different disks, different memories or different servers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
- H04N21/2343—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/238—Interfacing the downstream path of the transmission network, e.g. adapting the transmission rate of a video stream to network bandwidth; Processing of multiplex streams
- H04N21/2385—Channel allocation; Bandwidth allocation
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本发明公开了一种在小程序上播放RTSP音视频流的方法,涉及互联网流媒体技术领域,解决了现有视频播放方案只能应用于浏览器中,无法用在小程序中且难以支撑大批量用户同时看音视频直播的问题问题,包括以下步骤:步骤1:部署两台或两台以上Linux服务器,搭建Nginx流媒体服务器集群;步骤2:部署一台Linux服务器,基于FFmpeg搭建FFmpeg流媒体转换服务器;步骤3:用户使用微信小程序对Nginx流媒体服务器集群进行RTMP拉流成功后自动播放,本发明一种在小程序上播放RTSP音视频流的方法提供一种能够在微信小程序上播放,且能支撑大批量用户同时看音视频直播的方法,具有巨大的实际应用价值。
Description
技术领域
本发明涉及互联网流媒体技术领域,更具体的是涉及一种在小程序上播放RTSP音视频流的方法。
背景技术
随着互联网用户消费内容和交互方式的升级,支撑这些内容和交互方式的基础设施也正在发生变革,5G的商用以及移动手持设备硬件性能的提升,使得在用户手机上播放实时音视频成为可能,微信小程序是一种用户不需要下载安装即可使用的移动应用,实现了应用“触手可及”的梦想。在实际应用中,音视频厂商普遍提供的是对RTSP协议的支持,但在微信小程序中,播放实时音视频流目前仅支持flv、RTMP协议。
专利CN107197386A公开了一种无客户端的跨平台视频播放实现方法,步骤包括:1、客户端向流媒体服务器发起视频请求;2、流媒体服务器对Web客户端请求进行解析处理;3、Web客户端向流媒体服务器发起HTTP请求;4、流媒体服务器通过HTTP协议传递特定视频分片至Web客户端;5、Web客户端解析视频分片内容并播放;服务端只需将原始视频流按照MPEG-DASH规范打包处理,客户端无需单独实现解码;用户仅借助浏览器,无需安装特定客户端或第三方插件,即可在Windows、Linux、Android、iOS等不同平台下完成视频的调阅,安装部署简单,用户体验度高。
但其方法只能应用于浏览器中,无法运用微信小程序实现“触手可及”的梦想,另外此方法没有提到集群,难以支撑大批量用户同时观看音视频直播,因此,研究一种让RTSP协议的音视频流能够在微信小程序上播放,且能支撑大批量用户同时看音视频直播的方法,具有巨大的实际应用价值。
发明内容
本发明的目的在于:为了解决现有视频播放方案只能应用于浏览器中,无法用在小程序中且难以支撑大批量用户同时看音视频直播的问题,本发明提供一种在小程序上播放RTSP音视频流的方法。
本发明为了实现上述目的具体采用以下技术方案:
一种在小程序上播放RTSP音视频流的方法,包括以下步骤:
步骤1:部署两台或两台以上Linux服务器,所述Linux服务器均安装有Nginx,搭建Nginx流媒体服务器集群,其中一台Linux服务器作为Nginx负载均衡器,作为集群代理,其他Linux服务器作为Nginx流媒体服务器,所述Nginx流媒体服务器还安装带有带监听端口的第三方模块nginx-rtmp-module,接收RTMP拉流和推流请求;
步骤2:部署一台Linux服务器,基于FFmpeg搭建FFmpeg流媒体转换服务器,将原始RTSP音视频流处理转换后以RTMP协议推流到Nginx流媒体服务器集群;
步骤3:用户使用微信小程序作为客户端,通过调用live-player组件对Nginx流媒体服务集群进行RTMP拉流,拉流成功后自动播放。
进一步地,步骤1中部署四台或四台以上Linux服务器。
进一步地,步骤1中的Nginx流媒体服务器在第三方模块nginx-rtmp-module中开启application live。
进一步地,步骤2中对原始RTSP音视频流处理转换的具体步骤如下:
步骤21:FFmpeg通过-rtsp_transport tcp输入参数指定以TCP的方式对原始RTSP音视频流进行拉流;
步骤22:FFmpeg通过-i输入参数指定原始RTSP音视频流地址;
步骤23:FFmpeg通过缺省的解码格式,即由FFmpeg自行判断原始RTSP音视频流的编码格式,将原始RTSP视频解码为像素数据,将原始RTSP音频解码为采样数据;
步骤24:FFmpeg通过-vcodec输出参数将像素数据编码为指定格式的目标视频码流,通过-acodec输出参数将采样数据编码为指定格式的目标音频码流;
步骤25:FFmpeg通过-f flv输出参数将目标视频码流和目标音视码流封装为flv格式;
步骤26:对flv格式的封装,FFmpeg通过tee协议输出多路流,再以RTMP协议推流到Nginx流媒体服务器集群。
进一步地,步骤23中原始RTSP音视频流的编码与转换后的视频编码相同,则无需解码后再编码。
进一步地,步骤3中调用live-player组件的具体步骤如下:
步骤31:设置src参数,指向Nginx流媒体服务器集群地址,进行RTMP拉流;
步骤32:设置mode参数为RTC;
步骤33:设置autoplay参数为开启。
本发明的有益效果如下:
1.本发明能让RTSP协议的音视频流能够在微信小程序上播放,实际应用中,音视频厂商普遍提供的是对RTSP协议的支持,但在微信小程序中,播放实时音视频流目前仅支持flv、RTMP协议,因此本发明通过部署一台Linux服务器,基于FFmpeg搭建FFmpeg流媒体转换服务器,对原始RTSP音视频流解码后重新编码为指定格式的目标音视频码流,再将目标视频码流和目标音视码流封装为flv格式,通过tee协议输出多路流,以RTMP协议推流到Nginx流媒体服务器集群,用户使用微信小程序作为客户端,通过调用live-player组件对Nginx流媒体服务器集群进行RTMP拉流,拉流成功后即可自动播放。
2.本发明能支撑大批量用户同时看音视频直播,本发明部署两台或两台以上Linux服务器,搭建Nginx流媒体转换服务器集群,集群系统控制器能把有限的信道动态地、自动地最佳分配给系统的所有用户,为系统的全体用户共用,具有自动选择信道功能,其中一台服务器作为Nginx负载均衡器,作为集群代理,接收到客户端RTMP拉流请求后根据客户端IP地址的Hash值决定最终请求到哪台Nginx流媒体服务器。
附图说明
图1是本发明的工作流程示意图;
图2是本发明的Nginx流媒体服务器集群示意图;
图3是本发明的FFmpeg流媒体转换服务器示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
本发明一种在小程序上播放RTSP音视频流的方法,如图1所示,包括以下步骤:
步骤1:部署两台或两台以上Linux服务器,所述Linux服务器均安装有Nginx,搭建Nginx流媒体服务器集群,其中一台Linux服务器作为Nginx负载均衡器,作为集群代理,其他Linux服务器作为Nginx流媒体服务器,所述Nginx流媒体服务器还安装带有带监听端口的第三方模块nginx-rtmp-module,接收RTMP拉流和推流请求;
如图2所示,部署四台Linux服务器,搭建Nginx流媒体服务器集群,Nginx是一款自由的、开源的、高性能的反向代理服务器,可以用于反向代理进行负载均衡的实现。
其中一台服务器作为Nginx负载均衡器,通过Nginx的server模块配置对外的代理端口,用于接收到客户端RTMP拉流请求,再对集群配置转发策略:hash$remote_addrconsistent,即根据客户端IP地址的Hash值决定最终请求到哪台Nginx流媒体服务器。
其他三台服务器作为Nginx流媒体服务器,使用Nginx的stream模块,将这三台服务器的IP及RTMP端口配置到一个组,这样就实现了将这三台服务器加入到Nginx流媒体服务器集群,所述Nginx流媒体服务器配置带有监听端口的第三方模块nginx-rtmp-module,在nginx-rtmp-module模块中开启application live后,会指定一个路径application/live,对这个路径下的请求进行监听,接收RTMP推流和拉流请求。
集群系统控制器能把有限的信道动态地、自动地最佳分配给系统的所有用户,为系统的全体用户共用,具有自动选择信道功能。
Nginx流媒体服务器配置带有监听端口的第三方模块nginx-rtmp-module,有两个作用:
1)接收FFmpeg的RTMP音视频推流;
2)对小程序的RTMP推流请求作出响应。
步骤2:部署一台Linux服务器,基于FFmpeg搭建FFmpeg流媒体转换服务器,将原始RTSP音视频流处理转换后以RTMP协议推流到Nginx流媒体服务器集群;
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。在实际应用中,音视频厂商普遍提供的是对RTSP协议的支持,但在微信小程序中,播放实时音视频流目前仅支持flv、RTMP协议,因此本发明通过部署一台Linux服务器,基于FFmpeg搭建FFmpeg音视频转换服务,对原始RTSP音视频流处理转换后以RTMP协议推流到Nginx流媒体服务器集群。
步骤3:用户使用微信小程序作为客户端,通过调用live-player组件对流媒体服务集群进行RTMP拉流,拉流成功后自动播放;
调用live-player组件的具体步骤如下:
步骤31:设置src参数,指向Nginx流媒体服务器集群地址,进行RTMP拉流;
步骤32:设置mode参数为RTC,采用RTC模式播放,时延较低;
步骤33:设置autoplay参数为开启。
实施例2
如图3所示,对原始RTSP音视频流处理转换的具体步骤如下:
步骤21:FFmpeg通过-rtsp_transport tcp输入参数指定以TCP的方式对原始RTSP音视频流进行拉流;
步骤22:FFmpeg通过-i输入参数指定原始RTSP音视频流地址;
步骤23:FFmpeg通过缺省的解码格式,即由FFmpeg自行判断原始RTSP音视频流的编码格式,将原始RTSP视频解码为像素数据,将原始RTSP音频解码为采样数据;
步骤24:FFmpeg通过-vcodec输出参数将像素数据编码为指定格式的目标视频码流,通过-acodec输出参数将采样数据编码为指定格式的目标音频码流;
步骤25:FFmpeg通过-f flv输出参数将目标视频码流和目标音视码流封装为flv格式;
步骤26:对flv格式的封装,FFmpeg通过tee协议输出多路流,再以RTMP协议推流到Nginx流媒体服务器集群。
如果满足下列条件,则可以简化解码、编码的过程,进而提升转换效率:
1.如果原始RTSP流的视频编码与转换后RTMP流的视频编码相同,则可以通过FFmpeg的-vcodec copy参数以拷贝的方式完成视频转换,无需解码后再编码。
2.如果原始RTSP流的音频编码与转换后RTMP流的音频编码相同,则可以通过FFmpeg的-acodec copy参数以拷贝的方式完成音频转换,无需解码后再编码。
Claims (6)
1.一种在小程序上播放RTSP音视频流的方法,其特征在于,包括以下步骤:
步骤1:部署两台或两台以上Linux服务器,所述Linux服务器均安装有Nginx,搭建Nginx流媒体服务器集群,其中一台Linux服务器作为Nginx负载均衡器,作为集群代理,其他Linux服务器作为Nginx流媒体服务器,所述Nginx流媒体服务器还安装带有带监听端口的第三方模块nginx-rtmp-module,接收RTMP拉流和推流请求;
步骤2:部署一台Linux服务器,基于FFmpeg搭建FFmpeg流媒体转换服务器,将原始RTSP音视频流处理转换后以RTMP协议推流到Nginx流媒体服务器集群;
步骤3:用户使用微信小程序作为客户端,通过调用live-player组件对Nginx流媒体服务集群进行RTMP拉流,拉流成功后自动播放。
2.根据权利要求1所述的一种在小程序上播放RTSP音视频流的方法,其特征在于,步骤1中部署四台或四台以上Linux服务器。
3.根据权利要求1所述的一种在小程序上播放RTSP音视频流的方法,其特征在于,步骤1中的Nginx流媒体服务器在第三方模块nginx-rtmp-module中开启application live。
4.根据权利要求1所述的一种在小程序上播放RTSP音视频流的方法,其特征在于,步骤2中对原始RTSP音视频流处理转换的具体步骤如下:
步骤21:FFmpeg通过-rtsp_transport tcp输入参数指定以TCP的方式对原始RTSP音视频流进行拉流;
步骤22:FFmpeg通过-i输入参数指定原始RTSP音视频流地址;
步骤23:FFmpeg通过缺省的解码格式,即由FFmpeg自行判断原始RTSP音视频流的编码格式,将原始RTSP视频解码为像素数据,将原始RTSP音频解码为采样数据;
步骤24:FFmpeg通过-vcodec输出参数将像素数据编码为指定格式的目标视频码流,通过-acodec输出参数将采样数据编码为指定格式的目标音频码流;
步骤25:FFmpeg通过-f flv输出参数将目标视频码流和目标音视码流封装为flv格式;
步骤26:对flv格式的封装,FFmpeg通过tee协议输出多路流,再以RTMP协议推流到Nginx流媒体服务器集群。
5.根据权利要求4所述的一种在小程序上播放RTSP音视频流的方法,其特征在于,步骤23中原始RTSP音视频流的编码与转换后的视频编码相同,则无需解码后再编码。
6.根据权利要求1所述的一种在小程序上播放RTSP音视频流的方法,其特征在于,步骤3中调用live-player组件的具体步骤如下:
步骤31:设置src参数,指向Nginx流媒体服务器集群地址,进行RTMP拉流;
步骤32:设置mode参数为RTC;
步骤33:设置autoplay参数为开启。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111480819.9A CN114173205A (zh) | 2021-12-06 | 2021-12-06 | 一种在小程序上播放rtsp音视频流的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111480819.9A CN114173205A (zh) | 2021-12-06 | 2021-12-06 | 一种在小程序上播放rtsp音视频流的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114173205A true CN114173205A (zh) | 2022-03-11 |
Family
ID=80483508
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111480819.9A Pending CN114173205A (zh) | 2021-12-06 | 2021-12-06 | 一种在小程序上播放rtsp音视频流的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114173205A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117435338A (zh) * | 2023-10-15 | 2024-01-23 | 三一智能装备有限公司 | 负载均衡方法、装置、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019019370A1 (zh) * | 2017-07-24 | 2019-01-31 | 平安科技(深圳)有限公司 | 一种音视频的直播处理方法、存储介质和一种移动终端 |
CN111324462A (zh) * | 2020-02-20 | 2020-06-23 | 杭州梦视网络科技有限公司 | 一种具有Web负载均衡技术的系统及方法 |
CN112822435A (zh) * | 2019-11-15 | 2021-05-18 | 中兴通讯股份有限公司 | 一种用户可轻松接入的安防方法、装置及系统 |
CN113110933A (zh) * | 2021-03-11 | 2021-07-13 | 浙江工业大学 | 一种具有Nginx负载均衡技术的系统 |
-
2021
- 2021-12-06 CN CN202111480819.9A patent/CN114173205A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019019370A1 (zh) * | 2017-07-24 | 2019-01-31 | 平安科技(深圳)有限公司 | 一种音视频的直播处理方法、存储介质和一种移动终端 |
CN112822435A (zh) * | 2019-11-15 | 2021-05-18 | 中兴通讯股份有限公司 | 一种用户可轻松接入的安防方法、装置及系统 |
CN111324462A (zh) * | 2020-02-20 | 2020-06-23 | 杭州梦视网络科技有限公司 | 一种具有Web负载均衡技术的系统及方法 |
CN113110933A (zh) * | 2021-03-11 | 2021-07-13 | 浙江工业大学 | 一种具有Nginx负载均衡技术的系统 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117435338A (zh) * | 2023-10-15 | 2024-01-23 | 三一智能装备有限公司 | 负载均衡方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10250664B2 (en) | Placeshifting live encoded video faster than real time | |
EP3000215B1 (en) | Live media processing and streaming service | |
CN112073423A (zh) | 基于WebRTC进行浏览器推流的方法及系统 | |
CN102118428B (zh) | 一种播放流媒体的方法和系统 | |
KR101821123B1 (ko) | 웹브라우저 상에서 미디어 스트림을 재생하는 방법 및 장치 | |
CN107197386B (zh) | 一种无客户端的跨平台视频播放实现方法 | |
CN112839238B (zh) | 投屏播放方法、装置和存储介质 | |
US8817983B2 (en) | Streaming video to cellular phones | |
US10326813B2 (en) | Processing of live multimedia content and/or data streams over a communication network | |
WO2015192683A1 (zh) | 一种基于码流自适应技术的内容分发方法、装置及系统 | |
CN110062268A (zh) | 一种音视频同屏播放的发送和接收处理方法及装置 | |
KR101821124B1 (ko) | 웹브라우저 상에서 미디어 스트림을 재생하는 방법 및 장치 | |
CN107276990B (zh) | 一种流媒体直播方法及装置 | |
CN107547517B (zh) | 音视频节目录制方法和网络设备及计算机装置 | |
CN113132194A (zh) | 一种信息流转方法、装置、设备、服务器及存储介质 | |
CN114173205A (zh) | 一种在小程序上播放rtsp音视频流的方法 | |
CN104581234A (zh) | 一种机顶盒及基于机顶盒实现媒体数据转码的方法和系统 | |
US9871840B2 (en) | Electronic apparatus and method for transferring contents on cloud system to device connected to DLNA | |
CN114025191A (zh) | 一种基于Nginx-rtmp的webrtc低延迟直播方法及系统 | |
CN111711870B (zh) | 一种跨网络边界的实时流传输方法 | |
CN113556612A (zh) | 一种浏览器上播放h.265视频流的方法及系统 | |
CN101335851A (zh) | 一种可以通过网络观看视频直播的网络电视接收机 | |
CN115150642B (zh) | 通信方法、服务器、电子设备和存储介质 | |
CN115134664A (zh) | 实时视频流的播放方法及系统、非易失性存储介质 | |
CN112073727B (zh) | 转码方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20220311 |
|
RJ01 | Rejection of invention patent application after publication |