ijkplayer
文章平均质量分 65
andylao62
这个作者很懒,什么都没留下…
展开
-
关于ffplay源码之serial变量的说明
serial翻译为连续的,在ffplay中是用于判断播放是否连续的标志,serial变量存在于自定义的多个结构体中。也就是在seek后serial会加1,会产生变化。以下为read_thread中,文件发生跳到时的操作。原创 2024-01-25 17:06:18 · 385 阅读 · 0 评论 -
播放卡顿分析
看下这个M3U8请求,时间间隔超过duration的时长。ts的duration是11S。原创 2023-05-06 14:02:43 · 215 阅读 · 0 评论 -
高频卡顿问题分析
从监控图中可以看到,3.76k的用户,两分钟内报卡顿次数达到100万次,很恐怖,这个是非正常的卡顿由于没有日志,只能先看代码分析,出现高频卡顿的原因问题描述在播放过程,会频繁上报卡顿,2分钟能报几百次,从报卡顿开始到卡顿结束最短时间接近0ms数据分析最近30天的数据分析出现概率比较高的6个频道如下:出现概率比较高的用户如下: Buffer次数 设备数 备注 大于100k ...原创 2023-01-31 19:46:24 · 598 阅读 · 0 评论 -
修复ijkplayer没有正确处理sps导致的MediaCodec解码失败问题
这里针对这种情况做了处理,提取出其中的sps数据给到MediaCodec,避免MediaCodec初始化失败。需要这种视频链接的,我可以发出来,不过视频链接只有24小时有效。原创 2022-10-04 01:04:28 · 1301 阅读 · 0 评论 -
Android 硬解情况下 sps/pps变化时重启解码器继续播放
【代码】Android 硬解情况下 sps/pps变化时重启解码器继续播放。原创 2022-10-04 00:51:18 · 630 阅读 · 0 评论 -
如何用ijkplayer使用改变清晰度功能(切换码流)
自适应码率切换需要服务器端和客户端同时支持,首先服务器端需要提供多码率的码流,对HLS来说,就是需要服务器端提供master m3u8 playlist,也就是通常所说的嵌套m3u8;对Dash来说,manifest文件AdaptationSet里面会包含多个Representation,每个Representation对应某一个码率的流的描述。3.Buffer数据切换。原创 2022-10-04 00:21:52 · 1674 阅读 · 1 评论 -
播放器各个阶段耗时分析点
共耗时1.34秒,其中网络耗时在380+ms13:48:32.226 起播13:48:32.246~13:48:32.386 访问m3u8耗时140ms13:48:32.386~13:48:32.626 访问第一个ts 耗时240ms13:48:32.996~13:48:33.006 解析码流耗时10ms13:48:33.006~13:48:33.056 释放上一次的资源耗时50ms13:48:33.056~13:48:33.066 创建vdec 耗时10ms13:48:33.0原创 2022-05-16 11:33:51 · 510 阅读 · 0 评论 -
ijkplayer调用三方so库
ijkplayer\android\ijkplayer\ijkplayer-armv7a\src\main\jni\prtengine\Android.mkLOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := libyourlib-libLOCAL_SRC_FILES := libyourlib-lib.soLOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/includeinclu原创 2021-08-19 10:38:40 · 348 阅读 · 0 评论 -
ijkplayer的seek过程
IjkVideoView.javaseekTo(seekToPosition);ijkplayer_jni.c{ "seekTo", "(J)V", (void *) IjkMediaPlayer_seekTo },int ijkmp_seek_to_l(IjkMediaPlayer *mp, long msec)ffp_notify_msg2(mp->ffplayer, FFP_REQ_SEEK, (int)msec);原创 2021-08-11 14:02:54 · 991 阅读 · 0 评论 -
ffmpeg的avformat_find_stream_info分析过程(十一)
/* 读取媒体文件的包来获取流信息。这个方法对于没有头部的文件格式也是有用的,例如MPEG。 * 对于MPEG-2这种帧模型重复的类型,这个方法也会计算真实帧率。 * * 该逻辑文件地址不被这个方法更改。 * 检查的数据包可能会被缓冲以用于以后处理。 * * @参数 ic 媒体文件句柄(格式上下文) * @参数 options ... * @成功返回值大于0 * @注意:这个方法不保证打开所有的编解码器,所以非空的options参数将会返回一个完全合理的行为。 * * 为了让用户.原创 2021-06-10 17:21:16 · 791 阅读 · 0 评论 -
关于MediaCoder使用过程问题整理
1、MediaCoder压出来的视频都会莫名其妙带一个标签2种解决办法1)关了播放器的章节功能,2)容器里不要自动选择,选启用→MP4BOX。2、使用MP4BOX混流画面直接黑屏mp4box 混流hevc视频出现黑屏问题是因为混流器版本太旧了,有bug,作者也懒得更新,要修复这个问题,去mp4box的官网,下载最新版本构建的程序替换到mc的coder或tools目录就行https://juejin.cn/post/6854573210579501070这个黑屏是由于tag引起的原创 2021-06-07 13:46:16 · 1146 阅读 · 2 评论 -
ffmpeg的avformat_open_input()分析过程--以mp4为例(十)
avformat_open_input(),该函数用于打开多媒体数据并且获取一些信息,它的声明位于libavformat/avformat.h。主要工作1)通过init_input打开流媒体数据,根据probe探测流媒体最合适的协议类型AVInputFormat2)read_header即根据对应的协议,读取媒体头信息并创建AVStream......原创 2021-05-18 19:09:09 · 1275 阅读 · 1 评论 -
ffmpeg的avformat_alloc_context()分析过程(九)
avformat_alloc_context这个函数主要实现了分配一个AVFormatContext。他可用于由框架分配的在上下文和所有内容,即分配解复用器上下文AVFormatContext *avformat_alloc_context(void){ AVFormatContext *ic; ic = av_malloc(sizeof(AVFormatContext)); if (!ic) return ic; avformat_get_context_defa.原创 2021-05-14 14:36:40 · 897 阅读 · 2 评论 -
FFRMPEG4.1源码分析之 io_open_default() && io_close_default()
目录1io_open_default()1.1ffio_open_whitelist()1.1.1ffurl_open_whitelist()1.1.1.1 ffurl_alloc()1.1.1.1.1url_find_protocol()1.1.1.1.1.1ffurl_get_protocols()...转载 2021-05-14 14:30:30 · 361 阅读 · 0 评论 -
ijkplayer及ffmpeg重要概念及结构体(八)
ijkplayer中的结构体介绍IjkMediaPlayerijkplayer 的结构体,提供播放控制和播放的状态的一些处理,结构体指针再初始化后会保存在java层,提供复用。基本每个jni的方法都会获取java 层对应对象的一个long 型变量,然后强转成此结构体。FFPlayer主要与java层交互的结构体,音视频的输出,软硬解码器的设置。VideoStateFFPlay中的结构体。ijkplayer 直接拿过来包含在FFPlayer中。Frame_Queue保存解码后数原创 2021-05-14 11:27:44 · 694 阅读 · 0 评论 -
ijkplayer的MP4解析---读取多媒体数据文件头(七)
总概ff_ffplay.cread_thread ---.>>>avformat_open_inpututils.cavformat_open_input --->>>s->iformat->read_header(s)mov.c.read_header=mov_read_header,mov_read_header -->>>>mov_read_default1、...原创 2021-04-30 15:46:44 · 861 阅读 · 0 评论