CN115529491B - 一种音视频解码的方法、音视频解码的装置以及终端设备 - Google Patents
一种音视频解码的方法、音视频解码的装置以及终端设备 Download PDFInfo
- Publication number
- CN115529491B CN115529491B CN202210023603.8A CN202210023603A CN115529491B CN 115529491 B CN115529491 B CN 115529491B CN 202210023603 A CN202210023603 A CN 202210023603A CN 115529491 B CN115529491 B CN 115529491B
- Authority
- CN
- China
- Prior art keywords
- video
- video stream
- stream
- target
- audio
- 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
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/44—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs
- H04N21/44008—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving operations for analysing video streams, e.g. detecting features or characteristics in the video stream
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/44—Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
-
- 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/4394—Processing of audio elementary streams involving operations for analysing the audio stream, e.g. detecting features or characteristics in audio streams
Abstract
本申请提供了一种音视频解码的方法,应用于终端设备,该方法包括确定目标文件中包含的媒体流集合,媒体流集合中至少包括多条视频流;根据目标视频流集合中每条视频流的标识,确定目标视频流集合中当前设备能够解码的视频流;其中,目标视频流集合为多条视频流中的至少一条;根据当前设备能够解码的视频流各自的视频流参数,确定当前设备能够解码的视频流各自的分数;根据当前设备能够解码的视频流各自的分数,从当前设备能够解码的视频流中确定目标视频流;对目标视频流进行解码,用以提高用户体验。
Description
技术领域
本申请涉及终端技术领域,尤其涉及一种音视频解码的方法、音视频解码的装置以及终端设备。
背景技术
当待播放的音视频文件中包含多条音频流或多条视频流时,通常会在多条音频流中选择第一条音频流,在多条视频流中选择第一条视频流进行播放。由于终端设备通常只支持部分编码标准的音频流/视频流,当终端设备不支持第一条音频流或第一条视频流的编码标准时,即使音视频文件中包含有终端设备支持的编码标准,终端设备也无法对音视频文件进行播放,降低了用户体验。
发明内容
为了解决以上问题,本申请提供了一种音视频解码的方法、音视频解码的装置以及终端设备,用以提高用户体验。
第一方面,本申请提供了一种音视频解码的方法,该方法包括:
确定目标文件中包含的媒体流集合,媒体流集合中至少包括多条视频流;
根据目标视频流集合中每条视频流的标识,确定目标视频流集合中当前设备能够解码的视频流;其中,目标视频流集合为多条视频流中的至少一条;
根据当前设备能够解码的视频流各自的视频流参数,确定当前设备能够解码的视频流各自的分数;
根据当前设备能够解码的视频流各自的分数,从当前设备能够解码的视频流中确定目标视频流;
对目标视频流进行解码。
采用本申请的方案,当音视频文件中包含多条视频流时,并非是直接确定多条视频流中的第一条视频流进行解码,而是利用视频流的标识,得到媒体流集合中的部分或者全部的当前设备能够解码的视频流,并利用视频流的视频流参数确定视频流的分数,根据视频流的分数确定播放特性较好的目标视频流,能够在当前设备不支持多条视频流中第一条视频流的视频编码格式时,对多条视频流中能够支持视频编码格式的其他视频流进行解码,从而实现对音视频文件中视频内容的播放,提高用户体验。
在一种可能的实现方式中,每条视频流的标识为每条视频流的多用途互联网邮件扩展类型mimetype。
每条视频流均有各自的mimetype,利用mimetype能够较为准确地对视频流进行标识。
在一种可能的实现方式中,视频流参数包括以下中的至少一种:视频流的视频编码标准、图像压缩率profile、编码性能等级level、视频帧率、视频码率。
上述视频流参数能够表征视频播放时的视频质量,通过设置上述视频流参数,能够
在一种可能的实现方式中,根据当前设备能够解码的视频流各自的分数,从当前设备能够解码的视频流中确定目标视频流,包括:
根据当前设备能够解码的视频流各自的分数,确定当前设备能够解码的视频流中分数最高的视频流,得到目标视频流。
分数最高的视频流表征该视频流具有较好的播放特性,具体地,在当前设备能够解码的视频流中具有最好的播放特性,使得进行解码的视频流具有较好的播放特性,从而能够实现较好的视频播放效果。
在一种可能的实现方式中,根据目标视频流集合中每条视频流的标识,确定目标视频流集合中当前设备能够解码的视频流,其中,目标视频流集合为多条视频流中的至少一条,根据当前设备能够解码的视频流各自的视频流参数,确定当前设备能够解码的视频流各自的分数,包括:
依次根据目标视频流集合中每条视频流的标识,确定目标视频流集合中当前设备能够解码的视频流;(确定当前设备是否能够对目标视频流集合中的视频流进行解码,得到目标视频流集合中当前设备能够解码的视频流)
当确定当前视频流为目标视频流集合中当前设备能够解码的视频流时,根据当前视频流的视频流参数,确定当前视频流的分数。
依次对目标视频流集合中每条视频流进行确定操作,也即依次根据每条视频流的标识确定当前设备是否能够对视频流进行解码,得到目标视频流集合中当前设备能够解码的视频流。
对当前设备能够进行解码的视频流进行筛选,得到目标视频流集合中当前设备能够解码的视频流,并得到目标视频流集合中当前设备能够解码的视频流的分数,用以较为高效地得到目标视频流集合中当前设备能够解码的视频流的分数,从而提高视频流解码的效率。
在一种可能的实现方式中,根据目标视频流集合中每条视频流的标识,确定目标视频流集合中当前设备能够解码的视频流,其中,目标视频流集合为多条视频流中的至少一条,根据当前设备能够解码的视频流各自的视频流参数,确定当前设备能够解码的视频流各自的分数,根据当前设备能够解码的视频流各自的分数,从当前设备能够解码的视频流中确定目标视频流,包括:
依次根据目标视频流集合中每条视频流的标识,确定目标视频流集合中当前设备能够解码的视频流;
当确定当前视频流为目标视频流集合中当前设备能够解码的视频流时,根据当前视频流的视频流参数,确定当前视频流的分数;
当确定当前视频流的分数大于或者等于预设的分数阈值时,确定当前视频流为目标视频流。
当确定当前视频流的分数大于或者等于预设的分数阈值时,确定当前视频流为目标视频流,
依次对目标视频流集合中的每条视频流进行确定,并对当前设备能够解码的视频流进行打分,当出现分数大于或等于预设的分数阈值时,确定当前视频流为目标视频流,不再对后续的视频流进行确定,用以提高确定目标视频流的效率,从而提高对于视频流进行解码的效率。
在一种可能的实现方式中,媒体流集合中包括多条视频流和至少一条音频流,方法还包括:
根据目标视频流集合中每条音频流的标识,确定至少一条音频流中当前设备能够解码的音频流;
从当前设备能够解码的音频流中确定一条音频流为目标音频流;
对目标音频流进行解码。
通常待播放的目标文件中既包含有音频流也包含视频流,当目标文件中包含有音频流时,首先筛选出当前设备能够解码的音频流,并从当前设备能够解码的音频流中确定一条音频流为目标音频流,对目标音频流进行解码,用以提高确定目标音频流的效率,从而提高对于音频流和视频流进行解码的效率。
第二方面,本申请还提供一种音视频解码的装置,装置包括确定单元和解码单元,其中:
确定单元,用于确定目标文件中包含的媒体流集合,媒体流集合中至少包括多条视频流;根据目标视频流集合中每条视频流的标识,确定目标视频流集合中当前设备能够解码的视频流;其中,目标视频流集合为多条视频流中的至少一条;根据当前设备能够解码的视频流各自的视频流参数,确定当前设备能够解码的视频流各自的分数;根据当前设备能够解码的视频流各自的分数,从当前设备能够解码的视频流中确定目标视频流;
解码单元,用于对目标视频流进行解码。
采用本申请的方案,当音视频文件中包含多条视频流时,并非是直接确定多条视频流中的第一条视频流进行解码,而是利用视频流的标识,得到媒体流集合中的部分或者全部的当前设备能够解码的视频流,并利用视频流的视频流参数确定视频流的分数,根据视频流的分数确定播放特性较好的目标视频流,能够在当前设备不支持多条视频流中第一条视频流的视频编码格式时,对多条视频流中能够支持视频编码格式的其他视频流进行解码,从而实现对音视频文件中视频内容的播放,提高用户体验。
在一种可能的实现方式中,每条视频流的标识为每条视频流的多用途互联网邮件扩展类型mimetype。
在一种可能的实现方式中,视频流参数包括以下中的至少一种:视频流的视频编码标准、图像压缩率profile、编码性能等级level、视频帧率、视频码率。
在一种可能的实现方式中,确定单元具体用于:
根据当前设备能够解码的视频流各自的分数,确定当前设备能够解码的视频流中分数最高的视频流,得到目标视频流。
在一种可能的实现方式中,确定单元具体用于:循环根据目标视频流集合中每条视频流的标识,确定目标视频流集合中当前设备能够解码的视频流;
当确定当前视频流为目标视频流集合中当前设备能够解码的视频流时,根据当前视频流的视频流参数,确定当前视频流的分数。
在一种可能的实现方式中,确定单元具体用于:
循环根据目标视频流集合中每条视频流的标识,确定目标视频流集合中当前设备能够解码的视频流;
当确定当前视频流为目标视频流集合中当前设备能够解码的视频流时,根据当前视频流的视频流参数,确定当前视频流的分数;
当确定当前视频流的分数大于或者等于预设的分数阈值时,确定当前视频流为目标视频流。
在一种可能的实现方式中,确定单元具体用于:
根据目标视频流集合中每条音频流的标识,确定至少一条音频流中当前设备能够解码的音频流;
从当前设备能够解码的音频流中确定一条音频流为目标音频流;
对目标音频流进行解码。
第三方面,本申请还提供一种终端设备,终端设备用于执行上述任一的音视频解码的方法。
附图说明
图1A为本申请实施例提供的终端设备的构架示意图;
图1B为本申请实施例的终端设备的软件结构框图;
图2为本申请实施例提供的一种音视频播放方法的流程图;
图3为本申请另一实施例提供的一种音视频解码的方法的流程图;
图4为本申请另一实施例提供的一种音视频解码的方法的流程图;
图5为本申请实施例提供的一种音视频解码的装置的结构示意图。
具体实施方式
首先对目前终端设备进行音视频解码的流程进行说明。
对音视频进行解码指的是对音视频文件中的媒体流进行解码。媒体流通常包括音频流和视频流。
音视频文件中包含有音频流和视频流,音视频播放器中的多媒体提取器(MediaExtractor)对音视频文件中的音频流和视频流进行分离,分别获得音频流和视频流。当音视频文件包含多条音频流和视频流时,获得多条音频流和多条视频流;之后,音频解码器对多条音频流中的第一条音频流进行解码,视频解码器对多条视频流中的第一条视频流进行解码,分别得到第一条视频流的音频采样数据(例如PCM音频数据)和第一条视频流的视频数据(例如YUV图片组成的视频数据);
在进行音视频播放时,音频采样数据和视频数据分别通过音频输出设备和视频输出设备进行同步播放。
通常在音视频文件中,多条音频流是基于不同的音频编码标准进行编码得到的,多条视频流是基于不同的视频编码标准得到的。终端设备通常仅支持部分音频编码标准和部分视频编码标准。
为了便于理解本申请实施例提供的技术方案,下面对本申请实施例常见的应用场景进行介绍。
在进行存储和传输时,通常会对根据编码标准对音频采样数据和视频数据进行编码,得到音频流和视频流,以降低数据量。
在进行音频播放和视频播放时,需要将编码后的音频流和视频进行解码,用以通过终端设备的输出设备进行播放。
目前,当音视频文件中包含多条视频流或者多条音频流时,音频解码器时对多条音频流中的第一条音频流进行解码,或者视频解码器时对多条视频流中的第一条视频流进行解码。
以音频解码器对多条音频流中的第一条音频流进行解码为例。
当音频解码器对多条音频流中的第一条音频流进行解码时,如果音频解码器不支持第一条音频流的音频编码标准(第一条音频流是基于该音频编码便准得到的),会导致音视频文件中的音频无法正常播放。
当音频编码器不支持第一条音频流的音频编码标准时,由于音频解码器仅对多条音频流中的第一条音频流进行解码,即使多条音频流中包含音频编码器支持的音频编码标准,也不能正常播放音频。
视频解码器对多条视频流中的第一条视频流进行解码时也存在同样的问题。
因此,当终端设备的用户想要播放音视频文件中的内容时,即使音视频文件中包含终端设备支持的编码标准,用户也无法播放音视频文件中的内容,导致用户体验较低。
为了解决以上的技术问题,本申请实施例提供了一种音视频解码的方法、音视频解码的装置以及终端设备。
在本申请中,确定目标文件中包含的媒体流集合,媒体流集合中至少包括多条视频流;根据目标视频流集合中每条视频流的标识,确定目标视频流集合中当前设备能够解码的视频流,目标视频流集合为多条视频流中的至少一条;根据目标视频流集合中当前设备能够解码的视频流各自的视频流参数,确定目标视频流集合中当前设备能够解码的视频流各自的分数;根据目标视频流集合中当前设备能够解码的视频流各自的分数,从当前设备能够解码的视频流中确定目标视频流;对目标视频流进行解码。
当前设备能够解码的视频流指的是当前设备能够支持该视频流的视频解码标准,基于该视频流的视频解码标准对该视频流进行解码。
采用本申请的方案,当音视频文件中包含多条视频流时,并非是直接确定多条视频流中的第一条视频流进行解码,而是利用视频流的标识,得到媒体流集合中的部分或者全部的当前设备能够解码的视频流,并利用视频流的视频流参数确定视频流的分数,根据视频流的分数确定播放特性较好的目标视频流。因此,采用本申请的方案,能够在当前设备不支持多条视频流中第一条视频流的视频编码格式时,对多条视频流中能够支持视频编码格式的其他视频流进行解码,从而实现对音视频文件中视频内容的播放,提高用户体验。
本申请说明中的“第一”、“第二”等用词仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。
在本申请中,除非另有明确的规定和限定,术语“连接”应做广义理解,例如,“连接”可以是固定连接,也可以是可拆卸连接,或成一体;可以是直接连接,也可以通过中间媒介间接连接。
本申请实施例不具体限定终端设备的类型,终端设备可以为手机、笔记本电脑、可穿戴电子设备(例如智能手表)、平板电脑、增强现实(augmented reality,AR)设备、虚拟现实(virtual reality,VR)设备等。
以下对终端设备的构架进行说明。
请参阅图1A,图1A为本申请实施例提供的终端设备的构架示意图。
如图1A所示,终端设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
可以理解的是,本发明实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
视频编解码器用于对数字视频压缩或解压缩。电子设备100可以支持一种或多种视频编解码器。这样,电子设备100可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,MPEG-1,MPEG-2,MPEG-3,MPEG-4等。
具体地,视频编解码器可以包括专门处理视频数据的视频编码器和视频解码器,以及专门处理音频数据的音频编码器和音频解码器。
在本申请的一些实施例的音视频解码方法,应用于终端设备100的处理器110所包括的视频解码器和音频解码器。
电子设备100通过GPU、显示屏194,以及应用处理器等实现显示功能。
显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode的,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。在一些实施例中,电子设备100可以包括1个或N个显示屏194,N为大于1的正整数。
在本申请的一些实施例中,通过视频解码器对视频流进行解码,得到待播放的视频数据,并通过显示屏194进行播放。
电子设备100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。在一些实施例中,音频模块170可以设置于处理器110中,或将音频模块170的部分功能模块设置于处理器110中。
扬声器170A,也称“喇叭”,用于将音频电信号转换为声音信号。电子设备100可以通过扬声器170A收听音乐,或收听免提通话。
在本申请的一些实施例中,通过音频解码器对音频流进行解码,得到待播放的音频采集数据,并通过扬声器170A进行播放。
电子设备100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本发明实施例以分层架构的安卓Android系统为例,示例性说明电子设备100的软件结构。
请参阅图1B,图1B为本申请实施例的终端设备的软件结构框图。
分层架构将软件分成若干个层,每一层有各自的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android系统分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(Android runtime)和系统库,以及内核层。
应用程序层可以包括一系列应用程序包。
如图1B所示,应用程序包可以包括相机,图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,视频,短信息等应用程序。
在本申请的一些实施例中,应用程序包包括音视频播放器,用于实现对于音频、视频,以及音频和视频的播放。
应用程序框架层为应用程序层的应用程序提供应用编程接口(app l icat ionprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。
在本申请的一些实施例中,音视频播放器调用应用程序框架层的接口,确定目标文件包含的媒体流、媒体流轨道集合(可以包括音频轨道和视频轨道),以及媒体流轨道集合中每个媒体流轨道的信息。
每个媒体流轨道的信息可以包括:媒体流轨道的编号、媒体流轨道对应的媒体流的标识、媒体流轨道对应的媒体流的一个或多个媒体流参数。
本申请实施例提供一种音视频解码的方法。
请参阅图2,图2为本申请实施例提供的一种音视频播放方法的流程图。
如图2所示,本实施例提供的音视频播放方法包括S101-S105。
S101、确定目标文件中包含的媒体流集合,所述媒体流集合中至少包括多条视频流。
目标文件为待播放的媒体文件,媒体文件可以是视频文件(包含多条视频流),也可以用是音视频文件(包含多条视频流和至少一条音频流)。
S102、根据目标视频流集合中每条视频流的标识,确定所述目标视频流集合中当前设备能够解码的视频流;其中,所述目标视频流集合为所述多条视频流中的至少一条。
视频流的标识用于区分每条视频流。
当前设备能够解码的视频流指的是当前设备能够支持该视频流的编码标准。
目标视频流集合包含的视频流为所述媒体流集合中的多条视频流中的至少一条。
S103、根据所述当前设备能够解码的视频流各自的视频流参数,确定所述当前设备能够解码的视频流各自的分数。
视频流的分数越高,视频流的播放特性较好。
S104、根据所述当前设备能够解码的视频流各自的分数,从所述当前设备能够解码的视频流中确定目标视频流。
S105、对所述目标视频流进行解码。
采用本申请的方案,当目标文件中包含多条视频流时,并非是直接确定多条视频流中的第一条视频流进行解码,而是利用视频流的标识,得到媒体流集合中的部分或者全部的当前设备能够解码的视频流,并利用视频流的视频流参数确定视频流的分数,根据视频流的分数确定播放特性较好的目标视频流。
因此,采用本申请的方案,能够在当前设备不支持多条视频流中第一条视频流的视频编码格式时,对多条视频流中能够支持视频编码格式的其他视频流进行解码,从而实现对音视频文件中视频内容的播放,提高用户体验。
下面结合具体的实现方式进行说明。
请参阅图3,图3为本申请另一实施例提供的一种音视频解码的方法的流程图。
如图3所示,本实施例提供的音视频解码的方法包括S201-S213。
S201、获取目标文件。
目标文件为当前设备待播放的音视频文件。
音视频文件:多媒体文件,也可以称为是容器,通常包含音频流和视频流中的一种或多种。
在本实施例中,目标文件为视频文件,也即目标文件中仅包含视频流。
在一些可能的情况中,待播放的目标文件的来源可以是终端设备本地,也即待播放的目标文件可以是存储在终端设备本地的;待播放的目标文件的还可以是终端设备通过传输协议(例如超文本传输协议HTTP等)获得的。
超文本传输协议(Hyper Text Transfer Protocol,HTTP):请求-响应协议,通常运行在TCP之上,指定客户端可能发送给服务器什么样的消息以及得到什么样的响应。
可以理解地是,本实施例并不限定待播放的目标文件的来源,待播放的目标文件的来源并不影响本实施例的实现。
S202、确定目标文件包含的视频流集合。
目标文件为待播放的视频文件。
视频流集合中包括多条视频流。
视频流集合中包括的多条视频流用于播放同一视频内容。
S203、设置i=1。
i为计数用的变量,取值为正整数。
S204、根据第i条视频流的标识,确定第i条视频流的视频编码标准,第i条视频流为视频流集合中的一条视频流。
第i条视频流的视频编码标准,指的是对视频数据进行编码得到第i条视频流采用的视频编码标准。
通常,为了减小数据量等原因,将视频数据进行编码,例如将由RGB图像组成的视频数据进行编码得到视频流。
视频数据可以直接通过视频输出设备进行播放,例如由于RGB图像组成的视频数据。
对第i条视频流对应的视频数据进行编码所采用的编码标准,即为上述第i条视频流的视频编码标准。
例如,视频编码标准可以包括:H.261,H.263,H.264/AVC,HEVC或AV1等。
通常,视频编解码技术有两套标准,第一套是H.261、国际电联(ITU-T)的标准,例如H.263、H.263+等;第二套是ISO/IEC动态图像专家组(MPEG)的MPEG标准,例如MPEG-1、MPEG-2、MPEG-4等。
H.264/AVC是上述两大组织联合组成的联合视频组(JVT,Joint Video Team)提出的高度压缩数字视频编解码器标准。H.264/AVC也被称为H.264或者AVC/H.264。AVC为高级视频编码(Advanced Video Coding)的简称。
H.264/AVC具有较高的数据压缩比。例如,在同等的图像质量条件下,H.264/AVC的数据压缩比能比H.263高2倍,比MPEG-4高1.5倍。
AV1:一种视频编码标准。
HEVE为高效率视频编码(High Efficiency Video Coding)的简称。
在一种可能的实现方式中,上述第一标识为多用途互联网邮件扩展类型mimetype(Multipurpose Internet Mail Extensions type,mimetype)。
根据第i条视频流的mimetype,确定第i条视频流的视频编码标准。
多用途互联网邮件扩展类型(Multipurpose Internet Mail Extensions type,mimetype):互联网领域中描述消息类型的因特网标准,用于表示文件的媒体类型。
例如,当第i条视频流的mimetype为vedio/mp4时,第i条视频流的类型为vedio(视频),第i条视频流的视频编码标准为MPEG-4。
S205、确定当前设备是否支持第i条视频流的视频编码标准。
若是,则执行S206;否则,执行S208。
确定当前设备是否支持第i条视频流的视频编码标准,也即,确定当前设备是否能够对第i条视频流进行解码,得到第i条视频流的视频数据。
在一种可能的实现方式中,确定当前设备是否支持第i条视频流的视频编码标准,具体包括:
确定在预设的编码标准列表中是否存在第i条视频流的视频编码标准。
预设的编码标准列表可以是存储在当前设备的存储器中的,以供需要时调用。
在预设的编码标准列表中,至少存储有当前设备能够支持的视频编码标准。
S206、确定第i条视频流为目标视频流集合中的视频流。
也即,当确定当前设备支持第i条视频流的视频编码标准时,将第i条视频流增加至目标视频流集合中。
当前设备能够解码目标视频流集合中的视频流。
S207、根据第i条视频流的一个或多个视频流参数,确定第i条视频流的分数。
也即,当确定当前设备支持第i条视频流的视频编码标准时,确定第i条视频流的分数。
视频流参数可以是一个或多个。
第i条视频流的分数用于表征第i条视频流的视频播放特性。
本实施例对S206和S207之间的执行顺序并不做具体限定。
以下对视频流参数进行说明。
在一种可能的实现方式中,视频流参数可以包括以下参数中的一个或多个:
视频编码标准、图像压缩率profile、编码性能等级level、视频帧率、视频码率。
对于视频编码标准的说明参见本实施例以上的说明,在此不再赘述。
图像压缩指的是以较少的比特表示原来的像素矩阵(原来的图像数据)的技术,也称图像编码。图像压缩通过减少图像数据中的冗余信息,降低表示图像的数据量,用以提高数据传输时的效率。
由于图像数据量通常较大,在图像存储和传输时通常需要对图像数据进行压缩处理。
图像压缩率profile用于表征视频中图像的画质,图像压缩率profile越低画质越高。
通常,图像压缩率profile可以分为baseline profile,main profile和highprofile三种。
三种图像压缩率profile的关系为:baseline profile<main profile<highprofile,也即,high profile拥有最高的压缩率。
编码性能等级level,通常用于表征根据解码端的负载和存储空间情况等,对视频数据的参数加以限制的情况,例如最大采样频率、最大图像尺寸、分辨率、最小压缩率,以及最大比特率等。
例如,编码性能等级level是一组特定的约束,表示一种图像压缩率profile所需的解码性能。profile中的支持level指定解码器可能使用的最大图像分辨率、帧率和比特率。一个符合给定level的解码器必须能够解码为该level和所有低level编码的所有视频流。
帧是组成视频的基本单位,通常视频流中包括多帧图像。
视频帧率(Frame rate):用于测量视频中图像帧数的量度,单位为每秒显示帧数(Frames per Second,FPS)或赫兹(Hz)。
视频帧率越高,单位时间内图像的帧数越多,视频播放时画面流畅度越高。
视频码率:音频数据传输时单位时间传输的数据位数,单位通常为千位每秒(kbps)
视频码率:在视频数据传输时,单位时间传送的数据位数。通常视频码率的单位为千位每秒(kbps)。
视频码率也即取样率,单位时间内取样率越大,精度就越高,处理出来的文件就越接近原始文件。也即,视频码率越高,视频中的图像被压缩的比例越小,图像质量的损失越小。
可以理解地是,视频流参数还可以包括除上述参数以外的其他参数。
以下对如何根据第i条视频流的一个或多个视频流参数,确定第i条视频流的分数进行说明。
视频流的视频流参数可以包括一个或多个。
在一种可能的实现方式中,当第i条视频流的视频流参数为一个时,根据该视频流参数确定第i条视频流的分数。
例如,视频流集合中包括三个视频流,视频流参数为视频编码标准,三个视频流的视频编码标准分别为HEVC,H.264/AVC和AV1。
例如,根据三种视频编码标准的特性,确定上述三种视频编码标准HEVC,H.264/AVC和AV1对应的分数分别为10、20、10。
以上数据为对视频流参数对应的分数的举例说明,在一些可能的情况中,对于视频流参数对应的分数,可以根据实际需求确定。
在一种可能的实现方式中,当第i条视频流的视频流参数为多个时,根据第i条视频流的一个或多个视频流参数,确定第i条视频流的分数,具体包括:
分别确定多个视频流参数对应的分数,多个视频流参数为第i条视频流的多个视频流参数;
求和多个视频流参数对应的分数,得到多个视频流参数对应的分数总和;
根据分数总和确定第i条视频流的分数。
上述多个视频流参数为第i条视频流的多个视频流参数。
例如,视频流参数包括视频编标准、图像压缩率profile、编码性能等级level、视频帧率、视频码率。
在一种可能的实现方式中,视频压缩率和level可以整体作为一个参数,对应有一个整体的分数。
也即,可以将图像压缩率profile和编码性能level看作是一个视频流参数profile and level。
例如,视频流集合中包括三个视频流,分别为第一视频流、第二视频流和第三视频流。
分别确定三个视频流的视频流参数对应的分数,如表1所示。
表1视频流集合中视频流的视频流参数对应的分数
视频编码标准 | profile and level | 视频帧率 | 视频码率 | 总分 | |
第一视频流 | 10 | 3 | 2 | 2 | 17 |
第二视频流 | 20 | 3 | 4 | 4 | 31 |
第三视频流 | 30 | 2 | 2 | 1 | 35 |
视频流集合中包括三条视频流,根据视频流参数确定三条视频流的分数分别为17、31、35。
以上数据均为对视频参数对应的分数的举例说明,在一些可能的情况中,对于视频流参数的分数,可以根据实际需求确定。
在一些可能的情况中,上表中的数据根据视频流集合中视频流的实际情况而确定。
对于终端设备来说,终端设备本身的硬件会对该终端设备能够播放的视频流有一定的限制。
例如,终端设备的视频播放器能够支持的视频帧率和视频码率是确定的。
下面以视频帧率为例进行说明。
当前设备能够支持的最高视频帧率为当前设备的一个参数,该参数的大小通常由当前设备的硬件确定。
当视频流的视频帧率超过当前设备能够支持的最高视频帧率时,当前设备可能会难以播放该视频流。
在一些可能的情况中,当上述超过程度较大时,当前设备可能会无法播放该视频流。此时,即使当前设备能够支持该视频流的视频编码标准,能够对该视频流进行解码得到待播放的图像数据,当前设备也不能够播放由解码得到的待播放的图像数据。
在一种可能的实现方式中,视频参数包括视频流的视频帧率,当视频流的视频频率大于当前设备能够支持的最高视频帧率时,视频流的视频频率越大,视频流的视频频率对应的分数越低。
通常,视频流的视频帧率越高,播放该视频流时画面越流畅。
综上,在一种可能的实现方式中,视频参数包括视频流的视频帧率,当视频流的视频频率小于或等于当前设备能够支持的最高视频帧率时,视频流的视频频率越大,视频流的视频频率对应的分数越高;当视频流的视频频率大于当前设备能够支持的最高视频帧率时,视频流的视频频率越大,视频流的视频频率对应的分数越低。
对于视频码率的说明类似于视频帧率,在此不再赘述。
在一种可能的实现方式中,视频参数包括视频流的视频码率,当视频流的视频频率大于当前设备能够支持的最高视频码率时,视频流的视频频率越大,视频流的视频频率对应的分数越低。
在一种可能的实现方式中,视频参数包括视频流的视频码率,当视频流的视频频率小于或等于当前设备能够支持的最高视频码率时,视频流的视频频率越大,视频流的视频频率对应的分数越高;当视频流的视频频率大于当前设备能够支持的最高视频码率时,视频流的视频频率越大,视频流的视频频率对应的分数越低。
在一种可能的实现方式中,当第i条视频流的视频流参数为多个时,求和多个视频流参数对应的分数,得到多个视频流参数对应的分数总和,具体可以包括:
根据多个视频流参数中各个视频参数的权重,求和多个视频流参数对应的分数,得到多个视频流参数对应的分数总和。
不同的视频流参数能够表征视频流不同的特性,在播放视频时可能会关注视频流不同的特性。因此,可以对多个视频流参数中各个视频参数设置权重,根据权重进行求和得到分数。
在一种可能的实现方式中,可以将第i条视频流的分数存储在当前设备的存储器中,以便需要时调用。
在一种可能的实现方式中,在确定目标文件包含的视频流集合时,可以确定视频流集合中视频流的标识和一个或多个视频流参数,从而确定S204中第i条视频流的标识,以及确定S207中第i条视频流的一个或多个视频流参数。
在一些可能的情况中,当前设备的视频播放器调用应用软件框架层的接口,得到目标文件的视频轨道集合,以及视频轨道集合中每个视频轨道的信息。
视频轨道集合中包括一个或多个视频轨道。
视频轨道集合中的每个视频轨道对应视频流集合中的每个视频流。
根据视频轨道集合能够确定目标文件包含的视频流集合。
每个视频轨道的信息可以包括:视频轨道的编号、视频轨道对应的视频流的标识、视频轨道对应的视频流的一个或多个视频流参数。
例如,视频轨道集合中包括第一视频轨道和第二视频轨道,编号分别为1和2。
在一种可能的实现方式中,视频轨道对应的视频流的标识为该视频流的mimetype。
对于mimetype的说明参见本实施例以上的说明,在此不再赘述。
对于视频流参数的说明参见本实施例以上的说明,在此不再赘述。
S208、确定第i条视频流的分数是否大于或等于分数阈值。
若是,则执行S212;否则,执行S209。
分数阈值是预设的阈值。
由于视频流的分数用于表征视频流的播放特性,当第i条视频流的分数大于或等于分数阈值,也即当第i条视频流的分数较大时,表明已经出现播放特性较好的视频流。
S203-S210为i数值增加的循环,当在这个循环的过程中已经出现播放特性较好的视频流时,不再继续进行i数值增加的循环,通过降低循环次数,提高音视频播放时的处理效率。
S209、设置i=i+1。
将i的数值增加1,对视频流集合中的下一条视频流进行后续处理。
S210、确定视频集合中是否存在第i条视频流。
若是,则执行S204;否则,执行S211。
例如,视频流集合中包含n条视频流,当i大于n时,确定视频流集合中不存在第i条视频流。
当确定视频流集合中存在第i条视频流时,根据第i条视频流的标识确定第i条视频流的视频编码标准;
当确定视频流集合中不存在第i条视频流时,执行S211。
例如,在本实施例中,当前设备支持第1条视频流的视频编码标准时,根据第1条视频流的一个或多个视频流参数,确定第1条视频流的分数;
当前设备不支持第1条视频流的视频编码标准时,确定视频流集合中是否存在第2条视频流;
当确定视频流集合中存在第2条视频流,根据第2条视频流的标识确定第2条视频流的视频编码标准;
当确定视频流集合中不存在第2条视频流,执行S210。
在S203-S210中,依次对视频集合中的至少一条视频流进行终端设备是否支持视频编码格式的确定,当终端设备支持当前视频流的视频编码格式时,确定当前视频流的分数。
通过上述方式,确定当前设备支持视频编码标准的至少一条视频流(也即确定目标视频流集合中的视频流),以及上述当前设备支持视频编码标准的至少一条视频流的分数(也即目标视频流集合中的视频流的分数)。
S211、确定目标视频流集合中是否包括视频流。
若是,则执行S212;否则,执行S214。
当在视频流集合中,存在一条或多条视频流的视频编码标准是当前设备能够支持的,目标视频流集合中包括这一条或多条视频流。此时,根据目标视频流集合中的视频流的分数,从目标视频流集合中的视频流中确定目标视频流;
对于视频流集合中所有的视频流的视频编码标准,当前设备均是不能支持的,此时,目标视频流集合中不包括视频流。此时,执行目标文件播放异常的操作。
S212、根据目标视频流集合中的视频流的分数,从目标视频流集合中的视频流中确定目标视频流。
当终端设备根据目标文件进行视频播放时,通常会对目标文件中包含的一条视频流进行播放。
由于视频流的分数用于表征视频流的播放特性,根据目标视频流集合中的视频流的分数,从目标视频流集合中的视频流中确定一条目标视频流。
终端设备通过对目标视频流的播放,实现对于目标文件的播放。
在一些可能的情况中,根据目标视频流集合中的视频流的分数,从目标视频流集合中的视频流中确定目标视频流,具体包括:
确定目标视频流集合中的视频流的分数最高的视频流为上述目标视频流。
根据上述说明,当存在视频流的分数大于或等于分数阈值时,S212可以理解为确定该视频流为目标视频流。
例如,视频流集合中包括三个视频流,视频流参数为视频编码标准,三个视频流的视频编码标准分别为HEVC,H.264/AVC和AV1,三种视频编码标准对应的评分分别为10、20、10。
由于视频编码标准为H.264/AVC对应的评分最高,确定目标视频流为视频编码标准为H.264/AVC的视频流。
例如,视频流集合中包括三条视频流,分别为第一视频流、第二视频流和第三视频流。
视频流参数包括视频编码标准、profile and level、视频帧率、视频码率。
根据上述视频流参数确定第一视频流、第二视频流和第三视频流的分数分别为17、31、35(具体实现方式参见本实施例以上的说明)。由于第三视频流的分数最高,确定目标视频流为第三视频流。
S213、对目标视频流进行解码,得到目标视频流的视频数据。
具体地,根据目标视频流的视频编码标准,对目标视频流进行解码,得到目标视频流的视频数据。
目标视频流的视频数据为可以通过视频输出设备进行播放的数据,例如,如图1所示,目标视频流的视频数据通过终端设备100的显示屏进行播放。
这里的终端设备100即为上述的当前设备。
在一种可能的实现方式中,在得到目标视频流的视频数据之后,还可以包括:
通过视频输出设备播放目标视频流的视频数据。
S214、执行目标文件解码异常的操作。
根据本实施例以上的说明,在S211中确定目标视频流集合中不包括视频流时,执行S214目标文件解码异常的操作。
此时,对于目标文件中所有的视频流的视频编码标准,当前设备均不能支持。
在一种可能的实现方式中,执行目标文件解码异常的操作具体包括:
确定视频流集合中任意一个视频流为第二目标视频流,并对第二目标视频流进行解码。
由于此时当前设备并不能对第二目标视频流进行解码,因此,执行目标文件解码异常的操作还可以包括:产生目标文件解码异常的提示信息。
在一些可能的实现方式中,目标文件解码异常的提示信息通过终端设备的显示屏进行显示。
在一种可能的实现方式中,确定轨道编号为1的视频流为第二目标视频流。
可以理解地是,本实施例仅说明在S211中确定目标视频流集合中不包括视频流时,执行目标文件解码异常的操作,并非限定其他情况不能上述执行目标文件解码异常的操作。
采用本申请的方案,当音视频文件中包含多条视频流时,并非是直接确定多条视频流中的第一条视频流进行解码,而是利用视频流的标识,得到媒体流集合中的部分或者全部的当前设备能够解码的视频流,并利用视频流的视频流参数确定视频流的分数,根据视频流的分数确定播放特性较好的目标视频流。
因此,采用本申请的方案,能够在当前设备不支持多条视频流中第一条视频流的视频编码格式时,对多条视频流中能够支持视频编码格式的其他视频流进行解码,从而实现对音视频文件中视频内容的播放,提高用户体验。
在一种可能的情况中,在以上实施例S205中,确定当前设备支持第i条视频流的视频编码标准之后,还可以直接对第i视频流进行解码。也即,当确定视频流集合中的一条视频流能够被当前设备支持解码,则对该条视频流进行解码,不再进行后续的循环,以简化处理流程。
在以上实施例中,目标文件中仅包含多个视频流。通常,终端设备会同时进行音频播放和视频播放,此时,目标文件中不仅包含多个视频流,还包含一个或多个音频流。
下面针对目标文件中包含多个视频流和一个或多个音频流的情况进行说明。
本申请实施例还提供了另一种音视频解码的方法。
对于本实施例提供的音视频解码的方法,对于目标文件中包含的视频流的说明和以上实施例中的说明类似,为了避免重复,这里不再赘述,请参见以上实施例中的说明。
请参阅图4,图4为本申请另一实施例提供的一种音视频解码的方法的流程图。
如图4所示,本实施例提供的音视频解码的方法包括S301-S313。
S301、获取目标文件。
在本实施例中,目标文件为音视频文件,目标文件中包含多个视频流以及一个或多个音频流。
S302、确定目标文件中包含的媒体流集合。
媒体流集合中包括多个视频流,以及一个或多个音频流。
当媒体流集合中包括多个音频流时,多个音频流用于播放同一音频内容。
S303、设置j=1。
j为计数用的变量,取值为正整数。
S304、根据第j条媒体流的标识,确定第j条媒体流的编码标准,第j条媒体流为媒体流集合中的一个媒体流。
第j条媒体流的编码标准指的是视频编码标准或音频编码标准。
当第j条媒体流为音频流时,第j条媒体流的编码标准为第j条媒体流的音频编码标准;
当第j条媒体流为视频流时,第j条媒体流的编码标准为第j条媒体流的视频编码标准。
对于音频编码标准参见以上实施例的说明,这里不再赘述。
以下对音频编码标准进行说明。
当第j条媒体流为音频流时,第j条媒体流的音频编码标准,指的是对第j条音频流中音频采样数据进行编码时采用的编码标准。
音频采样数据为可以直接通过音频输出设备进行播放的数据。
通常,为了减小数据量等原因,对音频采样数据进行编码,例如将PCM音频采样数据进行编码得到音频流。
对音频采样数据进行编码采用的音频编码标准,即为上述的音频编码标准。
音频编码标准可以包括:WAV,AAC,OGG等。
在一种可能的实现方式中,第j条媒体流的标识可以为第j条媒体流的mimetype。
对于mimetype的说明,参见以上实施例中的说明,这里不再赘述。
S305、根据第j条媒体流的上述标识,确定第j条媒体流的类型。
第j条媒体流的类型为视频流或音频流。
第j条媒体流的标识可以为第j条媒体流的mimetype;根据第j条媒体流的mimetype,能够确定第j条媒体流的类型为音频流或视频流。
例如,第j条媒体流的mimetype为audio/x-wav,第j条媒体流的类型为音频流。
例如,第j条媒体流的mimetype为video/mp4,第j条媒体流的类型为视频流。
S306、确定当前设备是否支持第j条媒体流的编码标准。
若是,则执行S307;否则,执行S309。
当第j条媒体流为音频流时,确定当前设备是否支持第j条媒体流的编码标准,也即,确定当前设备是否能够对第j条媒体流进行解码,得到第j条媒体流的音频采样数据。
在一种可能的实现方式中,确定当前设备是否支持第j条媒体流的编码标准,具体包括:
确定在预设的编码标准列表中是否存在第j条媒体流的编码标准。
预设的编码标准列表中包括当前设备支持的编码标准。
由于第j条媒体流可能为视频流或音频流,预设的编码标准列表中包括当前设备支持的音频编码标准和视频编码标准。
预设的编码标准列表可以是存储在当前设备的存储器中的,以供需要时调用。
S307、确定第j条媒体流的类型是否为音频流。
若是,则执行S308;否则,执行S309-S311.
在一种可能的实现方式中,还可以确定第j条媒体流的类型是否为视频流,若是,则执行S309-S311;否则,执行S308.
本实施例对S306和S307的顺序并不做限定。
S308、确定第j条媒体流为目标音频流集合中的音频流。
也即,当确定当前设备支持第j条媒体流的编码格式时,将第j条媒体流增加至目标音频流集合中。
当前设备能够解码目标音频流集合中的音频流。
S309、确定第j条媒体流为目标视频流集合中的视频流。
也即,当确定当前设备支持第j条媒体流的编码格式时,将第j条媒体流增加至目标视频流集合中。
当前设备能够解码目标音频流集合中的视频流。
S310、根据第j条媒体流的一个或多个媒体流参数确定第j条媒体流的分数。
由于第j条媒体流为视频流,S310中的媒体流参数为视频流参数。
通常视频数据的数据量较大,视频编码标准较多。因此,当第j条媒体流为视频流时且当前设备能够支持视频编码标准时,确定第j条媒体流的分数,用以确定播放特性较好的视频流进行解码;相比于视频数据来说音频数据的数据量通常较小,因此可以不采用打分的形式确定播放性能,仅确定当前设备是否支持音频编码标准。
类似于以上实施例中对S207的说明,在一种可能的实现方式中,当前设备的音视频播放器调用应用软件框架层的接口,得到目标文件的媒体流轨道集合,以及媒体流轨道集合中每个媒体流轨道的信息。
媒体流轨道可以为视频轨道或音频轨道。
由于目标文件中包含有多个视频流,媒体流轨道集合中包括一个或多个音频轨道,和多个视频轨道。
媒体流轨道集合中的每个媒体流轨道对应媒体流集合中的每个媒体流。
根据视频轨道集合能够确定目标文件包含的视频流集合。
每个媒体流轨道的信息可以包括:媒体流轨道的编号、媒体流轨道对应的媒体流的标识、媒体流轨道对应的媒体流的一个或多个媒体流参数。
对于媒体流参数的说明和视频流参数类似,参见以上实施例中对于视频流参数的说明,这里不再赘述。
例如,媒体流轨道集合中包括第一视频轨道、第一音频轨道,以及第二视频轨道,编号分别为1、2和3。
在一种可能的实现方式中,媒体流轨道对应的媒体流的标识为该媒体流的mimetype。
对于mimetype的说明参见本实施例以上的说明,在此不再赘述。
S311、确定第j条媒体流的分数是否大于或等于分数阈值。
若是,则执行S315;否则,执行S312。
在S311中,第j条媒体流为视频流。
S312、设置j=j+1。
将j的数值增加1,对媒体流集合中的下一条媒体流进行处理。
S313、确定媒体流集合中是否存在第j条媒体流。
若是,则执行S304;否则,执行S314。
在S303-S314中,依次对媒体流集合中的至少一条视频流进行当前设备是否支持视频编码格式的确定,以及依次对媒体流集合中的音频流进行当前设备是否支持音频编码挨个试的确定。当终端设备支持当前视频流的视频编码格式时,确定当前视频流的分数。
通过上述方式,确定当前设备支持视频编码标准的至少一条视频流(也即确定目标视频流集合中的视频流)、上述当前设备支持视频编码标准的至少一条视频流的分数(也即目标视频流集合中的视频流的分数),以及当前设备支持音频编码标准的音频流(也即确定目标音频流集合中的音频流)。
S314、确定目标音频流集合中是否包括音频流,并且目标视频流集合中是否包括视频流。
若是,则执行S315;否则,执行S317。
对于媒体流集合中所有的视频流的视频编码标准,当前设备均是不能支持的,此时,目标视频流集合中不包括视频流。此时,执行目标文件解码异常的操作;
对于媒体流集合中所有的音频流的音频编码标准,当前设备均是不能支持的,此时,目标音频流集合中不包括音频流。此时,执行目标文件解码异常的操作。
当在媒体流集合中,存在一条或多条音频流的音频编码标准是当前设备能够支持的,目标音频流集合中包括这一条或多条音频流;当在媒体流集合中,存在一条或多条频流的视频编码标准是当前设备能够支持的,目标视频流集合中包括这一条或多条视频流。
当目标音频流集合中包括音频流,并且目标视频流集合中包括视频时,从目标音频流集合中的音频流中确定目标音频流,根据目标视频流集合中的视频流的分数,从目标视频流集合中的视频流中确定目标视频流。
S315、从目标音频流集合中的音频流中确定目标音频流;根据目标视频流集合中的视频流的分数从目标视频流集合中的视频流中确定目标视频流。
本实施例对S315中确定目标音频流和确定目标视频流的先后顺序并不作限定。
S316、对目标音频流进行解码,得到待播放的音频采样数据;对目标视频流进行解码,得到待播放的图像数据。
具体地,基于目标音频流的音频编码标准对目标音频流进行解码,基于目标视频流的视频编码标准对目标视频流进行解码。
本实施例对S316中对目标音频流进行解码和对目标视频流进行解码的先后顺序并不作限定。
S317、执行目标文件解码异常的操作。
在一些可能的情况中,目标文件解码异常的操作可以和S314的确定结果相对应。
例如,确定目标音频流集合中包括音频流且目标视频流集合中不包括视频流、确定目标音频流集合中不包括音频流且目标视频流集合中包括视频流,以及确定目标音频流集合中不包括音频流且目标视频流集合中不包括视频流,三种情况对应不同的目标文件解码异常的操作。
在一种可能的实现方式中,在对目标音频流进行解码,得到待播放的音频采样数据,对目标视频流进行解码,得到待播放的图像数据之后,还可以对待播放的音频采样数据和待播放的图像数据进行同步播放。
通常终端设备用于播放的音视频文件中同时包含有频流和视频流。
采用本申请的方案,在确定目标视频流的过程中,利用视频流的标识,得到媒体流集合中的部分或者全部的当前设备能够解码的视频流,并利用视频流的视频流参数确定视频流的分数。根据视频流的分数确定播放特性较好的目标视频流。当音视频文件中包含多条视频流时,并非是直接确定多条视频流中的第一条视频流进行解码,而是确定当前设备能够解码且播放特性较好的视频流进行解码,从而提高用户体验;在确定目标音频流的过程中,利用音频流的标识,得到媒体流集合中的当前设备能够解码的音频流并确定目标音频流。当音视频文件中包含多条音频流时,并非是直接确定多条音频流中的第一条音频流进行解码,而是确定当前设备能够解码的音频流进行解码,从而提高用户体验。
本申请还提供一种音视频解码的装置。
请参阅图5,图5为本申请实施例提供的一种音视频解码的装置的结构示意图。
本实施例提供的音视频的装置200包括确定单元201和解码单元202。
确定单元201,用于确定目标文件中包含的媒体流集合,所述媒体流集合中至少包括多条视频流。
目标文件为当前设备待播放的音视频文件。
音视频文件:多媒体文件,也可以称为是容器,通常包含音频流和视频流中的一种或多种。
在本实施例中,目标文件为视频文件,也即目标文件中仅包含视频流。
在一些可能的情况中,待播放的目标文件的来源可以是终端设备本地,也即待播放的目标文件可以是存储在终端设备本地的;待播放的目标文件的还可以是终端设备通过传输协议(例如超文本传输协议HTTP等)获得的。
超文本传输协议(Hyper Text Transfer Protocol,HTTP):请求-响应协议,通常运行在TCP之上,指定客户端可能发送给服务器什么样的消息以及得到什么样的响应。
可以理解地是,本实施例并不限定待播放的目标文件的来源,待播放的目标文件的来源并不影响本实施例的实现。
在一些可能的实现方式中,本实施例的音视频解码的装置包括目标文件获取单元,用于在确定目标文件中包含的媒体流集合,所述媒体流集合中至少包括多条视频流之前,获取目标文件。
确定单元201还用于确定目标文件包含的视频流集合。
目标文件为待播放的视频文件。
视频流集合中包括多条视频流。
视频流集合中包括的多条视频流用于播放同一视频内容。
确定单元201,还用于根据目标视频流集合中每条视频流的标识,确定所述目标视频流集合中当前设备能够解码的视频流;其中,所述目标视频流集合为所述多条视频流中的至少一条;根据所述当前设备能够解码的视频流各自的视频流参数,确定所述当前设备能够解码的视频流各自的分数;根据所述当前设备能够解码的视频流各自的分数,从所述当前设备能够解码的视频流中确定目标视频流。
当前设备能够解码的视频流指的是当前设备能够支持视频流的编码标准。
这里本实施例提供一种根据目标视频流集合中每条视频流的标识,确定所述目标视频流集合中当前设备能够解码的视频流的实现方式。
确定单元具体用于设置i=1,根据第i条视频流的标识,确定第i条视频流的视频编码标准,第i条视频流为视频流集合中的一条视频流。
i为计数用的变量,取值为正整数。
确定单元201具体用于循环视频流的条数,例如视频流的条数为i,根据第i条视频流的标识,确定第i条视频流的视频编码标准,第i条视频流为视频流集合中的一条视频流。
i为计数用的变量,取值为正整数。
第i条视频流的视频编码标准,指的是对视频数据进行编码得到第i条视频流采用的视频编码标准。
通常,为了减小数据量等原因,将视频数据进行编码,例如将由RGB图像组成的视频数据进行编码得到视频流。
视频数据可以直接通过视频输出设备进行播放,例如由于RGB图像组成的视频数据。
对第i条视频流对应的视频数据进行编码所采用的编码标准,即为上述第i条视频流的视频编码标准。
例如,视频编码标准可以包括:H.261,H.263,H.264/AVC,HEVC或AV1等。
通常,视频编解码技术有两套标准,第一套是H.261、国际电联(ITU-T)的标准,例如H.263、H.263+等;第二套是ISO/IEC动态图像专家组(MPEG)的MPEG标准,例如MPEG-1、MPEG-2、MPEG-4等。
H.264/AVC是上述两大组织联合组成的联合视频组(JVT,Joint Video Team)提出的高度压缩数字视频编解码器标准。H.264/AVC也被称为H.264或者AVC/H.264。AVC为高级视频编码(Advanced Video Coding)的简称。
H.264/AVC具有较高的数据压缩比。例如,在同等的图像质量条件下,H.264/AVC的数据压缩比能比H.263高2倍,比MPEG-4高1.5倍。
AV1:一种视频编码标准。
HEVE为高效率视频编码(High Efficiency Video Coding)的简称。
在一种可能的实现方式中,上述第一标识为多用途互联网邮件扩展类型mimetype(Multipurpose Internet Mail Extensions type,mimetype)。
根据第i条视频流的mimetype,确定第i条视频流的视频编码标准。
多用途互联网邮件扩展类型(Multipurpose Internet Mail Extensions type,mimetype):互联网领域中描述消息类型的因特网标准,用于表示文件的媒体类型。
例如,当第i条视频流的mimetype为vedio/mp4时,第i条视频流的类型为vedio(视频),第i条视频流的视频编码标准为MPEG-4。
确定单元201用于确定当前设备是否支持第i条视频流的视频编码标准。
若是,则确定第i条视频流为目标视频流集合中的视频流;
否则,确定第i条视频流的分数是否大于或等于分数阈值。。
确定当前设备是否支持第i条视频流的视频编码标准,也即,确定当前设备是否能够对第i条视频流进行解码,得到第i条视频流的视频数据。
在一种可能的实现方式中,确定当前设备是否支持第i条视频流的视频编码标准,具体包括:
确定在预设的编码标准列表中是否存在第i条视频流的视频编码标准。
预设的编码标准列表可以是存储在当前设备的存储器中的,以供需要时调用。
在预设的编码标准列表中,至少存储有当前设备能够支持的视频编码标准。
确定第i条视频流为目标视频流集合中的视频流,也即,当确定当前设备支持第i条视频流的视频编码标准时,将第i条视频流增加至目标视频流集合中。
当前设备能够解码目标视频流集合中的视频流。
确定单元201用于根据第i条视频流的一个或多个视频流参数,确定第i条视频流的分数。
也即,当确定当前设备支持第i条视频流的视频编码标准时,确定第i条视频流的分数。
视频流参数可以是一个或多个。
第i条视频流的分数用于表征第i条视频流的视频播放特性。
以下对视频流参数进行说明。
在一种可能的实现方式中,视频流参数可以包括以下参数中的一个或多个:
视频编码标准、图像压缩率profile、编码性能等级level、视频帧率、视频码率。
对于视频编码标准的说明参见本实施例以上的说明,在此不再赘述。
图像压缩指的是以较少的比特表示原来的像素矩阵(原来的图像数据)的技术,也称图像编码。图像压缩通过减少图像数据中的冗余信息,降低表示图像的数据量,用以提高数据传输时的效率。
由于图像数据量通常较大,在图像存储和传输时通常需要对图像数据进行压缩处理。
图像压缩率profile用于表征视频中图像的画质,图像压缩率profile越低画质越高。
通常,图像压缩率profile可以分为baseline profile,main profile和highprofile三种。
三种图像压缩率profile的关系为:baseline profile<main profile<highprofile,也即,high profile拥有最高的压缩率。
编码性能等级level,通常用于表征根据解码端的负载和存储空间情况等,对视频数据的参数加以限制的情况,例如最大采样频率、最大图像尺寸、分辨率、最小压缩率,以及最大比特率等。
例如,编码性能等级level是一组特定的约束,表示一种图像压缩率profile所需的解码性能。profile中的支持level指定解码器可能使用的最大图像分辨率、帧率和比特率。一个符合给定level的解码器必须能够解码为该level和所有低level编码的所有视频流。
帧是组成视频的基本单位,通常视频流中包括多帧图像。
视频帧率(Frame rate):用于测量视频中图像帧数的量度,单位为每秒显示帧数(Frames per Second,FPS)或赫兹(Hz)。
视频帧率越高,单位时间内图像的帧数越多,视频播放时画面流畅度越高。
视频码率:音频数据传输时单位时间传输的数据位数,单位通常为千位每秒(kbps)
视频码率:在视频数据传输时,单位时间传送的数据位数。通常视频码率的单位为千位每秒(kbps)。
视频码率也即取样率,单位时间内取样率越大,精度就越高,处理出来的文件就越接近原始文件。也即,视频码率越高,视频中的图像被压缩的比例越小,图像质量的损失越小。
可以理解地是,视频流参数还可以包括除上述参数以外的其他参数。
以下对如何根据第i条视频流的一个或多个视频流参数,确定第i条视频流的分数进行说明。
视频流的视频流参数可以包括一个或多个。
在一种可能的实现方式中,当第i条视频流的视频流参数为一个时,根据该视频流参数确定第i条视频流的分数。
例如,视频流集合中包括三个视频流,视频流参数为视频编码标准,三个视频流的视频编码标准分别为HEVC,H.264/AVC和AV1。
例如,根据三种视频编码标准的特性,确定上述三种视频编码标准HEVC,H.264/AVC和AV1对应的分数分别为10、20、10。
以上数据为对视频流参数对应的分数的举例说明,在一些可能的情况中,对于视频流参数对应的分数,可以根据实际需求确定。
在一种可能的实现方式中,当第i条视频流的视频流参数为多个时,根据第i条视频流的一个或多个视频流参数,确定第i条视频流的分数,具体包括:
分别确定多个视频流参数对应的分数,多个视频流参数为第i条视频流的多个视频流参数;
求和多个视频流参数对应的分数,得到多个视频流参数对应的分数总和;
根据分数总和确定第i条视频流的分数。
上述多个视频流参数为第i条视频流的多个视频流参数。
例如,视频流参数包括视频编标准、图像压缩率profile、编码性能等级level、视频帧率、视频码率。
在一种可能的实现方式中,视频压缩率和level可以整体作为一个参数,对应有一个整体的分数。
也即,可以将图像压缩率profile和编码性能level看作是一个视频流参数profile and level。
例如,视频流集合中包括三个视频流,分别为第一视频流、第二视频流和第三视频流。
分别确定三个视频流的视频流参数对应的分数,如表1所示。
表1视频流集合中视频流的视频流参数对应的分数
视频编码标准 | profile and level | 视频帧率 | 视频码率 | 总分 | |
第一视频流 | 10 | 3 | 2 | 2 | 17 |
第二视频流 | 20 | 3 | 4 | 4 | 31 |
第三视频流 | 30 | 2 | 2 | 1 | 35 |
视频流集合中包括三条视频流,根据视频流参数确定三条视频流的分数分别为17、31、35。
以上数据均为对视频参数对应的分数的举例说明,在一些可能的情况中,对于视频流参数的分数,可以根据实际需求确定。
在一些可能的情况中,上表中的数据根据视频流集合中视频流的实际情况而确定。
对于终端设备来说,终端设备本身的硬件会对该终端设备能够播放的视频流有一定的限制。
例如,终端设备的视频播放器能够支持的视频帧率和视频码率是确定的。
下面以视频帧率为例进行说明。
当前设备能够支持的最高视频帧率为当前设备的一个参数,该参数的大小通常由当前设备的硬件确定。
当视频流的视频帧率超过当前设备能够支持的最高视频帧率时,当前设备可能会难以播放该视频流。
在一些可能的情况中,当上述超过程度较大时,当前设备可能会无法播放该视频流。此时,即使当前设备能够支持该视频流的视频编码标准,能够对该视频流进行解码得到待播放的图像数据,当前设备也不能够播放由解码得到的待播放的图像数据。
在一种可能的实现方式中,视频参数包括视频流的视频帧率,当视频流的视频频率大于当前设备能够支持的最高视频帧率时,视频流的视频频率越大,视频流的视频频率对应的分数越低。
通常,视频流的视频帧率越高,播放该视频流时画面越流畅。
综上,在一种可能的实现方式中,视频参数包括视频流的视频帧率,当视频流的视频频率小于或等于当前设备能够支持的最高视频帧率时,视频流的视频频率越大,视频流的视频频率对应的分数越高;当视频流的视频频率大于当前设备能够支持的最高视频帧率时,视频流的视频频率越大,视频流的视频频率对应的分数越低。
对于视频码率的说明类似于视频帧率,在此不再赘述。
在一种可能的实现方式中,视频参数包括视频流的视频码率,当视频流的视频频率大于当前设备能够支持的最高视频码率时,视频流的视频频率越大,视频流的视频频率对应的分数越低。
在一种可能的实现方式中,视频参数包括视频流的视频码率,当视频流的视频频率小于或等于当前设备能够支持的最高视频码率时,视频流的视频频率越大,视频流的视频频率对应的分数越高;当视频流的视频频率大于当前设备能够支持的最高视频码率时,视频流的视频频率越大,视频流的视频频率对应的分数越低。
在一种可能的实现方式中,当第i条视频流的视频流参数为多个时,求和多个视频流参数对应的分数,得到多个视频流参数对应的分数总和,具体可以包括:
根据多个视频流参数中各个视频参数的权重,求和多个视频流参数对应的分数,得到多个视频流参数对应的分数总和。
不同的视频流参数能够表征视频流不同的特性,在播放视频时可能会关注视频流不同的特性。因此,可以对多个视频流参数中各个视频参数设置权重,根据权重进行求和得到分数。
在一种可能的实现方式中,可以将第i条视频流的分数存储在当前设备的存储器中,以便需要时调用。
在一种可能的实现方式中,在确定目标文件包含的视频流集合时,可以确定视频流集合中视频流的标识和一个或多个视频流参数,从而确定S204中第i条视频流的标识,以及确定S207中第i条视频流的一个或多个视频流参数。
在一些可能的情况中,当前设备的视频播放器调用应用软件框架层的接口,得到目标文件的视频轨道集合,以及视频轨道集合中每个视频轨道的信息。
视频轨道集合中包括一个或多个视频轨道。
视频轨道集合中的每个视频轨道对应视频流集合中的每个视频流。
根据视频轨道集合能够确定目标文件包含的视频流集合。
每个视频轨道的信息可以包括:视频轨道的编号、视频轨道对应的视频流的标识、视频轨道对应的视频流的一个或多个视频流参数。
例如,视频轨道集合中包括第一视频轨道和第二视频轨道,编号分别为1和2。
在一种可能的实现方式中,视频轨道对应的视频流的标识为该视频流的mimetype。
对于mimetype的说明参见本实施例以上的说明,在此不再赘述。
对于视频流参数的说明参见本实施例以上的说明,在此不再赘述。
确定单元201用于确定第i条视频流的分数是否大于或等于分数阈值。
若是,则根据目标视频流集合中的视频流的分数,从目标视频流集合中的视频流中确定目标视频流;
否则,将i的数值增加1,对视频流集合中的下一条视频流进行后续处理。
分数阈值是预设的阈值。
由于视频流的分数用于表征视频流的播放特性,当第i条视频流的分数大于或等于分数阈值,也即当第i条视频流的分数较大时,表明已经出现播放特性较好的视频流。
当在视频流循环的过程中已经出现播放特性较好的视频流时,不再继续进行i数值增加的循环,通过降低循环次数,提高音视频播放时的处理效率。
确定单元201用于确定视频集合中是否存在第i条视频流。
若是,根据第i条视频流的标识,确定第i条视频流的视频编码标准,第i条视频流为视频流集合中的一条视频流;
否则,确定目标视频流集合中是否包括视频流。
例如,视频流集合中包含n条视频流,当i大于n时,确定视频流集合中不存在第i条视频流。
当确定视频流集合中存在第i条视频流时,根据第i条视频流的标识确定第i条视频流的视频编码标准;
当确定视频流集合中不存在第i条视频流时,确定目标视频流集合中是否包括视频流。
例如,在本实施例中,当前设备支持第1条视频流的视频编码标准时,根据第1条视频流的一个或多个视频流参数,确定第1条视频流的分数;
当前设备不支持第1条视频流的视频编码标准时,确定视频流集合中是否存在第2条视频流;
当确定视频流集合中存在第2条视频流,根据第2条视频流的标识确定第2条视频流的视频编码标准;
当确定视频流集合中不存在第2条视频流,确定视频集合中是否存在第i条视频流。
依次对视频集合中的至少一条视频流进行终端设备是否支持视频编码格式的确定,当终端设备支持当前视频流的视频编码格式时,确定当前视频流的分数。
通过上述方式,确定当前设备支持视频编码标准的至少一条视频流(也即确定目标视频流集合中的视频流),以及上述当前设备支持视频编码标准的至少一条视频流的分数(也即目标视频流集合中的视频流的分数)。
确定单元201用于确定目标视频流集合中是否包括视频流。
若是,则根据目标视频流集合中的视频流的分数,从目标视频流集合中的视频流中确定目标视频流;
否则,执行目标文件解码异常的操作。
当在视频流集合中,存在一条或多条视频流的视频编码标准是当前设备能够支持的,目标视频流集合中包括这一条或多条视频流。此时,根据目标视频流集合中的视频流的分数,从目标视频流集合中的视频流中确定目标视频流;
对于视频流集合中所有的视频流的视频编码标准,当前设备均是不能支持的,此时,目标视频流集合中不包括视频流。此时,执行目标文件播放异常的操作。
确定单元201用于根据目标视频流集合中的视频流的分数,从目标视频流集合中的视频流中确定目标视频流。
当终端设备根据目标文件进行视频播放时,通常会对目标文件中包含的一条视频流进行播放。
由于视频流的分数用于表征视频流的播放特性,根据目标视频流集合中的视频流的分数,从目标视频流集合中的视频流中确定一条目标视频流。
终端设备通过对目标视频流的播放,实现对于目标文件的播放。
在一些可能的情况中,根据目标视频流集合中的视频流的分数,从目标视频流集合中的视频流中确定目标视频流,具体包括:
确定目标视频流集合中的视频流的分数最高的视频流为上述目标视频流。
例如,视频流集合中包括三个视频流,视频流参数为视频编码标准,三个视频流的视频编码标准分别为HEVC,H.264/AVC和AV1,三种视频编码标准对应的评分分别为10、20、10。
由于视频编码标准为H.264/AVC对应的评分最高,确定目标视频流为视频编码标准为H.264/AVC的视频流。
例如,视频流集合中包括三条视频流,分别为第一视频流、第二视频流和第三视频流。
视频流参数包括视频编码标准、profile and level、视频帧率、视频码率。
根据上述视频流参数确定第一视频流、第二视频流和第三视频流的分数分别为17、31、35(具体实现方式参见本实施例以上的说明)。由于第三视频流的分数最高,确定目标视频流为第三视频流。
解码单元202用于对所述目标视频流进行解码。
解码单元202用于对目标视频流进行解码,得到目标视频流的视频数据。
具体地,根据目标视频流的视频编码标准,对目标视频流进行解码,得到目标视频流的视频数据。
目标视频流的视频数据为可以通过视频输出设备进行播放的数据,例如,如图1所示,目标视频流的视频数据通过终端设备100的显示屏进行播放。
这里的终端设备100即为上述的当前设备。
在一种可能的实现方式中,在得到目标视频流的视频数据之后,还可以包括:
通过视频输出设备播放目标视频流的视频数据。
确定单元201用于执行目标文件解码异常的操作。
根据本实施例以上的说明,确定目标视频流集合中不包括视频流时,执行目标文件解码异常的操作。
此时,对于目标文件中所有的视频流的视频编码标准,当前设备均不能支持。
在一种可能的实现方式中,执行目标文件解码异常的操作具体包括:
确定视频流集合中任意一个视频流为第二目标视频流,并对第二目标视频流进行解码。
由于此时当前设备并不能对第二目标视频流进行解码,因此,执行目标文件解码异常的操作还可以包括:产生目标文件解码异常的提示信息。
在一些可能的实现方式中,目标文件解码异常的提示信息通过终端设备的显示屏进行显示。
在一种可能的实现方式中,确定轨道编号为1的视频流为第二目标视频流。
可以理解地是,本实施例仅说明确定目标视频流集合中不包括视频流时,执行目标文件解码异常的操作,并非限定其他情况不能上述执行目标文件解码异常的操作。
采用本申请的方案,当音视频文件中包含多条视频流时,并非是直接确定多条视频流中的第一条视频流进行解码,而是利用视频流的标识,得到媒体流集合中的部分或者全部的当前设备能够解码的视频流,并利用视频流的视频流参数确定视频流的分数,根据视频流的分数确定播放特性较好的目标视频流。
因此,采用本申请的方案,能够在当前设备不支持多条视频流中第一条视频流的视频编码格式时,对多条视频流中能够支持视频编码格式的其他视频流进行解码,从而实现对音视频文件中视频内容的播放,提高用户体验。
在一种可能的情况中,在本实施例中,确定单元201确定当前设备支持第i条视频流的视频编码标准之后,还可以直接对第i视频流进行解码。也即,当确定视频流集合中的一条视频流能够被当前设备支持解码,则对该条视频流进行解码,不再进行后续的循环,以简化处理流程。
在以上实施例中,目标文件中仅包含多个视频流。通常,终端设备会同时进行音频播放和视频播放,此时,目标文件中不仅包含多个视频流,还包含一个或多个音频流。
下面针对目标文件中包含多个视频流和一个或多个音频流的情况进行说明。
本申请实施例还提供了另一种音视频解码的装置。
对于本实施例提供的音视频解码的装置,对于目标文件中包含的视频流的说明和以上实施例中的说明类似,为了避免重复,这里不再赘述,请参见以上实施例中的说明。
确定单元用于确定目标文件中包含的媒体流集合。
在本实施例中,目标文件为音视频文件,目标文件中包含多个视频流以及一个或多个音频流。
媒体流集合中包括多个视频流,以及一个或多个音频流。
当媒体流集合中包括多个音频流时,多个音频流用于播放同一音频内容。
确定单元设置j=1,j为计数用的变量,取值为正整数。
确定单元根据第j条媒体流的标识,确定第j条媒体流的编码标准,第j条媒体流为媒体流集合中的一个媒体流。
第j条媒体流的编码标准指的是视频编码标准或音频编码标准。
当第j条媒体流为音频流时,第j条媒体流的编码标准为第j条媒体流的音频编码标准;
当第j条媒体流为视频流时,第j条媒体流的编码标准为第j条媒体流的视频编码标准。
对于音频编码标准参见以上实施例的说明,这里不再赘述。
以下对音频编码标准进行说明。
当第j条媒体流为音频流时,第j条媒体流的音频编码标准,指的是对第j条音频流中音频采样数据进行编码时采用的编码标准。
音频采样数据为可以直接通过音频输出设备进行播放的数据。
通常,为了减小数据量等原因,对音频采样数据进行编码,例如将PCM音频采样数据进行编码得到音频流。
对音频采样数据进行编码采用的音频编码标准,即为上述的音频编码标准。
音频编码标准可以包括:WAV,AAC,OGG等。
在一种可能的实现方式中,第j条媒体流的标识可以为第j条媒体流的mimetype。
对于mimetype的说明,参见以上实施例中的说明,这里不再赘述。
确定单元用于根据第j条媒体流的上述标识,确定第j条媒体流的类型。
第j条媒体流的类型为视频流或音频流。
第j条媒体流的标识可以为第j条媒体流的mimetype;根据第j条媒体流的mimetype,能够确定第j条媒体流的类型为音频流或视频流。
例如,第j条媒体流的mimetype为audio/x-wav,第j条媒体流的类型为音频流。
例如,第j条媒体流的mimetype为video/mp4,第j条媒体流的类型为视频流。
确定单元用于确定当前设备是否支持第j条媒体流的编码标准。
若是,确定第j条媒体流的类型是否为音频流;
否则,确定第j条媒体流为目标视频流集合中的视频流。
当第j条媒体流为音频流时,确定当前设备是否支持第j条媒体流的编码标准,也即,确定当前设备是否能够对第j条媒体流进行解码,得到第j条媒体流的音频采样数据。
在一种可能的实现方式中,确定当前设备是否支持第j条媒体流的编码标准,具体包括:
确定在预设的编码标准列表中是否存在第j条媒体流的编码标准。
预设的编码标准列表中包括当前设备支持的编码标准。
由于第j条媒体流可能为视频流或音频流,预设的编码标准列表中包括当前设备支持的音频编码标准和视频编码标准。
预设的编码标准列表可以是存储在当前设备的存储器中的,以供需要时调用。
确定单元用于确定第j条媒体流的类型是否为音频流。
若是,则确定第j条媒体流为目标音频流集合中的音频流;
否则,确定第j条媒体流为目标视频流集合中的视频流;根据第j条媒体流的一个或多个媒体流参数确定第j条媒体流的分数;确定第j条媒体流的分数是否大于或等于分数阈值。
在一种可能的实现方式中,还可以确定第j条媒体流的类型是否为视频流,若是,则确定第j条媒体流为目标视频流集合中的视频流;根据第j条媒体流的一个或多个媒体流参数确定第j条媒体流的分数;确定第j条媒体流的分数是否大于或等于分数阈值;否则,确定第j条媒体流为目标音频流集合中的音频流.
确定单元用于确定第j条媒体流为目标音频流集合中的音频流。
也即,当确定当前设备支持第j条媒体流的编码格式时,将第j条媒体流增加至目标音频流集合中。
当前设备能够解码目标音频流集合中的音频流。
确定单元用于确定第j条媒体流为目标视频流集合中的视频流。
也即,当确定当前设备支持第j条媒体流的编码格式时,将第j条媒体流增加至目标视频流集合中。
当前设备能够解码目标音频流集合中的视频流。
确定单元用于根据第j条媒体流的一个或多个媒体流参数确定第j条媒体流的分数。
由于第j条媒体流为视频流,媒体流参数为视频流参数。
通常视频数据的数据量较大,视频编码标准较多。因此,当第j条媒体流为视频流时且当前设备能够支持视频编码标准时,确定第j条媒体流的分数,用以确定播放特性较好的视频流进行解码;相比于视频数据来说音频数据的数据量通常较小,因此可以不采用打分的形式确定播放性能,仅确定当前设备是否支持音频编码标准。
类似于以上实施例中的说明,在一种可能的实现方式中,当前设备的音视频播放器调用应用软件框架层的接口,得到目标文件的媒体流轨道集合,以及媒体流轨道集合中每个媒体流轨道的信息。
媒体流轨道可以为视频轨道或音频轨道。
由于目标文件中包含有多个视频流,媒体流轨道集合中包括一个或多个音频轨道,和多个视频轨道。
媒体流轨道集合中的每个媒体流轨道对应媒体流集合中的每个媒体流。
根据视频轨道集合能够确定目标文件包含的视频流集合。
每个媒体流轨道的信息可以包括:媒体流轨道的编号、媒体流轨道对应的媒体流的标识、媒体流轨道对应的媒体流的一个或多个媒体流参数。
对于媒体流参数的说明和视频流参数类似,参见以上实施例中对于视频流参数的说明,这里不再赘述。
例如,媒体流轨道集合中包括第一视频轨道、第一音频轨道,以及第二视频轨道,编号分别为1、2和3。
在一种可能的实现方式中,媒体流轨道对应的媒体流的标识为该媒体流的mimetype。
对于mimetype的说明参见本实施例以上的说明,在此不再赘述。
确定单元用于确定第j条媒体流的分数是否大于或等于分数阈值。
若是,则从目标音频流集合中的音频流中确定目标音频流;根据目标视频流集合中的视频流的分数从目标视频流集合中的视频流中确定目标视频流;否则,将j的数值增加1,对媒体流集合中的下一条媒体流进行处理。
这里第j条媒体流为视频流。
确定单元用于确定媒体流集合中是否存在第j条媒体流。
若是,则根据第j条媒体流的标识,确定第j条媒体流的编码标准,第j条媒体流为媒体流集合中的一个媒体流;否则,确定目标音频流集合中是否包括音频流,并且目标视频流集合中是否包括视频流。
依次对媒体流集合中的至少一条视频流进行当前设备是否支持视频编码格式的确定,以及依次对媒体流集合中的音频流进行当前设备是否支持音频编码挨个试的确定。当终端设备支持当前视频流的视频编码格式时,确定当前视频流的分数。
通过上述方式,确定当前设备支持视频编码标准的至少一条视频流(也即确定目标视频流集合中的视频流)、上述当前设备支持视频编码标准的至少一条视频流的分数(也即目标视频流集合中的视频流的分数),以及当前设备支持音频编码标准的音频流(也即确定目标音频流集合中的音频流)。
确定单元用于确定目标音频流集合中是否包括音频流,并且目标视频流集合中是否包括视频流。
若是,则从目标音频流集合中的音频流中确定目标音频流;根据目标视频流集合中的视频流的分数从目标视频流集合中的视频流中确定目标视频流;
否则,执行目标文件解码异常的操作。
对于媒体流集合中所有的视频流的视频编码标准,当前设备均是不能支持的,此时,目标视频流集合中不包括视频流。此时,执行目标文件解码异常的操作;
对于媒体流集合中所有的音频流的音频编码标准,当前设备均是不能支持的,此时,目标音频流集合中不包括音频流。此时,执行目标文件解码异常的操作。
当在媒体流集合中,存在一条或多条音频流的音频编码标准是当前设备能够支持的,目标音频流集合中包括这一条或多条音频流;当在媒体流集合中,存在一条或多条频流的视频编码标准是当前设备能够支持的,目标视频流集合中包括这一条或多条视频流。
当目标音频流集合中包括音频流,并且目标视频流集合中包括视频时,从目标音频流集合中的音频流中确定目标音频流,根据目标视频流集合中的视频流的分数,从目标视频流集合中的视频流中确定目标视频流。
确定单元用于从目标音频流集合中的音频流中确定目标音频流;根据目标视频流集合中的视频流的分数从目标视频流集合中的视频流中确定目标视频流。
本实施例对确定目标音频流和确定目标视频流的先后顺序并不作限定。
解码单元用于对目标音频流进行解码,得到待播放的音频采样数据;对目标视频流进行解码,得到待播放的图像数据。
具体地,基于目标音频流的音频编码标准对目标音频流进行解码,基于目标视频流的视频编码标准对目标视频流进行解码。
本实施例对目标音频流进行解码和对目标视频流进行解码的先后顺序并不作限定。
确定单元用于执行目标文件解码异常的操作。
在一些可能的情况中,目标文件解码异常的操作可以和确定结果相对应,确定结果为确定目标音频流集合中是否包括音频流,并且目标视频流集合中是否包括视频流的结果。
例如,确定目标音频流集合中包括音频流且目标视频流集合中不包括视频流、确定目标音频流集合中不包括音频流且目标视频流集合中包括视频流,以及确定目标音频流集合中不包括音频流且目标视频流集合中不包括视频流,三种情况对应不同的目标文件解码异常的操作。
在一种可能的实现方式中,在对目标音频流进行解码,得到待播放的音频采样数据,对目标视频流进行解码,得到待播放的图像数据之后,还可以对待播放的音频采样数据和待播放的图像数据进行同步播放。
通常终端设备用于播放的音视频文件中同时包含有频流和视频流。
采用本申请的方案,在确定目标视频流的过程中,利用视频流的标识,得到媒体流集合中的部分或者全部的当前设备能够解码的视频流,并利用视频流的视频流参数确定视频流的分数。根据视频流的分数确定播放特性较好的目标视频流。当音视频文件中包含多条视频流时,并非是直接确定多条视频流中的第一条视频流进行解码,而是确定当前设备能够解码且播放特性较好的视频流进行解码,从而提高用户体验;在确定目标音频流的过程中,利用音频流的标识,得到媒体流集合中的当前设备能够解码的音频流并确定目标音频流。当音视频文件中包含多条音频流时,并非是直接确定多条音频流中的第一条音频流进行解码,而是确定当前设备能够解码的音频流进行解码,从而提高用户体验。
本申请实施例还提供一种终端设备。
本实施例的终端设备的结构示意图请参见图1。
如图1所示,终端设备100的处理器110用于执行以上实施例中的任一的音视频解码的方法。
具体地,处理器110中的视频编解码器用于对音视频进行解码。
解码后的音频通过扬声器170A进行播放,解码后的视频通过扬声器194进行播放。
采用本申请的方案,当音视频文件中包含多条视频流时,并非是直接确定多条视频流中的第一条视频流进行解码,而是利用视频流的标识,得到媒体流集合中的部分或者全部的当前设备能够解码的视频流,并利用视频流的视频流参数确定视频流的分数,根据视频流的分数确定播放特性较好的目标视频流。
因此,采用本申请的方案,能够在当前设备不支持多条视频流中第一条视频流的视频编码格式时,对多条视频流中能够支持视频编码格式的其他视频流进行解码,从而实现对音视频文件中视频内容的播放,提高用户体验。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元及模块可以是或者也可以不是物理上分开的。另外,还可以根据实际的需要选择其中的部分或者全部单元和模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本申请的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (13)
1.一种音视频解码的方法,其特征在于,所述方法包括:
确定目标文件中包含的媒体流集合,所述媒体流集合中至少包括多条视频流;
根据目标视频流集合中每条视频流的标识,确定所述目标视频流集合中当前设备能够解码的视频流;其中,所述目标视频流集合为所述多条视频流中的至少一条,所述标识为多用途互联网邮件扩展类型mimetype;
根据所述当前设备能够解码的视频流各自的视频流参数,以及所述视频流参数对应的分数,确定所述当前设备能够解码的视频流各自的分数;
根据所述当前设备能够解码的视频流各自的分数,从所述当前设备能够解码的视频流中确定目标视频流;
对所述目标视频流进行解码。
2.根据权利要求1所述的方法,其特征在于,所述视频流参数包括以下中的至少一种:所述视频流的视频编码标准、图像压缩率profile、编码性能等级level、视频帧率、视频码率。
3.根据权利要求1所述的方法,其特征在于,所述根据所述当前设备能够解码的视频流各自的分数,从所述当前设备能够解码的视频流中确定目标视频流,包括:
根据所述当前设备能够解码的视频流各自的分数,确定当前设备能够解码的视频流中所述分数最高的视频流,得到所述目标视频流。
4.根据权利要求1所述的方法,其特征在于,所述根据目标视频流集合中每条视频流的标识,确定所述目标视频流集合中当前设备能够解码的视频流,其中,所述目标视频流集合为所述多条视频流中的至少一条,根据所述当前设备能够解码的视频流各自的视频流参数,确定所述当前设备能够解码的视频流各自的分数,包括:
循环根据所述目标视频流集合中所述每条视频流的标识,确定所述目标视频流集合中当前设备能够解码的视频流;
当确定当前视频流为所述目标视频流集合中当前设备能够解码的视频流时,根据所述当前视频流的视频流参数,确定所述当前视频流的分数。
5.根据权利要求1所述的方法,其特征在于,所述根据目标视频流集合中每条视频流的标识,确定所述目标视频流集合中当前设备能够解码的视频流,其中,所述目标视频流集合为所述多条视频流中的至少一条,根据所述当前设备能够解码的视频流各自的视频流参数,确定所述当前设备能够解码的视频流各自的分数,根据所述当前设备能够解码的视频流各自的分数,从所述当前设备能够解码的视频流中确定目标视频流,包括:
循环根据所述目标视频流集合中所述每条视频流的标识,确定所述目标视频流集合中当前设备能够解码的视频流;
当确定当前视频流为所述目标视频流集合中当前设备能够解码的视频流时,根据所述当前视频流的视频流参数,确定所述当前视频流的分数;
当确定所述当前视频流的分数大于或者等于预设的分数阈值时,确定所述当前视频流为所述目标视频流。
6.根据权利要求1所述的方法,其特征在于,所述媒体流集合中包括多条视频流和至少一条音频流,所述方法还包括:
根据目标视频流集合中每条音频流的标识,确定所述至少一条音频流中当前设备能够解码的音频流;
从所述当前设备能够解码的音频流中确定一条音频流为目标音频流;
对所述目标音频流进行解码。
7.一种音视频解码的装置,其特征在于,所述装置包括确定单元和解码单元,其中:
所述确定单元,用于确定目标文件中包含的媒体流集合,所述媒体流集合中至少包括多条视频流;根据目标视频流集合中每条视频流的标识,确定所述目标视频流集合中当前设备能够解码的视频流;其中,所述目标视频流集合为所述多条视频流中的至少一条,所述标识为多用途互联网邮件扩展类型mimetype;根据所述当前设备能够解码的视频流各自的视频流参数,以及所述视频流参数对应的分数,确定所述当前设备能够解码的视频流各自的分数;根据所述当前设备能够解码的视频流各自的分数,从所述当前设备能够解码的视频流中确定目标视频流;
所述解码单元,用于对所述目标视频流进行解码。
8.根据权利要求7所述的装置,其特征在于,所述视频流参数包括以下中的至少一种:所述视频流的视频编码标准、图像压缩率profile、编码性能等级level、视频帧率、视频码率。
9.根据权利要求7所述的装置,其特征在于,所述确定单元具体用于:
根据所述当前设备能够解码的视频流各自的分数,确定当前设备能够解码的视频流中所述分数最高的视频流,得到所述目标视频流。
10.根据权利要求7所述的装置,其特征在于,所述确定单元具体用于:循环根据所述目标视频流集合中所述每条视频流的标识,确定所述目标视频流集合中当前设备能够解码的视频流;
当确定当前视频流为所述目标视频流集合中当前设备能够解码的视频流时,根据所述当前视频流的视频流参数,确定所述当前视频流的分数。
11.根据权利要求7所述的装置,其特征在于,所述确定单元具体用于:
循环根据所述目标视频流集合中所述每条视频流的标识,确定所述目标视频流集合中当前设备能够解码的视频流;
当确定当前视频流为所述目标视频流集合中当前设备能够解码的视频流时,根据所述当前视频流的视频流参数,确定所述当前视频流的分数;
当确定所述当前视频流的分数大于或者等于预设的分数阈值时,确定所述当前视频流为所述目标视频流。
12.根据权利要求7所述的装置,其特征在于,所述确定单元具体用于:
根据目标视频流集合中每条音频流的标识,确定所述至少一条音频流中当前设备能够解码的音频流;
从所述当前设备能够解码的音频流中确定一条音频流为目标音频流;
对所述目标音频流进行解码。
13.一种终端设备,其特征在于,所述终端设备包括处理器,所述处理器包括视频编解码器,所述视频编解码器用于执行上述权利要求1-6的音视频解码的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210023603.8A CN115529491B (zh) | 2022-01-10 | 2022-01-10 | 一种音视频解码的方法、音视频解码的装置以及终端设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210023603.8A CN115529491B (zh) | 2022-01-10 | 2022-01-10 | 一种音视频解码的方法、音视频解码的装置以及终端设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115529491A CN115529491A (zh) | 2022-12-27 |
CN115529491B true CN115529491B (zh) | 2023-06-06 |
Family
ID=84693976
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210023603.8A Active CN115529491B (zh) | 2022-01-10 | 2022-01-10 | 一种音视频解码的方法、音视频解码的装置以及终端设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115529491B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020076708A1 (en) * | 2018-10-08 | 2020-04-16 | Dolby Laboratories Licensing Corporation | Transforming audio signals captured in different formats into a reduced number of formats for simplifying encoding and decoding operations |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007207328A (ja) * | 2006-01-31 | 2007-08-16 | Toshiba Corp | 情報記憶媒体、プログラム、情報再生方法、情報再生装置、データ転送方法、及びデータ処理方法 |
CN102223201B (zh) * | 2010-04-15 | 2014-01-01 | 中兴通讯股份有限公司 | 一种编解码器能力协商方法及终端 |
US10349069B2 (en) * | 2012-12-11 | 2019-07-09 | Sony Interactive Entertainment Inc. | Software hardware hybrid video encoder |
EP2830275A1 (en) * | 2013-07-23 | 2015-01-28 | Thomson Licensing | Method of identification of multimedia flows and corresponding apparatus |
CN105323654B (zh) * | 2014-08-05 | 2019-02-15 | 优视科技有限公司 | 呈现来自网络的内容数据的方法和设备 |
CN106254961B (zh) * | 2016-07-27 | 2019-09-17 | 青岛海信电器股份有限公司 | 电视中的视频播放方法及电视 |
US10805650B2 (en) * | 2017-03-27 | 2020-10-13 | Qualcomm Incorporated | Signaling important video information in network video streaming using mime type parameters |
CN108235096A (zh) * | 2018-01-18 | 2018-06-29 | 湖南快乐阳光互动娱乐传媒有限公司 | 移动终端硬解码智能切换软解码播放视频的方法 |
CN109257646B (zh) * | 2018-10-15 | 2020-09-22 | Oppo广东移动通信有限公司 | 视频处理方法、装置、电子设备及计算机可读介质 |
CN111147859A (zh) * | 2019-12-31 | 2020-05-12 | 视联动力信息技术股份有限公司 | 一种视频处理方法和装置 |
CN113542795B (zh) * | 2020-04-21 | 2023-04-18 | 腾讯科技(深圳)有限公司 | 视频处理方法、装置、电子设备及计算机可读存储介质 |
CN111954034B (zh) * | 2020-10-19 | 2021-01-19 | 广州佰锐网络科技有限公司 | 一种基于终端设备参数的视频编码方法及系统 |
CN112752074A (zh) * | 2020-12-28 | 2021-05-04 | 视联动力信息技术股份有限公司 | 数据传输方法、装置、终端设备和存储介质 |
-
2022
- 2022-01-10 CN CN202210023603.8A patent/CN115529491B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020076708A1 (en) * | 2018-10-08 | 2020-04-16 | Dolby Laboratories Licensing Corporation | Transforming audio signals captured in different formats into a reduced number of formats for simplifying encoding and decoding operations |
Also Published As
Publication number | Publication date |
---|---|
CN115529491A (zh) | 2022-12-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200162750A1 (en) | Method for inter prediction and device therefor, and method for motion compensation and device therefor | |
RU2678480C1 (ru) | Способ кодирования видео с использованием регулировки смещения согласно классификации пикселей посредством максимальных единиц кодирования и устройство для этого, а также способ декодирования видео и устройство для этого | |
CN113015021B (zh) | 云游戏的实现方法、装置、介质及电子设备 | |
RU2666233C1 (ru) | Способ и устройство для определения опорных изображений для внешнего предсказания | |
US20190158866A1 (en) | Motion vector prediction method and apparatus for encoding or decoding video | |
RU2679236C2 (ru) | Устройство и способ декодирования и устройство и способ кодирования | |
TWI528787B (zh) | 用於管理視訊串流之技術 | |
US8407565B2 (en) | System and method for producing importance rate-based rich media, and server applied to the same | |
US20080101455A1 (en) | Apparatus and method for multiple format encoding | |
US20150156557A1 (en) | Display apparatus, method of displaying image thereof, and computer-readable recording medium | |
US11700419B2 (en) | Re-encoding predicted picture frames in live video stream applications | |
US20220038749A1 (en) | Artifact removal method and apparatus based on machine learning, and method and apparatus for training artifact removal model based on machine learning | |
US20160227257A1 (en) | REPLAYING OLD PACKETS FOR CONCEALING VIDEO DECODING ERRORS and VIDEO DECODING LATENCY ADJUSTMENT BASED ON WIRELESS LINK CONDITIONS | |
WO2019114294A1 (zh) | 图像编解码方法、装置、系统及存储介质 | |
CN115529491B (zh) | 一种音视频解码的方法、音视频解码的装置以及终端设备 | |
US9997132B2 (en) | Data transmission method, data transmission system and portable display device of transmitting compressed data | |
US8358918B2 (en) | Video processing apparatus and video processing method | |
CN114697731B (zh) | 投屏方法、电子设备及存储介质 | |
US20220239920A1 (en) | Video processing method, related apparatus, storage medium, and program product | |
US10219002B2 (en) | Dynamic fidelity updates for encoded displays | |
CN111711835B (zh) | 多路音视频整合方法、系统及计算机可读存储介质 | |
CN111435995B (zh) | 用于生成动态图片的方法、装置和系统 | |
US20090154570A1 (en) | Method and system to stream and render video data on processing units of mobile devices that have limited threading capabilities | |
CN116801010A (zh) | 视频流播放方法、装置、设备和存储介质 | |
CN117336531A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |