CN113038181B - Android平台下RTMP音视频推流中启停音频容错方法及系统 - Google Patents
Android平台下RTMP音视频推流中启停音频容错方法及系统 Download PDFInfo
- Publication number
- CN113038181B CN113038181B CN202110276764.3A CN202110276764A CN113038181B CN 113038181 B CN113038181 B CN 113038181B CN 202110276764 A CN202110276764 A CN 202110276764A CN 113038181 B CN113038181 B CN 113038181B
- Authority
- CN
- China
- Prior art keywords
- audio
- pushing
- silent
- rtmp
- frame
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 52
- 230000003068 static effect Effects 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims description 4
- 230000006870 function Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000002194 synthesizing effect Effects 0.000 description 3
- 230000003044 adaptive effect Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 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/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/433—Content storage operation, e.g. storage operation in response to a pause request, caching operations
- H04N21/4334—Recording operations
-
- 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/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/439—Processing of audio elementary streams
- H04N21/4398—Processing of audio elementary streams involving reformatting operations of audio signals
-
- 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/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/44—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
- H04N21/4402—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
-
- 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
- H04N21/6437—Real-time Transport Protocol [RTP]
-
- 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/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/81—Monomedia components thereof
- H04N21/8106—Monomedia components thereof involving special audio data, e.g. different tracks for different languages
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
本发明公开一种Android平台下RTMP音视频推流中启停音频容错方法及系统,涉及移动应用开发和流媒体技术领域,通过在录制时设置一个私有的静态成员变量和一个公开的成员方法,在推送时针对暂停音频的情况,通过静态成员变量指示和更改状态,通过成员方法调用预先录制的静默音频帧来无缝衔接音频流进行推送,克服了RTMP音视频推流过程中录制端启停音频会造成播放画面卡死、播放失败的问题。
Description
技术领域
本发明涉及移动应用开发和流媒体技术领域,是一种Android平台下RTMP音视频推流中启停音频容错方法及系统。
背景技术
随着移动互联网技术的快速发展、4G网络的全面普及和5G网络的快速部署,诞生出了众多新兴产业,其中最火热的当属直播、监控等流媒体产业。视频直播的流程大体可以分成采集、处理、编码封装、推流到服务器、服务器流分发和播放器流播放6个步骤。
采集是整个视频推流过程中的第一个环节,它从系统的采集设备中获取原始视频数据,将其输出到下一个环节。视频的采集涉及两方面数据的采集:音频采集和图像采集,它们分别对应两种完全不同的输入源和数据格式。
音频的采集过程主要通过设备将环境中的模拟信号采集成PCM编码的原始数据,然后编码压缩成MP3等格式的数据分发出去。AudioRecord是Android系统提供的用于实现录音功能的API。在Android系统中,多个进程不能同时调用AudioRecord,否则会返回错误。
图像的采集过程主要由摄像头等设备拍摄成YUV编码的原始数据,然后经过编码压缩成H.264等格式的数据分发出去。
推流是直播过程中相当重要的一步,推送协议主要有三种:RTMP,RTSP和HLS。RTMP是目前主流的流媒体传输协议,广泛用于直播领域,市面上绝大多数的直播产品都采用了这个协议。
在Android设备上进行RTMP音视频推流时,若录制端关闭音频,在播放端多数RTMP播放器会出现画面卡死,播放失败等情况。这是由于RTMP协议内部使用时间戳来进行音视频同步。同时推送音视频数据流时,时间戳会同步到音频的时间戳,当推流过程中停止推送音频时,时间戳的处理就会出错,播放器无法解析视频帧数据,导致画面会出现卡死、播放失败等情况。当需要暂停音频或者释放掉AudioRecord资源以供其他进程使用时,就不得不先停止推流,再单独推送视频数据。重启推流的过程需要一定的时间,因此连续的数据流就会出现中断,导致视频画面出现停顿或黑屏的情况,致使录制端用户体验不佳。更进一步来说,对于实时性要求较高的应用场景,这种策略会导致部分数据的丢失,可能会带来令人难以接受的损失。目前还没有一种能够在不停止视频推流的情况下启停音频的解决方案,该问题亟待解决。
发明内容
本发明旨在实现一种基于Android平台的能够在RTMP音视频推流过程中启停音频的容错方法及系统,能够解决RTMP音视频推流过程中录制端启停音频会造成播放画面卡死、播放失败的问题,扩展了流媒体技术的应用场景,提升了录制端用户体验。
为实现上述目的,本发明采用以下技术方案:
一种Android平台下RTMP音视频推流中启停音频容错方法,包括以下步骤:
Android设备在进行RTMP音视频流的录制编码时,设置一个私有的静态成员变量和一个公开的成员方法,该成员变量用于指示音频推送状态,该成员方法用于切换音频推送状态;
当在音频推送过程中暂停音频时,调用该成员方法,读取该成员变量并将该成员变量更改为暂停状态,停止音频的采集和编码,释放AudioStudio资源,推送预先准备好的静默音频帧,无缝衔接音频流进行推送;
当重新推送音频时,调用该成员方法,读取该成员变量并将该成员变量更改为推送状态,停止推送静默音频帧,重新启动AudioStduio构造函数和编码器,采集声音数据,并编码合成为音频流进行推送。
进一步地,通过将RTMP音视频流抽象成AudioStream类,在AudioStream类中设置所述成员变量和所述成员方法。
进一步地,在重新启动AudioStduio构造函数时重新配置参数,进行初始化。
进一步地,推送静默音频帧与推送音频流是在两个不同的线程中进行。
进一步地,静默音频帧采用AAC帧格式,该AAC采用ADTS的音频文件格式。
进一步地,静默音频帧的制作方法为:创建一个帧长度的字节数组,先写入ADTS头文件,剩余部分保持为空,再将数组写出到.aac后缀的文件中,组装成AAC音频文件即为静默音频帧文件。
进一步地,静默音频帧文件保存在Android工程的资源文件夹下。
本发明还提出一种Android平台下RTMP音视频推流中启停音频容错系统,包括存储器和处理器,在该存储器上存储有计算机程序,该处理器执行该程序时实现上述方法的步骤。
本发明还提出一种计算机可读存储介质,存储有计算机程序,该程序被处理器执行时实现上述方法的步骤。
本发明公开的方法通过在录制时设置一个私有的静态成员变量和一个公开的成员方法,在推送时针对暂停音频的情况,通过静态成员变量指示和更改状态,通过成员方法调用预先录制的静默音频帧来无缝衔接音频流进行推送,克服了RTMP音视频推流过程中录制端启停音频会造成播放画面卡死、播放失败的问题。
附图说明
图1是Android系统下音视频流推流过程图。
图2是暂停音频填充静默音频示意图。
图3是AAC的ADTS的一般格式示意图。
具体实施方式
为了进一步说明实施案例,本发明提供附图进行配合说明。这些附图为本发明展示内容的一部分,可配合说明书的相关描述对运行原理进行解释。配合这些内容,领域内的相关技术人员可以了解本发明的具体实施部署方式以及其优点。
对于Android系统下一个RTMP音视频或纯音频流,音频数据的推流过程如图1所示,说明如下:
1.配置参数,初始化AudioRecord构造函数;
2.初始化并启动编码器;
3.开始采集声音数据;
4.不断地读取采集到的声音数据,放进编码器的输入缓存中进行编码;
5.不断地从编码器输出缓存中取出编码后的数据,合成音频,添加ADTS头后推送出去;
6.停止采集,释放AudioRecord资源,停止编码。
在上述流程的基础上,对于推送RTMP音视频流,将音频流抽象为AudioStream类,在类中设置一个私有的静态成员变量,用于指示音频推送状态;再添加一个公开的成员方法,用于切换音频流推送状态(类、成员变量、成员方法等是Java语言的专业术语)。当录制端用户点击屏幕中的暂停/开启音频按钮时,会触发该成员方法,该成员方法的逻辑如下:
当录制端用户点击屏幕中的暂停音频按钮时,执行如下步骤:
1.读取成员变量的值,若成员变量显示当前音频正在推送中,则将成员变量更改为暂停状态;
2.停止采集,释放AudioRecord资源,停止编码。
3.读取本地的静默音频帧;
4.不停推送静默音频帧。
当录制端用户点击屏幕中的开启音频按钮时,执行如下步骤:
1.读取成员变量的值,若成员变量显示当前音频推送已暂停,将成员变量更改为推送状态;
2.停止推送静默音频帧;
3.配置参数,初始化AudioRecord构造函数;
4.初始化并启动编码器;
5.开始采集声音数据;
6.不断地读取采集到的声音数据,放进编码器的输入缓存中进行编码;
7.不断地从编码器输出缓存中取出编码后的数据,合成音频,添加ADTS头后推送出去;
推送静默音频功能与推送录音音频功能在两个不同的线程中实现,因此切换两种不同音频源的过程极为迅速,不会对视频推送造成影响。此外,静默音频帧填补了音频数据的缺失,如图2所示,播放器可以正确处理时间戳,视频的画面不会出现卡死、崩溃等情况。
静默音频采用AAC(高级音频编码)帧格式,AAC的音频文件格式使用ADTS,如图3所示,其中空白矩形表示一帧前后的数据。ADTS的解码可以在这个流中任何位置开始,即ADTS可以在任意帧解码,它每一帧都有头信息。使用ADTS音频文件格式,保证了可以在插入静默音频帧后还能够正常解码。
静默音频帧的制作方法为:创建一个帧长度的字节数组,先写入ADTS头文件,剩余部分保持为空,最后将数组写出到.aac后缀的文件中,这样组装出来的AAC音频文件就是静默音频文件。将该文件保存到Android工程的资源文件夹下,以供后续使用。
以上实施例仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,本发明的保护范围以权利要求所述为准。
Claims (7)
1.一种Android平台下RTMP音视频推流中启停音频容错方法,其特征在于,包括以下步骤:
Android设备在进行RTMP音视频流的录制编码时,将音频流抽象为AudioStream类,在该AudioStream类中设置一个私有的静态成员变量,并添加一个公开的成员方法,该静态成员变量用于指示音频推送状态,该成员方法用于切换音频推送状态;
当在音频推送过程中暂停音频时,调用该成员方法,读取该成员变量并将该成员变量更改为暂停状态,停止音频的采集,释放AudioRecord资源,停止编码,推送预先准备好的静默音频帧,无缝衔接音频流进行推送;
当重新推送音频时,调用该成员方法,读取该成员变量并将该成员变量更改为推送状态,停止推送静默音频帧,重新配置参数,初始化AudioRecord构造函数,采集声音数据,并编码合成为音频流进行推送。
2.如权利要求1所述的方法,其特征在于,推送静默音频帧与推送音频流是在两个不同的线程中进行。
3.如权利要求1所述的方法,其特征在于,静默音频帧采用AAC帧格式,该AAC采用ADTS的音频文件格式。
4.如权利要求3所述的方法,其特征在于,静默音频帧的制作方法为:创建一个帧长度的字节数组,先写入ADTS头文件,剩余部分保持为空,再将数组写出到.aac后缀的文件中,组装成AAC音频文件即为静默音频帧文件。
5.如权利要求1或4所述的方法,其特征在于,静默音频帧文件保存在Android工程的资源文件夹下。
6.一种Android平台下RTMP音视频推流中启停音频容错系统,其特征在于,包括存储器和处理器,在该存储器上存储有计算机程序,该处理器执行该程序时实现权利要求1-5任一项所述的方法的步骤。
7.一种计算机可读存储介质,存储有计算机程序,该程序被处理器执行时实现权利要求1-5任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110276764.3A CN113038181B (zh) | 2021-03-15 | 2021-03-15 | Android平台下RTMP音视频推流中启停音频容错方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110276764.3A CN113038181B (zh) | 2021-03-15 | 2021-03-15 | Android平台下RTMP音视频推流中启停音频容错方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113038181A CN113038181A (zh) | 2021-06-25 |
CN113038181B true CN113038181B (zh) | 2021-12-21 |
Family
ID=76468727
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110276764.3A Active CN113038181B (zh) | 2021-03-15 | 2021-03-15 | Android平台下RTMP音视频推流中启停音频容错方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113038181B (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101811220B1 (ko) * | 2012-02-16 | 2018-01-25 | 삼성전자 주식회사 | 이동 통신 시스템에서 휴대 단말기의 VoIP 처리 방법 및 장치 |
CN108055245A (zh) * | 2017-11-28 | 2018-05-18 | 北京潘达互娱科技有限公司 | 网络视频直播方法、装置、电子设备和计算机存储介质 |
CN109830248B (zh) * | 2018-12-14 | 2020-10-27 | 维沃移动通信有限公司 | 一种音频录制方法及终端设备 |
CN111381954B (zh) * | 2018-12-27 | 2024-05-03 | 深圳市优必选科技有限公司 | 一种音频数据录制方法、系统及终端设备 |
CN110324643B (zh) * | 2019-04-24 | 2021-02-02 | 网宿科技股份有限公司 | 一种视频录制方法及系统 |
-
2021
- 2021-03-15 CN CN202110276764.3A patent/CN113038181B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN113038181A (zh) | 2021-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105049920B (zh) | 一种多媒体文件的录制方法和装置 | |
US10951857B2 (en) | Method and system for video recording | |
CN101742198A (zh) | 多媒体记录装置及方法 | |
US7555009B2 (en) | Data processing method and apparatus, and data distribution method and information processing apparatus | |
CN105049904B (zh) | 一种多媒体文件的播放方法和装置 | |
CN107093436B (zh) | 预录的音视频数据的存储方法及装置、移动终端 | |
WO2020215454A1 (zh) | 一种屏幕录制的方法、客户端和终端设备 | |
CN112087642B (zh) | 云导播播放方法、云导播服务器及远程管理终端 | |
CN108449634B (zh) | 一种多进程解码的播放方法、计算机设备和存储介质 | |
CN114095784A (zh) | H.265格式视频流转码播放方法、系统、设备及介质 | |
US8688737B2 (en) | Method and apparatus for generating and reproducing media object-based metadata | |
KR20080076079A (ko) | 디지털 방송 재생 방법 및 장치, 디지털 방송 녹화 방법 | |
CN113038181B (zh) | Android平台下RTMP音视频推流中启停音频容错方法及系统 | |
CN109600651B (zh) | 文档类直播交互数据和音视频数据同步方法和系统 | |
JP6128329B2 (ja) | 映像記録装置およびカメラデコーダ | |
CN113630643B (zh) | 媒体流收录方法、装置及计算机存储介质、电子设备 | |
CN112565808B (zh) | 一种在直播流中插播垫片的方法 | |
JP4280701B2 (ja) | データファイルの編集方法及び装置及び制御プログラム及び記憶媒体 | |
CN110798725A (zh) | 一种数据处理方法和装置 | |
US11973820B2 (en) | Method and apparatus for mpeg dash to support preroll and midroll content during media playback | |
US20230224557A1 (en) | Auxiliary mpds for mpeg dash to support prerolls, midrolls and endrolls with stacking properties | |
CN113490047A (zh) | 一种Android音视频播放方法 | |
CN113784150A (zh) | 视频数据发布方法、装置、电子设备及存储介质 | |
US8442126B1 (en) | Synchronizing audio and video content through buffer wrappers | |
JP3897783B2 (ja) | 画像処理装置及びその制御方法、並びにコンピュータプログラム及びコンピュータ可読記憶媒体 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |