CN113099238A - 一种用于判断安卓手机播放视频的解码方法 - Google Patents
一种用于判断安卓手机播放视频的解码方法 Download PDFInfo
- Publication number
- CN113099238A CN113099238A CN202110639917.6A CN202110639917A CN113099238A CN 113099238 A CN113099238 A CN 113099238A CN 202110639917 A CN202110639917 A CN 202110639917A CN 113099238 A CN113099238 A CN 113099238A
- Authority
- CN
- China
- Prior art keywords
- decoding
- video
- mobile terminal
- mediacodec
- decoder
- 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
Links
Images
Classifications
-
- 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
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/85—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本发明提出了一种用于判断安卓手机播放视频的解码方法,属于视频解码领域。通过初始化的MediaCodec解码器将截取视频片段解码,然后通过GPU对渲染数据捕捉,通过捕捉结果能够判断该目标视频能不能被当前的设备解码播放,即让客户端在播放视频之前,先对该视频片段进行解码,并且由于视频片段的长度很小,因此解码速度很快,可以很快地判断出该设备是否支持这个编码格式的视频,若没有支持的设备解码,转用软件解码。也就是解码的优先级别是GPU中的高编码等级的码流<<GPU中的低编码等级的码流<<CPU。
Description
技术领域
本发明涉及视频解码领域,具体涉及一种用于判断安卓手机播放视频的解码方法。
背景技术
在使用手机播放视频的时候,有部分视频使用了较新的高级编码标准对视频进行编码,比如H265/hevc编码技术。手机在播放h265编码的视频的时候,由于码率较高,如果使用软件解码方案对视频解码,则加大了CPU(中央处理器(central processing unit,简称CPU))工作的负担,造成界面卡顿,视频卡顿等问题。因此会选择使用硬件解码方案,利用GPU(图形处理器(Graphics Processing Unit,简称GPU))来对视频进行硬件解码,加快视频解码速度,并减轻CPU工作负担,通过达到流畅播放高清视频的效果。
但如今采用的方法是通过MediaCodec的API(应用程序接口,ApplicationProgramming Interface)进行判断,获取设备支持的解码器名称,寻找与目标视频的编码相匹配的名称,若能够找到即代表能够支持该视频解码。
由于使用MediaCodec返回支持的硬件解码列表只能简单地用名称与目标视频的编码名称匹配,导致极容易出现即使设备存在解码器,但依然无法解码,导致误判,进而播放视频时,出现视频黑屏,但是有声音的情况。例如h265/h264等编码技术,在编码的时候,可以指定编码的profile、level等编码参数,而在解码端,需要解码设备也支持对应的Profile和level才能对视频进行解码。又例如编码采用的profile是main 10 profile。而解码的设备只支持到了main profile,还不支持main 10 profile。那么此时视频依然解码失败。
发明内容
为了克服现有技术的缺陷,本发明所要解决的技术问题在于提出一种用于判断安卓手机播放视频的解码方法,通过截取视频片段,让客户端在播放视频之前,先对该视频片段进行解码,由于视频片段的长度很小,因此解码速度很快,可以很快地判断出该设备是否支持这个编码格式的视频,若没有支持的设备解码,转用软件解码,使用起来非常简便、快捷且省力。
本发明的技术方案是这样实现的:
一种用于判断安卓手机播放视频的解码方法,包括步骤S00:移动端获取视频片段;S10:移动端将视频片段发送至初始化的MediaCodec解码器中进行解码,通过初始化的MediaCodec解码器内的分离模块将视频片段的音频数据分离,获得音频数据以及视频数据,并将音频数据以及视频数据保存至MediaCodec解码器内的存储模块;S20:存储模块根据保存的视频数据并创建对应的解码单元;S30:通过MediaCodec解码器内的运算模块对存储模块中的解码单元进行读取,若运算模块能够从解码单元中获得yuv视频数据,则MediaCodec解码器向移动端输出运算结果。
进一步,S10包括步骤S11:生成历史数据,历史数据根据步骤S30结果记录并储存至移动端内;S12:初始化的MediaCodec解码器获取历史数据,并向移动端输出运算结果。
进一步,S30还包括步骤S31:初始化的MediaCodec解码器中包括有编码库,运算模块根据编码库内设置有的编码等级依次对解码单元进行读取,当获得yuv视频数据后运算模块停止对编码库的调用。
进一步,S30包括步骤S32:当运算模块根据编码库内设置有的编码等级依次对解码单元进行读取后,均没有获得yuv视频数据,则MediaCodec解码器向移动端输出停止信息,移动端对目标视频进行软件解码。
进一步,S30还包括步骤S33:运算模块在读取解码单元结束后停止运算,并将运算结果反馈至移动端。
进一步,S00包括步骤S01目标视频通过下载至移动端或者本地安装包中截取视频片段。
本发明的有益效果:本发明提供了用于判断安卓手机播放视频的解码方法,通过初始化的MediaCodec解码器将截取视频片段解码,然后通过GPU对渲染数据捕捉,通过捕捉结果能够判断该目标视频能不能被当前的设备解码播放,即让客户端在播放视频之前,先对该视频片段进行解码,并且由于视频片段的长度很小,因此解码速度很快,可以很快地判断出该设备是否支持这个编码格式的视频,若没有支持的设备解码,转用软件解码。①相比于通过查询设备支持的硬解格式这种容易误判的方式,该方案精准,不会出现误判。②能在视频播放之前就检查到设备是否支持播放这种格式的视频,避免黑屏,提升了用户体验,减少播放异常概率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一种用于判断安卓手机播放视频的解码方法的流程框图;
图2为本发明一种用于判断安卓手机播放视频的解码方法的逻辑框图;
图3为本发明一种用于判断安卓手机播放视频的解码方法S10的子流程框图;
图4为本发明一种用于判断安卓手机播放视频的解码方法S30的子流程框图;
图5为本发明一种用于判断安卓手机播放视频的解码方法S30的子流程框图;
图6为本发明一种用于判断安卓手机播放视频的解码方法S30的子流程框图;
图7为本发明一种用于判断安卓手机播放视频的解码方法S00的子流程框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
如图1-2所示,一种用于判断安卓手机播放视频的解码方法,包括步骤S00:移动端获取视频片段;S10:移动端将所述视频片段发送至初始化的MediaCodec解码器中进行解码,通过初始化的MediaCodec解码器内的分离模块将所述视频片段的音频数据分离,获得音频数据以及视频数据,并将音频数据以及视频数据保存至MediaCodec解码器内的存储模块;S20:存储模块根据保存的视频数据并创建对应的解码单元;S30:通过MediaCodec解码器内的运算模块Thread对存储模块中的解码单元进行读取,若运算模块Thread能够从解码单元中获得yuv视频数据,则MediaCodec解码器向移动端输出运算结果。通过初始化的MediaCodec解码器获取视频片段进行解码,利用分离模块MediaExtractor选择媒体流中的视频轨道,存储在存储模块MediaFormat对象中,然后通过MediaCodec解码器内运算模块Thread对视频数据进行捕捉,通过捕捉结果能够判断该目标视频能不能被当前的 移动端解码播放的运算结果,即让移动端在播放视频之前,先对该视频片段进行解码,并且由于视频片段的长度很小,因此解码速度很快,可以很快地判断出该移动端是否支持这个编码格式的视频,若没有支持的设备解码,转用软件解码。
Java语言的运行代码为:
private static class IOThread extends Thread { private MediaCodeccodec; private MediaExtractor extractor; private CodecLifeLock lock;public IOThread(MediaCodec codec, MediaExtractor extractor, CodecLifeLocklock) { this.codec = codec; this.extractor = extractor;this.lock = lock; } @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)@Override public void run() { while (!isInterrupted()) {lock.codecReleaseLock.lock(); try { if(lock.isCodecRelease) { break; }int inIndex = codec.dequeueInputBuffer(TIMEOUT_DEQUEUE_BUFFER);if (inIndex == -1) { lock.codecReleaseLock.unlock();continue; } ByteBuffer buffer =codec.getInputBuffer(inIndex); if (buffer == null) {lock.codecReleaseLock.unlock(); continue;} int sampleSize = extractor.readSampleData(buffer, 0);if (sampleSize < 0) { codec.queueInputBuffer(inIndex, 0,0, 0, MediaCodec.BUFFER_FLAG_END_OF_STREAM); PolyvLog.i(TAG, "EOS"); break; } else {long sampleTime = extractor.getSampleTime();codec.queueInputBuffer(inIndex, 0, sampleSize, sampleTime, 0);extractor.advance(); } }catch (Exception e){throw e; }finally { lock.codecReleaseLock.unlock(); } } if (lock.codecReleaseLock.isLocked()) {try { lock.codecReleaseLock.unlock(); } catch(IllegalMonitorStateException e) { PolyvLog.i(TAG, "tryunlock but didn't hold the lock"); } } PolyvLog.i(TAG, "ioThread quit"); } }
优选地,如图3所示,S10包括步骤S11:生成历史数据,历史数据根据步骤S30结果记录并储存至移动端内;S12:初始化的MediaCodec解码器获取历史数据,并向移动端输出运算结果。通过记录在MediaCodec解码器内生成历史数据并保存至移动端,当下次新的目标视频进行解码时,与历史数据对比匹配,若配对相同,则输出历史数据的结果即可;若配对不相同,则进行步骤S10~S30后输出对应的运算结果进行硬件解码或者软件解码。
优选地,如图4所示,S30还包括步骤S31:初始化的MediaCodec解码器中包括有编码库,运算模块Thread根据编码库内设置有的编码等级依次对解码单元进行读取,当获得yuv视频数据后锁死模块CodecLifeLock发送停止指令到运算模块Thread,运算模块Thread停止对编码库的调用。如果移动端有低编码等级的同等的视频,例如h265 main10编码和h265 main编码。main 10等级的编码在该移动端上不支持,可以继续尝试main等级的编码,main等级的编码格式在该移动端上如果支持硬件解码,那么还是可以用硬件解码来播放当前的目标视频。
优选地,如图5所示,S30包括步骤S32:当运算模块Thread根据编码库内设置有的编码等级依次对解码单元进行读取后,均没有获得yuv视频数据,则MediaCodec解码器向移动端输出停止信息,移动端对目标视频进行软件解码。也就是解码的优先级别是编码库内的高编码等级的码流<<GPU中的低编码等级的码流<<CPU。如果判断到当前MediaCodec解码器内的编码库均不支持该编码格式的目标视频,那么应当选择支持软解的视频流的url给当前设备播放。
优选地,如图6所示,S30还包括步骤S33:运算模块Thread在读取解码单元结束后停止运算,并将运算结果反馈至移动端。通过对视频片段的读取进度,缩短反应捕捉的时间,进而缩短了MediaCodec解码器判断的周期。读取视频片段的同时运算模块Thread就开始捕捉,即捕捉周期为开始读取视频片段时至读取完视频片段前。
优选的,如图7所示,S00包括步骤S01目标视频通过下载至移动端或者本地安装包中截取视频片段。
综上所述的,本发明提供了用于判断安卓手机播放视频的解码方法,通过初始化的MediaCodec解码器将截取视频片段解码,然后通过GPU对渲染数据捕捉,通过捕捉结果能够判断该目标视频能不能被当前的设备解码播放,即让客户端在播放视频之前,先对该视频片段进行解码,并且由于视频片段的长度很小,因此解码速度很快,可以很快地判断出该设备是否支持这个编码格式的视频,若没有支持的设备解码,转用软件解码。①相比于通过查询设备支持的硬解格式这种容易误判的方式,该方案精准,不会出现误判。②能在视频播放之前就检查到设备是否支持播放这种格式的视频,避免黑屏,提升了用户体验,减少播放异常概率。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种用于判断安卓手机播放视频的解码方法,其特征在于:包括步骤
S00:移动端从目标视频中截取视频片段;
S10:移动端将所述视频片段发送至初始化的MediaCodec解码器中进行解码,通过初始化的MediaCodec解码器内的分离模块将所述视频片段的音频数据分离,获得音频数据以及视频数据,并将音频数据以及视频数据保存至MediaCodec解码器内的存储模块;
S20:存储模块根据保存的视频数据并创建对应的解码单元;
S30:通过MediaCodec解码器内的运算模块对存储模块中的解码单元进行读取,若运算模块从解码单元中获得yuv视频数据,则MediaCodec解码器向移动端输出运算结果,所述移动端将所述目标视频的解码方式设置为硬件解码;若所述运算模块无法从解码单元中获得yuv视频数据,则MediaCodec解码器向移动端输出运算结果,所述移动端将所述目标视频的解码方式设置为软件解码。
2.根据权利要求1所述的用于判断安卓手机播放视频的解码方法,其特征在于:
S10包括步骤
S11:生成历史数据,所述历史数据根据步骤S30结果记录并储存至移动端内;
S12:初始化的MediaCodec解码器获取历史数据,并向移动端输出对应的运算结果。
3.根据权利要求1所述的用于判断安卓手机播放视频的解码方法,其特征在于:
S30还包括步骤
S31:初始化的MediaCodec解码器中包括有编码库,运算模块根据编码库内设置有的编码等级依次对解码单元进行读取,当获得yuv视频数据后运算模块停止对编码库的调用。
4.根据权利要求3所述的用于判断安卓手机播放视频的解码方法,其特征在于:
S30包括步骤
S32:当运算模块根据编码库内设置有的编码等级依次对解码单元进行读取后,均没有获得yuv视频数据,则MediaCodec解码器向移动端输出停止信息,移动端对目标视频进行软件解码。
5.根据权利要求1所述的用于判断安卓手机播放视频的解码方法,其特征在于:
S30还包括步骤
S33:运算模块在读取解码单元结束后停止运算,并将对应的运算结果反馈至移动端。
6.根据权利要求3所述的用于判断安卓手机播放视频的解码方法,其特征在于:
S00包括步骤
S01:所述目标视频通过下载至移动端或者本地安装包中截取所述视频片段。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110639917.6A CN113099238B (zh) | 2021-06-09 | 2021-06-09 | 一种用于判断安卓手机播放视频的解码方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110639917.6A CN113099238B (zh) | 2021-06-09 | 2021-06-09 | 一种用于判断安卓手机播放视频的解码方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113099238A true CN113099238A (zh) | 2021-07-09 |
CN113099238B CN113099238B (zh) | 2021-08-17 |
Family
ID=76664442
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110639917.6A Active CN113099238B (zh) | 2021-06-09 | 2021-06-09 | 一种用于判断安卓手机播放视频的解码方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113099238B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115580735A (zh) * | 2022-12-08 | 2023-01-06 | 北京海誉动想科技股份有限公司 | 视频编解码处理与系统、编解码服务器与插件模块 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150373341A1 (en) * | 2014-06-23 | 2015-12-24 | Cisco Technology, Inc. | Techniques for Interactive Region-Based Scalability |
CN105744278A (zh) * | 2016-02-16 | 2016-07-06 | 福建星网智慧科技股份有限公司 | 一种基于android系统H264编解码的方法 |
CN108235096A (zh) * | 2018-01-18 | 2018-06-29 | 湖南快乐阳光互动娱乐传媒有限公司 | 移动终端硬解码智能切换软解码播放视频的方法 |
CN109309867A (zh) * | 2017-07-28 | 2019-02-05 | 中兴通讯股份有限公司 | 终端的显示方法、显示终端及计算机可读存储介质 |
CN109391843A (zh) * | 2017-08-03 | 2019-02-26 | 腾讯科技(深圳)有限公司 | 在线视频倍速播放方法、装置、介质及智能终端 |
CN109788212A (zh) * | 2018-12-27 | 2019-05-21 | 北京奇艺世纪科技有限公司 | 一种分段视频的处理方法、装置、终端和存储介质 |
CN111669577A (zh) * | 2020-06-30 | 2020-09-15 | 广州市百果园信息技术有限公司 | 一种硬件解码检测方法、装置、电子设备及存储介质 |
-
2021
- 2021-06-09 CN CN202110639917.6A patent/CN113099238B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150373341A1 (en) * | 2014-06-23 | 2015-12-24 | Cisco Technology, Inc. | Techniques for Interactive Region-Based Scalability |
CN105744278A (zh) * | 2016-02-16 | 2016-07-06 | 福建星网智慧科技股份有限公司 | 一种基于android系统H264编解码的方法 |
CN109309867A (zh) * | 2017-07-28 | 2019-02-05 | 中兴通讯股份有限公司 | 终端的显示方法、显示终端及计算机可读存储介质 |
CN109391843A (zh) * | 2017-08-03 | 2019-02-26 | 腾讯科技(深圳)有限公司 | 在线视频倍速播放方法、装置、介质及智能终端 |
CN108235096A (zh) * | 2018-01-18 | 2018-06-29 | 湖南快乐阳光互动娱乐传媒有限公司 | 移动终端硬解码智能切换软解码播放视频的方法 |
CN109788212A (zh) * | 2018-12-27 | 2019-05-21 | 北京奇艺世纪科技有限公司 | 一种分段视频的处理方法、装置、终端和存储介质 |
CN111669577A (zh) * | 2020-06-30 | 2020-09-15 | 广州市百果园信息技术有限公司 | 一种硬件解码检测方法、装置、电子设备及存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115580735A (zh) * | 2022-12-08 | 2023-01-06 | 北京海誉动想科技股份有限公司 | 视频编解码处理与系统、编解码服务器与插件模块 |
CN115580735B (zh) * | 2022-12-08 | 2023-05-02 | 安徽海马云科技股份有限公司 | 视频编解码处理与系统、编解码服务器与插件模块 |
Also Published As
Publication number | Publication date |
---|---|
CN113099238B (zh) | 2021-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11336953B2 (en) | Video processing method, electronic device, and computer-readable medium | |
CN110430441B (zh) | 一种云手机视频采集方法、系统、装置及存储介质 | |
US11930197B2 (en) | Video decoding method and apparatus, computer device, and storage medium | |
CN110213659B (zh) | 一种可在不同视频流间快速切换播放器的实现方法 | |
CN110858827B (zh) | 启播加速方法、装置及计算机可读取存储介质 | |
CN104780378A (zh) | 一种用于解码视频的方法、装置和播放器 | |
US10805570B2 (en) | System and method for streaming multimedia data | |
CN109391843B (zh) | 在线视频倍速播放方法、装置、介质及智能终端 | |
WO2017096885A1 (zh) | 视频播放方法及装置 | |
CN113099238B (zh) | 一种用于判断安卓手机播放视频的解码方法 | |
CN111669577A (zh) | 一种硬件解码检测方法、装置、电子设备及存储介质 | |
CN112261377A (zh) | web版监控视频播放方法、电子设备及存储介质 | |
CN114333933B (zh) | 一种Linux平台上安卓应用低延迟音频输出方法 | |
CN111510755A (zh) | 音视频的切换方法、装置、计算机设备及可读存储介质 | |
CN112422978A (zh) | 一种智能转码方法、装置、电子设备和存储介质 | |
CN113973214A (zh) | 视频流格式转换方法、装置和存储介质 | |
CN110636284A (zh) | 解码能力检测方法及装置 | |
CN114040245B (zh) | 视频播放方法、装置、计算机存储介质和电子设备 | |
CN111343503A (zh) | 视频的转码方法、装置、电子设备及存储介质 | |
CN111935500B (zh) | 视频解码方法、装置及电子设备 | |
CN115914745A (zh) | 视频的解码方法、装置、电子设备及计算机可读介质 | |
CN113709447B (zh) | 一种终端设备播放性能的检测方法和装置 | |
CN110855619B (zh) | 播放音视频数据的处理方法、装置、存储介质及终端设备 | |
CN113596583A (zh) | 视频流子弹时间数据处理方法及装置 | |
CN113055744A (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 | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: Room 402, No. 66, North Street, University Town Center, Panyu District, Guangzhou City, Guangdong Province, 510006 Patentee after: Yifang Information Technology Co.,Ltd. Address before: 510006 Room 601, 603, 605, science museum, Guangdong University of technology, 100 Waihuan West Road, Xiaoguwei street, Panyu District, Guangzhou City, Guangdong Province Patentee before: GUANGZHOU EASEFUN INFORMATION TECHNOLOGY Co.,Ltd. |