CN118075556A - 一种基于ijkplayer播放器的卡顿计算方法 - Google Patents

一种基于ijkplayer播放器的卡顿计算方法 Download PDF

Info

Publication number
CN118075556A
CN118075556A CN202410336205.0A CN202410336205A CN118075556A CN 118075556 A CN118075556 A CN 118075556A CN 202410336205 A CN202410336205 A CN 202410336205A CN 118075556 A CN118075556 A CN 118075556A
Authority
CN
China
Prior art keywords
video
data
frame
image
initializing
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.)
Pending
Application number
CN202410336205.0A
Other languages
English (en)
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.)
Chengdu Androidmov Technology Co ltd
Original Assignee
Chengdu Androidmov 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 Chengdu Androidmov Technology Co ltd filed Critical Chengdu Androidmov Technology Co ltd
Priority to CN202410336205.0A priority Critical patent/CN118075556A/zh
Publication of CN118075556A publication Critical patent/CN118075556A/zh
Pending legal-status Critical Current

Links

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/442Monitoring of processes or resources, e.g. detecting the failure of a recording device, monitoring the downstream bandwidth, the number of times a movie has been viewed, the storage space available from the internal hard disk
    • H04N21/4424Monitoring of the internal components or processes of the client device, e.g. CPU or memory load, processing speed, timer, counter or percentage of the hard disk space used
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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/8166Monomedia components thereof involving executable data, e.g. software
    • H04N21/8193Monomedia components thereof involving executable data, e.g. software dedicated tools, e.g. video decoder software or IPMP tool

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Databases & Information Systems (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

本发明公开了一种基于ijkplayer播放器的卡顿计算方法,包括以下步骤:步骤S1,创建播放器;步骤S2,初始化视频解码器,步骤S3,创建播放线程以及图像显示线程;步骤S4,判断解码的帧数据,如果是第一帧则创建视频质量判断线程,如果不是第一帧,则直接结束;循环判断每秒当前的帧数,每秒判断播放器当前帧率是否小于卡顿值,如果小于12则说明为视频卡顿。本发明中的方法是通过初始化播放器、视频解码器以及创建播放线程和图像显示线程等步骤,实现对视频播放过程中帧率的监测和判断。在每秒判断播放器当前帧率是否小于设定的卡顿值时,如果小于该值,则可以判断视频出现卡顿情况。

Description

一种基于ijkplayer播放器的卡顿计算方法
技术领域
本发明属于流媒体播放技术领域,具体为一种基于ijkplayer播放器的卡顿计算方法。
背景技术
随着数字电视和广电对于播放器质量的要求,播放器的视频质量检测要求也越来越高,对于一些常见的问题需要上报具体的故障。对于故障来进行快速的修复和解决,然而现有播放器只实现了基本功能,无法给出质量问题的具体原因。因此播放器特研发了一种计算视频卡顿问题上报,解决了质量问题无法判断的情况。
随着播放器的视频质量检测要求也越来越高,现有技术只是实现了播放器的播放、暂停等基本功能。而对于视频质量情况没有具体的分析和上报,在数字电视发展的过程中对于播放器的要求也急需要增加视频质量分析的要求。
发明内容
本发明的目的在于提供一种基于ijkplayer播放器的卡顿计算方法,以解决背景技术中提出的现有技术中,视频质量情况缺乏具体的分析和上报的问题。
为解决上述技术问题,本发明所采用的技术方案是:
一种基于ijkplayer播放器的卡顿计算方法,包括以下步骤:
步骤S1,创建播放器,初始化播放器基础配置及播放器环境;
步骤S2,初始化视频解码器,根据视频的播放地址来初始化解码器;
具体为:读取一段播放地址的流数据来初始化解码器的音视频解码变量;
设置画面地址显示图像;设置解码器选项;设置需要播放的视频播放地址,并将视频播放地址,并赋值到全局的播放地址变量,设置当前播放器状态变量为播放状态,来供后续播放使用;
步骤S3,创建播放线程以及图像显示线程;初始化音频和视频包队列、帧队列,包队列即为接收到的数据包队列,帧队列即为解码一个包数据后的一帧音频或视频帧队列;通过设置全局的播放地址来打开视频流地址;
具体为:建立与播放地址的连接,接收来自播放地址发送的音频、视频数据;
接收音频、视频、字幕流数据,并根据音频、视频、字幕类型写入到对应包队列中,图像显示线程从图像队列中取出一帧图像数据进行图像显示;
步骤S4,解码视频包数据;从视频包队列中取出一个视频包数据解码成图像帧数据,写入一帧图像数据到图像队列,判断解码的帧数据,如果是第一帧则创建视频质量判断线程,如果不是第一帧,则直接结束;
循环判断每秒当前的帧数,每秒判断播放器当前帧率是否小于卡顿值,如果小于卡顿值,则说明为视频卡顿,如果大于卡顿值,则说明视频没有卡顿。
根据上述技术方案,步骤S1中,初始化播放器还包括:初始化ijkplayer线程锁、注册函数到java供上层调用、ffmpeg初始化、注册消息回调函数接受消息数据、初始化日志及设置回调。
根据上述技术方案,步骤S3中,创建播放线程具体包括以下步骤:
步骤A1,判断是否有新的播放请求;如果有则跳出循环,如果没有,则继续下一步;
步骤A2,设置解码选项;根据之前初始化的是否硬解码选项,依次设置到解码器中,解码器通过解码选项来改变对应的解码流程;
具体为:硬解码选项通过硬件GPU解码流程来进行解码,软解码通过CPU流程来进行解码;
步骤A3,播放视频流,循环的从创建的视频流地址连接中读取流进行播放;
步骤A4,把收到的流数据写入队列,并跳转回步骤A1,循环播放流,如果有新的请求则跳出循环。
根据上述技术方案,步骤S3中,创建图像显示线程具体包括以下步骤:
步骤B1,判断是否有新的播放请求,如果有则直接结束,如果没有,则继续下一步;
步骤B2,从图像队列中取出一帧图像数据进行后面的图像显示;
步骤B3,解码后的图像帧数据,通过图像格式显示到设置的画面地址中进行图像显示;具体为:一帧图像数据根据格式,YUV、RGB等像素格式数据排列到画面地址中进行显示。
根据上述技术方案,步骤S1中,初始化解码器还包括:初始化图像渲染、初始化解码选项、注册视频解码器函数、打开音频输出函数、初始化视频解码函数以及视频解码器配置函数。
根据上述技术方案,设置画面地址显示图像具体为:通过从前端获取的画面地址设置到播放器中,播放器通过画面地址显示图像到画面区域。
与现有技术相比,本发明具有以下有益效果:
本发明中的方法是通过初始化播放器、视频解码器以及创建播放线程和图像显示线程等步骤,实现对视频播放过程中帧率的监测和判断。在每秒判断播放器当前帧率是否小于设定的卡顿值时,如果小于该值,则可以判断视频出现卡顿情况。
通过本发明中的方法,能够帮助用户或开发人员实时监测视频播放的流畅度,及时发现视频是否存在卡顿现象。这对于视频应用的开发和优化非常重要,可以帮助开发人员及时定位和解决视频播放中的卡顿问题,提升用户体验。
附图说明
图1为本发明流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
如图1所示,一种基于ijkplayer播放器的卡顿计算方法,包括以下步骤:
步骤S1,创建播放器,初始化播放器基础配置及播放器环境;
步骤S2,初始化视频解码器,根据视频的播放地址来初始化解码器;
具体为:读取一段播放地址的流数据来初始化解码器的音视频解码变量;
设置画面地址显示图像;设置解码器选项;设置需要播放的视频播放地址,并将视频播放地址,并赋值到全局的播放地址变量,设置当前播放器状态变量为播放状态,来供后续播放使用;
步骤S3,创建播放线程以及图像显示线程;初始化音频和视频包队列、帧队列,包队列即为接收到的数据包队列,帧队列即为解码一个包数据后的一帧音频或视频帧队列;通过设置全局的播放地址来打开视频流地址;
具体为:建立与播放地址的连接,接收来自播放地址发送的音频、视频数据;
接收音频、视频、字幕流数据,并根据音频、视频、字幕类型写入到对应包队列中,图像显示线程从图像队列中取出一帧图像数据进行图像显示;
步骤S4,解码视频包数据;从视频包队列中取出一个视频包数据解码成图像帧数据,写入一帧图像数据到图像队列,判断解码的帧数据,如果是第一帧则创建视频质量判断线程,如果不是第一帧,则直接结束;
循环判断每秒当前的帧数,每秒判断播放器当前帧率是否小于卡顿值,如果小于卡顿值,则说明为视频卡顿,如果大于卡顿值,则说明视频没有卡顿。
卡顿值为12(fps)。
本发明中的方法是通过初始化播放器、视频解码器以及创建播放线程和图像显示线程等步骤,实现对视频播放过程中帧率的监测和判断。在每秒判断播放器当前帧率是否小于设定的卡顿值时,如果小于该值,则可以判断视频出现卡顿情况。
通过本发明中的方法,能够帮助用户或开发人员实时监测视频播放的流畅度,及时发现视频是否存在卡顿现象。这对于视频应用的开发和优化非常重要,可以帮助开发人员及时定位和解决视频播放中的卡顿问题,提升用户体验。
实施例二
本实施例为实施例一的进一步细化。
步骤S1中,初始化播放器包括:初始化ijkplayer线程锁、注册函数到java供上层调用、ffmpeg初始化、注册消息回调函数接受消息数据、初始化日志及设置回调。
如图1所示,步骤S3中,创建播放线程具体包括以下步骤:
步骤A1,判断是否有新的播放请求;如果有则跳出循环,如果没有,则继续下一步;
步骤A2,设置解码选项;根据之前初始化的是否硬解码选项,依次设置到解码器中,解码器通过解码选项来改变对应的解码流程;
具体为:硬解码选项通过硬件GPU解码流程来进行解码,软解码通过CPU流程来进行解码;
步骤A3,播放视频流,循环的从创建的视频流地址连接中读取流进行播放;
步骤A4,把收到的流数据写入队列,并跳转回步骤A1,循环播放流,如果有新的请求则跳出循环。
如图1所示,步骤S3中,创建图像显示线程具体包括以下步骤:
步骤B1,判断是否有新的播放请求,如果有则直接结束,如果没有,则继续下一步;
步骤B2,从图像队列中取出一帧图像数据进行后面的图像显示;
步骤B3,解码后的图像帧数据,通过图像格式显示到设置的画面地址中进行图像显示;具体为:一帧图像数据根据格式,YUV、RGB等像素格式数据排列到画面地址中进行显示。
步骤S1中,初始化解码器还包括:初始化图像渲染、初始化解码选项、注册视频解码器函数、打开音频输出函数、初始化视频解码函数以及视频解码器配置函数。
设置画面地址显示图像具体为:通过从前端获取的画面地址设置到播放器中,播放器通过画面地址显示图像到画面区域。
实施例三
本发明的发明构思为:
步骤1、创建播放器,初始化播放器基础配置及播放器环境。初始化ijkplayer线程锁、注册函数到java供上层调用、ffmpeg初始化、注册消息回调函数接受消息数据、初始化日志及设置回调。
步骤2、初始化视频解码器,根据视频或播放地址来初始化解码器。设置画面地址显示图像,设置需要播放的url地址来供后续播放使用。
步骤3、创建播放线程进行播放、图像显示线程进行图像显示。通过传入的地址打开流接收数据写入到队列中,图像显示线程从队列中取出一帧进行图像显示。
步骤4、解码帧数据,写入一帧图像到图像队列,判断解码的帧如果是第一帧则创建视频质量判断线程。帧数据即为一帧图像数据,通过ffmpeg解码得到。循环判断每秒当前的帧数,帧数通过计算每秒中解码的帧数得到,一般图像帧率为25帧/秒,即一个完整的图像帧组。每秒判断播放器当前帧率是否小于卡顿值,如果小于12则说明为视频卡顿,此时少了13帧说明会产生卡顿,需要统计卡顿值进行上报。
本发明采用的方案是解码的视频帧小于视频帧的一半,即判断为卡顿。例如:视频的帧率是25帧,解码器解出的视频只有12帧,小于视频帧的一半(13)既判断为卡顿。
ijkplayer:ijkplayer是一款跨平台的播放器,支持Android、IOS端,核心部分基于ffmpeg编写的播放器框架,支持Android与IOS的硬解。
ffmpeg:ffmpeg是一个跨平台且开源的音视频解码工具、框架,包含了市面上所有主流、非主流的音视频格式、主要功能有解码、转码、格式转换等。
卡顿技术说明:本发明为新加的卡顿计算功能,根据数字广播电视要求视频帧率为25帧/秒,每秒解码帧数值小于12帧则为卡顿,即小于视频帧的一半说明此图像会出现卡顿,由此判断为卡顿进行卡顿计算。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (6)

1.一种基于ijkplayer播放器的卡顿计算方法,其特征在于:包括以下步骤:
步骤S1,创建播放器,初始化播放器基础配置及播放器环境;
步骤S2,初始化视频解码器,根据视频的播放地址来初始化解码器;
具体为:读取一段播放地址的流数据来初始化解码器的音视频解码变量;
设置画面地址显示图像;设置解码器选项;设置需要播放的视频播放地址,并将视频播放地址,并赋值到全局的播放地址变量,设置当前播放器状态变量为播放状态,来供后续播放使用;
步骤S3,创建播放线程以及图像显示线程;初始化音频和视频包队列、帧队列,包队列即为接收到的数据包队列,帧队列即为解码一个包数据后的一帧音频或视频帧队列;通过设置全局的播放地址来打开视频流地址;
具体为:建立与播放地址的连接,接收来自播放地址发送的音频、视频数据;
接收音频、视频、字幕流数据,并根据音频、视频、字幕类型写入到对应包队列中,图像显示线程从图像队列中取出一帧图像数据进行图像显示;
步骤S4,解码视频包数据;从视频包队列中取出一个视频包数据解码成图像帧数据,写入一帧图像数据到图像队列,判断解码的帧数据,如果是第一帧则创建视频质量判断线程,如果不是第一帧,则直接结束;
循环判断每秒当前的帧数,每秒判断播放器当前帧率是否小于卡顿值,如果小于卡顿值,则说明为视频卡顿,如果大于卡顿值,则说明视频没有卡顿。
2.根据权利要求1所述的一种基于ijkplayer播放器的卡顿计算方法,其特征在于:步骤S1中,初始化播放器还包括:初始化ijkplayer线程锁、注册函数到java供上层调用、ffmpeg初始化、注册消息回调函数接受消息数据、初始化日志及设置回调。
3.根据权利要求1所述的一种基于ijkplayer播放器的卡顿计算方法,其特征在于:步骤S3中,创建播放线程具体包括以下步骤:
步骤A1,判断是否有新的播放请求;如果有则跳出循环,如果没有,则继续下一步;
步骤A2,设置解码选项;根据之前初始化的是否硬解码选项,依次设置到解码器中,解码器通过解码选项来改变对应的解码流程;
具体为:硬解码选项通过硬件GPU解码流程来进行解码,软解码通过CPU流程来进行解码;
步骤A3,播放视频流,循环的从创建的视频流地址连接中读取流进行播放;
步骤A4,把收到的流数据写入队列,并跳转回步骤A1,循环播放流,如果有新的请求则跳出循环。
4.根据权利要求1所述的一种基于ijkplayer播放器的卡顿计算方法,其特征在于:步骤S3中,创建图像显示线程具体包括以下步骤:
步骤B1,判断是否有新的播放请求,如果有则直接结束,如果没有,则继续下一步;
步骤B2,从图像队列中取出一帧图像数据进行后面的图像显示;
步骤B3,解码后的图像帧数据,通过图像格式显示到设置的画面地址中进行图像显示;具体为:一帧图像数据根据格式,YUV、RGB等像素格式数据排列到画面地址中进行显示。
5.根据权利要求1所述的一种基于ijkplayer播放器的卡顿计算方法,其特征在于:步骤S1中,初始化解码器还包括:初始化图像渲染、初始化解码选项、注册视频解码器函数、打开音频输出函数、初始化视频解码函数以及视频解码器配置函数。
6.根据权利要求1所述的一种基于ijkplayer播放器的卡顿计算方法,其特征在于:设置画面地址显示图像具体为:通过从前端获取的画面地址设置到播放器中,播放器通过画面地址显示图像到画面区域。
CN202410336205.0A 2024-03-22 2024-03-22 一种基于ijkplayer播放器的卡顿计算方法 Pending CN118075556A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410336205.0A CN118075556A (zh) 2024-03-22 2024-03-22 一种基于ijkplayer播放器的卡顿计算方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410336205.0A CN118075556A (zh) 2024-03-22 2024-03-22 一种基于ijkplayer播放器的卡顿计算方法

Publications (1)

Publication Number Publication Date
CN118075556A true CN118075556A (zh) 2024-05-24

Family

ID=91099166

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410336205.0A Pending CN118075556A (zh) 2024-03-22 2024-03-22 一种基于ijkplayer播放器的卡顿计算方法

Country Status (1)

Country Link
CN (1) CN118075556A (zh)

Similar Documents

Publication Publication Date Title
EP3751862B1 (en) Display method and device, television set, and storage medium
CN110868625A (zh) 一种视频播放方法、装置、电子设备及存储介质
US20120206318A1 (en) Locating and displaying method upon a specific video region of a computer screen
US7948561B2 (en) Video playback apparatus and method for controlling the same
CN105791889A (zh) 一种视频直播中的广告插播方法及装置
CN102026017B (zh) 一种视频解码高效测试方法
CN103841389B (zh) 一种视频播放方法及播放器
US8437619B2 (en) Method of processing a sequence of coded video frames
CN111327959A (zh) 视频插帧方法及相关装置
JP4267649B2 (ja) ビデオ番組の処理方法、関連装置及び関連媒体
WO2006112508A1 (ja) ストリームデータ記録装置、ストリームデータ編集装置、ストリームデータ再生装置、ストリームデータ記録方法、及びストリームデータ再生方法
WO2018086303A1 (zh) 一种广告插播方法、装置及可读存储介质
US20100182505A1 (en) Video receiver
CN106973318B (zh) 聚合视频操作方法及装置
CN113709447B (zh) 一种终端设备播放性能的检测方法和装置
CN110636372B (zh) 视频解码方法、视频播放装置、电子设备及存储介质
US20090049484A1 (en) Method and system for image alteration
US9842572B2 (en) Methods and apparatus for displaying video including variable frame rates
CN110300326B (zh) 一种视频卡顿的检测方法、装置、电子设备及存储介质
CN113055744B (zh) 一种视频解码方法及装置
CN118075556A (zh) 一种基于ijkplayer播放器的卡顿计算方法
CN112203097A (zh) 一种自适应视频解码方法、装置,终端设备及存储介质
EP3522525B1 (en) Method and apparatus for processing video playing
US10965984B1 (en) Minimization of video re-buffering using local animation
US6400895B1 (en) Method for optimizing MPEG-2 video playback consistency

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