CN114979766A - 音视频的合成方法、装置、设备及存储介质 - Google Patents

音视频的合成方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN114979766A
CN114979766A CN202210515503.7A CN202210515503A CN114979766A CN 114979766 A CN114979766 A CN 114979766A CN 202210515503 A CN202210515503 A CN 202210515503A CN 114979766 A CN114979766 A CN 114979766A
Authority
CN
China
Prior art keywords
audio
video
frame data
rendering
data
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.)
Granted
Application number
CN202210515503.7A
Other languages
English (en)
Other versions
CN114979766B (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.)
Shenzhen Big Head Brothers Technology Co Ltd
Original Assignee
Shenzhen Big Head Brothers Technology Co Ltd
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 Shenzhen Big Head Brothers Technology Co Ltd filed Critical Shenzhen Big Head Brothers Technology Co Ltd
Priority to CN202210515503.7A priority Critical patent/CN114979766B/zh
Publication of CN114979766A publication Critical patent/CN114979766A/zh
Application granted granted Critical
Publication of CN114979766B publication Critical patent/CN114979766B/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/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/44016Processing 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 splicing one content stream with another content stream, e.g. for substituting a video clip
    • 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
    • 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/44012Processing 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 rendering scenes according to scene graphs, e.g. MPEG-4 scene graphs

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Television Signal Processing For Recording (AREA)
  • Studio Circuits (AREA)

Abstract

本发明提供了一种音视频的合成方法、装置、设备及存储介质,其中音视频的合成方法包括:接收待合成的视频帧数据和音频帧数据;分别通过预设的第一线程和第二线程对所述视频帧数据和所述音频帧数据进行同时渲染;监听所述视频帧数据和所述音频帧数据的渲染进度;当所述视频帧数据和所述音频帧数据均渲染完成时,将渲染后得到的视频数据和音频数据进行合成。本发明的音视频的合成方法,利用了两个不同的线程分别对视频帧数据和音频帧数据进行渲染,这样视频帧数据和音频帧数据的渲染就可以同步进行,从而提高了视频帧数据和音频帧数据合成的效率。

Description

音视频的合成方法、装置、设备及存储介质
技术领域
本发明涉及音视频处理技术领域,尤其涉及一种音视频的合成方法、装置、设备及存储介质。
背景技术
在短视频火爆的当下,移动端视频剪辑工具也如泉水般涌出,在视频剪辑APP中添加各种音频和视频特效后,再渲染输出合成一个视频。在渲染合成阶段,大部分情况下音频和视频都是分开处理的,在多段视频和音频的情况下常规做法是先渲染视频,再处理音频,最后把视频音频合成一个完整的视频,所以怎么提高渲染合成速度也是一个重要的优化路径。
因此,现有技术还有待于改进和发展。
发明内容
本发明的主要目的在于提供一种音视频的合成方法、装置、设备及存储介质,旨在解决现有技术音视频的合成方法效率低,极大的影响了短视频剪辑效率的技术问题。
本发明第一方面公开了一种音视频的合成方法,包括以下步骤:
接收待合成的视频帧数据和音频帧数据;
分别通过预设的第一线程和第二线程对所述视频帧数据和所述音频帧数据进行同时渲染;
监听所述视频帧数据和所述音频帧数据的渲染进度;
当所述视频帧数据和所述音频帧数据均渲染完成时,将渲染后得到的视频数据和音频数据进行合成。
在本发明第一方面一种可选的实施方式中,所述分别通过预设的第一线程和第二线程对所述视频帧数据和所述音频帧数据进行同时渲染包括:
预先创建视频存储文件以及音频存储文件;
在所述第一线程中对所述视频帧数据进行画面和特效渲染,并将渲染后得到的视频数据保存到所述视频存储文件;
在所述第一线程开始渲染所述视频帧数据的同时在所述第二线程中执行所述音频帧数据的渲染,并将渲染后得到的音频数据保存到所述音频存储文件中。
在本发明第一方面一种可选的实施方式中,所述在所述第一线程中对所述视频帧数据进行画面和特效渲染,并将渲染后得到的视频数据保存到所述视频存储文件包括:
在所述第一线程中通过OpenGL ES接口对所述视频帧数据进行画面和特效的离屏渲染,并将渲染后得到的视频数据保存到所述视频存储文件。
在本发明第一方面一种可选的实施方式中,所述在所述第一线程中通过OpenGLES接口对所述视频帧数据进行画面和特效的离屏渲染,并将渲染后得到的视频数据保存到所述视频存储文件包括:
利用CoreVideo框架中的CVOpenGLESTextureCacheCreate方法创建纹理缓冲区,并将所述纹理缓冲区保存在CVOpenGLESTextureCacheRef对象中;
再通过CVOpenGLESTextureCacheCreateTextureFromImage方法创建基于纹理的图像缓冲区并保存在CVOpenGLESTextureRef对象中;
接着通过所述CVOpenGLESTextureRef对象获得纹理ID,并使所述OpenGL ES接口渲染输出至所述纹理ID,同时把渲染后得到的视频数据保存到CVPixelBufferRef对象;
最后把所述CVPixelBufferRef对象中的视频数据通过AVFoundation框架的AVAssetWriterInput对象、AVAssetWriterInputPixelBufferAdaptor对象和AVAssetWriter对象写入到所述视频存储文件中。
在本发明第一方面一种可选的实施方式中,所述在所述第一线程开始渲染所述视频帧数据的同时在所述第二线程中执行所述音频帧数据的渲染,并将渲染后得到的音频数据保存到所述音频存储文件中包括:
通过AVFoundation框架创建AVMutableComposition对象;
接着把所述音频帧数据转换成AVURLAsset对象,并从所述AVURLAsset对象读取出AVAssetTrack对象;
再通过所述AVMutableComposition对象添加AVMutableCompositionTrack对象,以及利用所述AVMutableCompositionTrack对象添加所述AVAssetTrack对象和混音效果;
最后通过所述AVMutableComposition对象创建AVAssetExportSession对象,并利用所述AVAssetExportSession对象导出所述AVMutableComposition对象中的音频数据到所述音频存储文件中。
在本发明第一方面一种可选的实施方式中,所述当所述视频帧数据和所述音频帧数据均渲染完成时,将渲染后得到的视频数据和音频数据进行合成包括:
通过所述音频存储文件中的音频数据创建AVAsset对象,并获取到AVAssetTrack对象;
再通过所述AVAssetTrack创建AVAssetReaderTrackOutput对象用于读取音频轨资源;
接着通过所述AVAsset对象创建AVAssetReader对象,再把所述AVAssetReaderTrackOutput对象添加到所述AVAssetReader对象中;
之后开始读取音频数据,通过所述AVAssetReaderTrackOutput对象的copyNextSampleBuffer方法读取到音频数据的每一帧音频,然后写入到所述视频存储文件中。
在本发明第一方面一种可选的实施方式中,所述视频存储文件为mp4格式,所述音频存储文件为m4a格式。
本发明第二方面提供了一种音视频的合成装置,所述音视频的合成装置包括:
接收模块,用于接收待合成的视频帧数据和音频帧数据;
渲染模块,用于分别通过预设的第一线程和第二线程对所述视频帧数据和所述音频帧数据进行同时渲染;
监听模块,用于监听所述视频帧数据和所述音频帧数据的渲染进度;
合成模块,用于当所述视频帧数据和所述音频帧数据均渲染完成时,将渲染后得到的视频数据和音频数据进行合成。
本发明第三方面提供了一种音视频的合成设备,所述音视频的合成设备包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互连;
所述至少一个处理器调用所述存储器中的所述指令,以使得所述音视频的合成设备执行如上述任一项所述的音视频的合成方法。
本发明第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述的音视频的合成方法。
有益效果:本发明提供了一种音视频的合成方法、装置、设备及存储介质,其中音视频的合成方法包括:接收待合成的视频帧数据和音频帧数据;分别通过预设的第一线程和第二线程对所述视频帧数据和所述音频帧数据进行同时渲染;监听所述视频帧数据和所述音频帧数据的渲染进度;当所述视频帧数据和所述音频帧数据均渲染完成时,将渲染后得到的视频数据和音频数据进行合成。本发明的音视频的合成方法,利用了两个不同的线程分别对视频帧数据和音频帧数据进行渲染,这样视频帧数据和音频帧数据的渲染就可以同步进行,从而提高了视频帧数据和音频帧数据合成的效率。
附图说明
图1为本发明一种音视频的合成方法的一个实施例示意图;
图2为本发明一种音视频的合成装置的一个实施例示意图;
图3为本发明一种音视频的合成设备的一个实施例示意图。
具体实施方式
本发明实施例提供了一种音视频的合成方法、装置、设备及存储介质。本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
参见图1,本发明第一方面公开了一种音视频的合成方法,包括以下步骤:
S100、接收待合成的视频帧数据和音频帧数据;
S200、分别通过预设的第一线程和第二线程对所述视频帧数据和所述音频帧数据进行同时渲染;在2个不同线程进行音频帧和视频帧的渲染操作,在视频帧渲染的同时,提前执行音频合成渲染操作,把多个音频数据提前合成为一个完整的音频数据,可以提高效率节约时间;
S300、监听所述视频帧数据和所述音频帧数据的渲染进度;在该步骤中,当音频或视频任务其中一个执行完成时,需要先执行查询操作,确保2个任务都执行完成才能进行最后一步音视频合成任务,如果音频帧渲染任务先完成渲染合成,则先标记音频帧渲染任务状态为完成状态,再去查询视频帧渲染任务状态,如果视频帧渲染任务未完成,则等待视频帧渲染任务完成再进行下一步操作;如果视频帧渲染任务先完成渲染合成,先标记视频帧渲染任务状态为完成状态,再去查询音频帧渲染任务状态,如果音频帧渲染任务未完成,则等待音频帧渲染任务完成再进行下一步操作;
S400、当所述视频帧数据和所述音频帧数据均渲染完成时,将渲染后得到的视频数据和音频数据进行合成。本发明技术方案的主要方法是同时开启2个子线程分别处理音频和视频帧渲染任务,当一个任务完成时再去查询另一个任务状态,如果另一个任务未完成,那么音频、视频合成完整视频任务即进入等待状态,直到2个任务都完成再执行。
为了更好的对本申请技术方案进行说明,举一种场景来说来说,假设用户在进行视频编辑时,添加多个资源素材,场景如下,按照时间线顺序播放/显示资源素材:在主轨道添加video1.mp4、video2.mp4、video3.mp4三个视频文件,这三个视频顺序排列播放;添加多个背景音乐music1.mp3、music2.mp3、music3.mp3,三个背景音乐顺序排列播放;添加多个动态贴纸:贴纸1、贴纸2、贴纸3;用户添加的素材,我们会对每个素材创建一个图层(Layer)和一个资源Souce,资源保存的是素材文件或者素材的本地地址,图层是描述这个资源该如何显示以及什么时间显示,他们之间的关系是图层包含资源的关系;本发明技术方案在合成音频和视频时,会先创建2个子线程A、B,一个用于渲染引擎渲染视频,一个用于渲染合成音频;之后会创建2个文件video.mp4和audio.m4a,audio.m4a:用于存储多段音频合成后的完整音频文件,即把视频原生和背景音乐渲染合到到此文件;video.mp4:用于存储视频帧画面渲染结果,以及最后把音频文件audio.m4a数据合成进去成为完整的音视频文件。
在本发明第一方面一种可选的实施方式中,所述分别通过预设的第一线程和第二线程对所述视频帧数据和所述音频帧数据进行同时渲染包括:
预先创建视频存储文件以及音频存储文件;在该步骤中,就是创建2个文件名称分别为video.mp4的视频存储文件和名称为audio.m4a的音频存储文件;
在所述第一线程中对所述视频帧数据进行画面和特效渲染,并将渲染后得到的视频数据保存到所述视频存储文件;在该步骤中,简单来讲包括两部分内容,即在线程A(第一线程)中通过渲染引擎渲染把素材渲染到纹理中;同时线程A中通把渲染目标纹理内容写入到video.mp4文件;
在所述第一线程开始渲染所述视频帧数据的同时在所述第二线程中执行所述音频帧数据的渲染,并将渲染后得到的音频数据保存到所述音频存储文件中。在该步骤中,简单来讲也可以理解成在线程A(第一线程)中开始渲染画面的同时在线程B(第二线程)中开始执行音频合成任务,把多段音频合成到audio.m4a文件中。
在本发明第一方面一种可选的实施方式中,所述在所述第一线程中对所述视频帧数据进行画面和特效渲染,并将渲染后得到的视频数据保存到所述视频存储文件包括:
在所述第一线程中通过OpenGL ES接口对所述视频帧数据进行画面和特效的离屏渲染,并将渲染后得到的视频数据保存到所述视频存储文件。具体来说,OpenGL ES(OpenGLfor Embedded Systems)是免授权费的,跨平台的,功能完善的2D和3D图形应用程序接口API,针对手机、PAD和游戏主机等嵌入式设备而设计,我们可以利用这个技术实现对二维或三维图形的渲染,从而绘制出逼真的二维或三维场景。
在本发明第一方面一种可选的实施方式中,所述在所述第一线程中通过OpenGLES接口对所述视频帧数据进行画面和特效的离屏渲染,并将渲染后得到的视频数据保存到所述视频存储文件包括:
利用CoreVideo框架中的CVOpenGLESTextureCacheCreate方法创建纹理缓冲区,并将所述纹理缓冲区保存在CVOpenGLESTextureCacheRef对象中;
再通过CVOpenGLESTextureCacheCreateTextureFromImage方法创建基于纹理的图像缓冲区并保存在CVOpenGLESTextureRef对象中;
接着通过所述CVOpenGLESTextureRef对象获得纹理ID,并使所述OpenGL ES接口渲染输出至所述纹理ID,同时把渲染后得到的视频数据保存到CVPixelBufferRef对象;
最后把所述CVPixelBufferRef对象中的视频数据通过AVFoundation框架的AVAssetWriterInput对象、AVAssetWriterInputPixelBufferAdaptor对象和AVAssetWriter对象写入到所述视频存储文件中。
在本实施方式中,本发明技术方案中视频帧数据渲染借助OpenGL ES接口进行画面和特效渲染;
首先在离屏渲染时利用CoreVideo的CVOpenGLESTextureCacheCreate方法创建纹理缓冲区,保存在CVOpenGLESTextureCacheRef声明的对象中;再通过CVOpenGLESTextureCacheCreateTextureFromImage方法创建OpenGLES基于纹理的图像缓冲区保存在CVOpenGLESTextureRef对象中,其中有2个重要参数就CVOpenGLESTextureCacheRef和CVPixelBufferRef对象;再通过CVOpenGLESTextureRef得到纹理ID,最终OpenGL ES渲染输出到此纹理中,同时真正的像素信息保存在CVPixelBufferRef中;
最后把CVPixelBufferRef通过AVFoundation框架的AVAssetWriterInput、AVAssetWriterInputPixelBufferAdaptor、AVAssetWriter的相关能力写入到文件video.mp4中。
在本发明第一方面一种可选的实施方式中,所述在所述第一线程开始渲染所述视频帧数据的同时在所述第二线程中执行所述音频帧数据的渲染,并将渲染后得到的音频数据保存到所述音频存储文件中包括:
通过AVFoundation框架创建AVMutableComposition对象;
接着把所述音频帧数据转换成AVURLAsset对象,并从所述AVURLAsset对象读取出AVAssetTrack对象;
再通过所述AVMutableComposition对象添加AVMutableCompositionTrack对象,以及利用所述AVMutableCompositionTrack对象添加所述AVAssetTrack对象和混音效果;
最后通过所述AVMutableComposition对象创建AVAssetExportSession对象,并利用所述AVAssetExportSession对象导出所述AVMutableComposition对象中的音频数据到所述音频存储文件中。
在本实施方式中,本发明技术方案中音频帧数据部分的处理是先通过AVFoundation框架创建音频合成对象AVMutableComposition;再把音频帧数据通过转换成AVURLAsset资源对象,再读取出音频轨道对象AVAssetTrack,如果有多个音频帧数据则需要执行多次,每个音频帧数据都有独立的资源对象;再通过AVMutableComposition添加音频轨道合成对象AVMutableCompositionTrack,这个时候利用AVMutableCompositionTrack可以添加刚才读取的音频轨道对象AVAssetTrack以及其他一些混音效果,如果有多个音频帧数据则需要多次执行,每个音频帧数据都有独立的音频轨道合成对象;最后通过AVMutableComposition对象创建AVAssetExportSession,利用AVAssetExportSession最终导出到音频存储文件audio.m4a中。
在本发明第一方面一种可选的实施方式中,所述当所述视频帧数据和所述音频帧数据均渲染完成时,将渲染后得到的视频数据和音频数据进行合成包括:
通过所述音频存储文件中的音频数据创建AVAsset对象,并获取到AVAssetTrack对象;
再通过所述AVAssetTrack创建AVAssetReaderTrackOutput对象用于读取音频轨资源;
接着通过所述AVAsset对象创建AVAssetReader对象,再把所述AVAssetReaderTrackOutput对象添加到所述AVAssetReader对象中;
之后开始读取音频数据,通过所述AVAssetReaderTrackOutput对象的copyNextSampleBuffer方法读取到音频数据的每一帧音频,然后写入到所述视频存储文件中。
在本实施方式中,当音频和视频任务都渲染完成时,此时video.mp4文件只有画面没有声音,所以需要将音频存储文件audio.m4a合成到视频存储文件video.mp4中,通过音频存储文件创建AVAsset资源对象,再获取到音频轨AVAssetTrack对象,再通过AVAssetTrack创建AVAssetReaderTrackOutput对象,用于读取音频轨资源,再通过AVAsset创建音频读取器AVAssetReader对象,再把AVAssetReaderTrackOutput对象添加到AVAssetReader中,接着开始读取资源,通过AVAssetReaderTrackOutput对象的copyNextSampleBuffer方法读取到音频数据的每一帧资源,然后写入到视频存储文件中,直到读取写完所有音频帧,最后就可以输出的video.mp4就是个完整音视频文件了。
在本发明第一方面一种可选的实施方式中,所述视频存储文件为mp4格式,所述音频存储文件为m4a格式。
参见图2,本发明第二方面提供了一种音视频的合成装置,所述音视频的合成装置包括:
接收模块10,用于接收待合成的视频帧数据和音频帧数据;
渲染模块20,用于分别通过预设的第一线程和第二线程对所述视频帧数据和所述音频帧数据进行同时渲染;
监听模块30,用于监听所述视频帧数据和所述音频帧数据的渲染进度;
合成模块40,用于当所述视频帧数据和所述音频帧数据均渲染完成时,将渲染后得到的视频数据和音频数据进行合成。
在本发明第二方面一种可选的实施方式中,所述渲染模块20包括:
创建单元,用于预先创建视频存储文件以及音频存储文件;
第一渲染单元,用于在所述第一线程中对所述视频帧数据进行画面和特效渲染,并将渲染后得到的视频数据保存到所述视频存储文件;
第二渲染单元,用于在所述第一线程开始渲染所述视频帧数据的同时在所述第二线程中执行所述音频帧数据的渲染,并将渲染后得到的音频数据保存到所述音频存储文件中。
在本发明第二方面一种可选的实施方式中,所述第一渲染单元还用于:
在所述第一线程中通过OpenGL ES接口对所述视频帧数据进行画面和特效的离屏渲染,并将渲染后得到的视频数据保存到所述视频存储文件。
在本发明第二方面一种可选的实施方式中,所述第一渲染单元还用于:
利用CoreVideo框架中的CVOpenGLESTextureCacheCreate方法创建纹理缓冲区,并将所述纹理缓冲区保存在CVOpenGLESTextureCacheRef对象中;
再通过CVOpenGLESTextureCacheCreateTextureFromImage方法创建基于纹理的图像缓冲区并保存在CVOpenGLESTextureRef对象中;
接着通过所述CVOpenGLESTextureRef对象获得纹理ID,并使所述OpenGL ES接口渲染输出至所述纹理ID,同时把渲染后得到的视频数据保存到CVPixelBufferRef对象;
最后把所述CVPixelBufferRef对象中的视频数据通过AVFoundation框架的AVAssetWriterInput对象、AVAssetWriterInputPixelBufferAdaptor对象和AVAssetWriter对象写入到所述视频存储文件中。
在本发明第二方面一种可选的实施方式中,所述第二渲染单元还用于:
通过AVFoundation框架创建AVMutableComposition对象;
接着把所述音频帧数据转换成AVURLAsset对象,并从所述AVURLAsset对象读取出AVAssetTrack对象;
再通过所述AVMutableComposition对象添加AVMutableCompositionTrack对象,以及利用所述AVMutableCompositionTrack对象添加所述AVAssetTrack对象和混音效果;
最后通过所述AVMutableComposition对象创建AVAssetExportSession对象,并利用所述AVAssetExportSession对象导出所述AVMutableComposition对象中的音频数据到所述音频存储文件中。
在本发明第二方面一种可选的实施方式中,所述合成模块40还用于:
通过所述音频存储文件中的音频数据创建AVAsset对象,并获取到AVAssetTrack对象;
再通过所述AVAssetTrack创建AVAssetReaderTrackOutput对象用于读取音频轨资源;
接着通过所述AVAsset对象创建AVAssetReader对象,再把所述AVAssetReaderTrackOutput对象添加到所述AVAssetReader对象中;
之后开始读取音频数据,通过所述AVAssetReaderTrackOutput对象的copyNextSampleBuffer方法读取到音频数据的每一帧音频,然后写入到所述视频存储文件中。
在本发明第二方面一种可选的实施方式中,所述视频存储文件为mp4格式,所述音频存储文件为m4a格式。
图3是本发明实施例提供的一种音视频的合成设备的结构示意图,该音视频的合成设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器50(central processing units,CPU)(例如,一个或一个以上处理器)和存储器60,一个或一个以上存储应用程序或数据的存储介质70(例如一个或一个以上海量存储设备)。其中,存储器和存储介质可以是短暂存储或持久存储。存储在存储介质的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对由音视频的合成设备中的一系列指令操作。更进一步地,处理器可以设置为与存储介质通信,在音视频的合成设备上执行存储介质中的一系列指令操作。
本发明的音视频的合成设备还可以包括一个或一个以上电源80,一个或一个以上有线或无线网络接口90,一个或一个以上输入输出接口100,和/或,一个或一个以上操作系统,例如Windows Serve,Mac OS X,Unix,Linux,FreeBSD等等。本领域技术人员可以理解,图3示出的音视频的合成设备结构并不构成对由音视频的合成设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
本发明还提供一种计算机可读存储介质,该计算机可读存储介质可以为非易失性计算机可读存储介质,该计算机可读存储介质也可以为易失性计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得计算机执行所述的音视频的合成方法的步骤。
所属领域的技术人员可以清楚地了解到,为描述的方面和简洁,上述描述的系统或装置、单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种音视频的合成方法,其特征在于,包括以下步骤:
接收待合成的视频帧数据和音频帧数据;
分别通过预设的第一线程和第二线程对所述视频帧数据和所述音频帧数据进行同时渲染;
监听所述视频帧数据和所述音频帧数据的渲染进度;
当所述视频帧数据和所述音频帧数据均渲染完成时,将渲染后得到的视频数据和音频数据进行合成。
2.根据权利要求1所述的音视频的合成方法,其特征在于,所述分别通过预设的第一线程和第二线程对所述视频帧数据和所述音频帧数据进行同时渲染包括:
预先创建视频存储文件以及音频存储文件;
在所述第一线程中对所述视频帧数据进行画面和特效渲染,并将渲染后得到的视频数据保存到所述视频存储文件;
在所述第一线程开始渲染所述视频帧数据的同时在所述第二线程中执行所述音频帧数据的渲染,并将渲染后得到的音频数据保存到所述音频存储文件中。
3.根据权利要求2所述的音视频的合成方法,其特征在于,所述在所述第一线程中对所述视频帧数据进行画面和特效渲染,并将渲染后得到的视频数据保存到所述视频存储文件包括:
在所述第一线程中通过OpenGL ES接口对所述视频帧数据进行画面和特效的离屏渲染,并将渲染后得到的视频数据保存到所述视频存储文件。
4.根据权利要求3所述的音视频的合成方法,其特征在于,所述在所述第一线程中通过OpenGL ES接口对所述视频帧数据进行画面和特效的离屏渲染,并将渲染后得到的视频数据保存到所述视频存储文件包括:
利用CoreVideo框架中的CVOpenGLESTextureCacheCreate方法创建纹理缓冲区,并将所述纹理缓冲区保存在CVOpenGLESTextureCacheRef对象中;
再通过CVOpenGLESTextureCacheCreateTextureFromImage方法创建基于纹理的图像缓冲区并保存在CVOpenGLESTextureRef对象中;
接着通过所述CVOpenGLESTextureRef对象获得纹理ID,并使所述OpenGL ES接口渲染输出至所述纹理ID,同时把渲染后得到的视频数据保存到CVPixelBufferRef对象;
最后把所述CVPixelBufferRef对象中的视频数据通过AVFoundation框架的AVAssetWriterInput对象、AVAssetWriterInputPixelBufferAdaptor对象和AVAssetWriter对象写入到所述视频存储文件中。
5.根据权利要求3所述的音视频的合成方法,其特征在于,所述在所述第一线程开始渲染所述视频帧数据的同时在所述第二线程中执行所述音频帧数据的渲染,并将渲染后得到的音频数据保存到所述音频存储文件中包括:
通过AVFoundation框架创建AVMutableComposition对象;
接着把所述音频帧数据转换成AVURLAsset对象,并从所述AVURLAsset对象读取出AVAssetTrack对象;
再通过所述AVMutableComposition对象添加AVMutableCompositionTrack对象,以及利用所述AVMutableCompositionTrack对象添加所述AVAssetTrack对象和混音效果;
最后通过所述AVMutableComposition对象创建AVAssetExportSession对象,并利用所述AVAssetExportSession对象导出所述AVMutableComposition对象中的音频数据到所述音频存储文件中。
6.根据权利要求5所述的音视频的合成方法,其特征在于,所述当所述视频帧数据和所述音频帧数据均渲染完成时,将渲染后得到的视频数据和音频数据进行合成包括:
通过所述音频存储文件中的音频数据创建AVAsset对象,并获取到AVAssetTrack对象;
再通过所述AVAssetTrack创建AVAssetReaderTrackOutput对象用于读取音频轨资源;
接着通过所述AVAsset对象创建AVAssetReader对象,再把所述AVAssetReaderTrackOutput对象添加到所述AVAssetReader对象中;
之后开始读取音频数据,通过所述AVAssetReaderTrackOutput对象的copyNextSampleBuffer方法读取到音频数据的每一帧音频,然后写入到所述视频存储文件中。
7.根据权利要求2所述的音视频的合成方法,其特征在于,所述视频存储文件为mp4格式,所述音频存储文件为m4a格式。
8.一种音视频的合成装置,其特征在于,所述音视频的合成装置包括:
接收模块,用于接收待合成的视频帧数据和音频帧数据;
渲染模块,用于分别通过预设的第一线程和第二线程对所述视频帧数据和所述音频帧数据进行同时渲染;
监听模块,用于监听所述视频帧数据和所述音频帧数据的渲染进度;
合成模块,用于当所述视频帧数据和所述音频帧数据均渲染完成时,将渲染后得到的视频数据和音频数据进行合成。
9.一种音视频的合成设备,其特征在于,所述音视频的合成设备包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互连;
所述至少一个处理器调用所述存储器中的所述指令,以使得所述音视频的合成设备执行如权利要求1-7中任一项所述的音视频的合成方法。
10.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7中任一项所述的音视频的合成方法。
CN202210515503.7A 2022-05-11 2022-05-11 音视频的合成方法、装置、设备及存储介质 Active CN114979766B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210515503.7A CN114979766B (zh) 2022-05-11 2022-05-11 音视频的合成方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210515503.7A CN114979766B (zh) 2022-05-11 2022-05-11 音视频的合成方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN114979766A true CN114979766A (zh) 2022-08-30
CN114979766B CN114979766B (zh) 2023-11-21

Family

ID=82981022

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210515503.7A Active CN114979766B (zh) 2022-05-11 2022-05-11 音视频的合成方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN114979766B (zh)

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102638658A (zh) * 2012-03-01 2012-08-15 盛乐信息技术(上海)有限公司 音视频编辑方法及系统
US20130044823A1 (en) * 2011-08-16 2013-02-21 Steven Erik VESTERGAARD Script-based video rendering
WO2014052853A1 (en) * 2012-09-28 2014-04-03 Red Robot Labs, Inc. Apparatus and method for in-game video capture
CN104469179A (zh) * 2014-12-22 2015-03-25 杭州短趣网络传媒技术有限公司 一种将动态图片结合到手机视频中的方法
WO2016008131A1 (en) * 2014-07-17 2016-01-21 21 Vianet Group, Inc. Techniques for separately playing audio and video data in local networks
CN105933724A (zh) * 2016-05-23 2016-09-07 福建星网视易信息系统有限公司 视频制作方法、装置及系统
WO2017092335A1 (zh) * 2015-12-01 2017-06-08 乐视控股(北京)有限公司 一种显示立体图像的处理方法和装置
WO2017107911A1 (zh) * 2015-12-25 2017-06-29 北京大学第三医院 一种视频云平台播放视频的方法及装置
CN107241646A (zh) * 2017-07-12 2017-10-10 北京奇虎科技有限公司 多媒体视频的编辑方法及装置
US20180020243A1 (en) * 2016-07-13 2018-01-18 Yahoo Holdings, Inc. Computerized system and method for automatic highlight detection from live streaming media and rendering within a specialized media player
CN108322673A (zh) * 2018-01-24 2018-07-24 北京小米移动软件有限公司 视频生成方法和视频生成装置
CN108924464A (zh) * 2018-07-10 2018-11-30 腾讯科技(深圳)有限公司 视频文件的生成方法、装置及存储介质
WO2019109650A1 (zh) * 2017-12-06 2019-06-13 香港乐蜜有限公司 一种视频播放方法、装置及电子设备
CN113891113A (zh) * 2021-09-29 2022-01-04 阿里巴巴(中国)有限公司 视频剪辑合成方法及电子设备

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130044823A1 (en) * 2011-08-16 2013-02-21 Steven Erik VESTERGAARD Script-based video rendering
CN102638658A (zh) * 2012-03-01 2012-08-15 盛乐信息技术(上海)有限公司 音视频编辑方法及系统
WO2014052853A1 (en) * 2012-09-28 2014-04-03 Red Robot Labs, Inc. Apparatus and method for in-game video capture
WO2016008131A1 (en) * 2014-07-17 2016-01-21 21 Vianet Group, Inc. Techniques for separately playing audio and video data in local networks
CN104469179A (zh) * 2014-12-22 2015-03-25 杭州短趣网络传媒技术有限公司 一种将动态图片结合到手机视频中的方法
WO2017092335A1 (zh) * 2015-12-01 2017-06-08 乐视控股(北京)有限公司 一种显示立体图像的处理方法和装置
WO2017107911A1 (zh) * 2015-12-25 2017-06-29 北京大学第三医院 一种视频云平台播放视频的方法及装置
CN105933724A (zh) * 2016-05-23 2016-09-07 福建星网视易信息系统有限公司 视频制作方法、装置及系统
US20180020243A1 (en) * 2016-07-13 2018-01-18 Yahoo Holdings, Inc. Computerized system and method for automatic highlight detection from live streaming media and rendering within a specialized media player
CN107241646A (zh) * 2017-07-12 2017-10-10 北京奇虎科技有限公司 多媒体视频的编辑方法及装置
WO2019109650A1 (zh) * 2017-12-06 2019-06-13 香港乐蜜有限公司 一种视频播放方法、装置及电子设备
CN108322673A (zh) * 2018-01-24 2018-07-24 北京小米移动软件有限公司 视频生成方法和视频生成装置
CN108924464A (zh) * 2018-07-10 2018-11-30 腾讯科技(深圳)有限公司 视频文件的生成方法、装置及存储介质
CN113891113A (zh) * 2021-09-29 2022-01-04 阿里巴巴(中国)有限公司 视频剪辑合成方法及电子设备

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
心灵小虾: "pr视频编辑怎么设置渲染视频时渲染音频", Retrieved from the Internet <URL:https://jingyan.baidu.com/article/e75057f2a69b8aaac91a89c9.html> *
王大虎;史艳楠;陈文博;: "基于3DMAX和Premiere的煤矿安全培训系统", 煤矿安全, no. 12 *

Also Published As

Publication number Publication date
CN114979766B (zh) 2023-11-21

Similar Documents

Publication Publication Date Title
US10229651B2 (en) Variable refresh rate video capture and playback
US20180018806A1 (en) Method and Apparatus for Displaying 2D Application Interface in Virtual Reality Device
US6763175B1 (en) Flexible video editing architecture with software video effect filter components
US7103232B2 (en) Storing and processing partial images obtained from a panoramic image
CN107393013B (zh) 虚拟漫游文件生成、显示方法、装置、介质、设备和系统
WO2022048097A1 (zh) 一种基于多显卡的单帧画面实时渲染方法
CN111899322B (zh) 视频处理方法、动画渲染sdk和设备及计算机存储介质
CN108959392B (zh) 在3d模型上展示富文本的方法、装置及设备
CN112235604B (zh) 渲染方法及装置、计算机可读存储介质、电子设备
CN115908644A (zh) 动画处理方法和装置
US20100060652A1 (en) Graphics rendering system
JP6882992B2 (ja) 動画像をプレビューする方法及びデバイス、並びに表現パッケージを表示する方法及びデバイス
US6763176B1 (en) Method and apparatus for real-time video editing using a graphics processor
CN102724430B (zh) 一种非线性编辑系统与图文包装系统的交互方法
US7756391B1 (en) Real-time video editing architecture
CN111179391A (zh) 一种三维动画制作方法、系统及存储介质
CN114845151A (zh) 一种多屏同步显示方法、系统、终端设备和存储介质
CN112700519A (zh) 动画展示方法、装置、电子设备及计算机可读存储介质
WO2024060949A1 (zh) 用于增强现实的方法、装置、设备和存储介质
CN114979766B (zh) 音视频的合成方法、装置、设备及存储介质
WO2018049682A1 (zh) 一种虚拟3d场景制作方法及相关设备
CN114449334A (zh) 视频录制方法、装置、电子设备及计算机存储介质
CN114331808A (zh) 一种动作姿态存储方法、装置、介质及电子设备
CN110390087A (zh) 一种应用于演示文稿的图像处理方法及装置
CN112312043A (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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 518000 Building 1901, 1902, 1903, Qianhai Kexing Science Park, Labor Community, Xixiang Street, Bao'an District, Shenzhen, Guangdong Province

Applicant after: Shenzhen Flash Scissor Intelligent Technology Co.,Ltd.

Address before: 518000 unit 9abcde, building 2, phase II, Haihong Industrial plant, west of Xixiang Avenue, Laodong community, Xixiang street, Bao'an District, Shenzhen City, Guangdong Province

Applicant before: Shenzhen big brother Technology Co.,Ltd.

GR01 Patent grant
GR01 Patent grant