CN113038181B - Android平台下RTMP音视频推流中启停音频容错方法及系统 - Google Patents

Android平台下RTMP音视频推流中启停音频容错方法及系统 Download PDF

Info

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
Application number
CN202110276764.3A
Other languages
English (en)
Other versions
CN113038181A (zh
Inventor
李翀
张金杰
张士波
刘学敏
王宇宸
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Computer Network Information Center of CAS
Original Assignee
Computer Network Information Center of CAS
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Computer Network Information Center of CAS filed Critical Computer Network Information Center of CAS
Priority to CN202110276764.3A priority Critical patent/CN113038181B/zh
Publication of CN113038181A publication Critical patent/CN113038181A/zh
Application granted granted Critical
Publication of CN113038181B publication Critical patent/CN113038181B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing 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/433Content storage operation, e.g. storage operation in response to a pause request, caching operations
    • H04N21/4334Recording operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing 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/439Processing of audio elementary streams
    • H04N21/4398Processing of audio elementary streams involving reformatting operations of audio signals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing 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/44Processing 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/4402Processing 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network 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/63Control 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/643Communication protocols
    • H04N21/6437Real-time Transport Protocol [RTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/81Monomedia components thereof
    • H04N21/8106Monomedia 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音视频推流中启停音频容错方法及系统
技术领域
本发明涉及移动应用开发和流媒体技术领域,是一种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任一项所述的方法的步骤。
CN202110276764.3A 2021-03-15 2021-03-15 Android平台下RTMP音视频推流中启停音频容错方法及系统 Active CN113038181B (zh)

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)

* Cited by examiner, † Cited by third party
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 网宿科技股份有限公司 一种视频录制方法及系统

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