![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
流媒体
文章平均质量分 70
andylao62
这个作者很懒,什么都没留下…
展开
-
FFMPEG解析ts流
关于TS格式解析,可以参考《》,本文主要代码部分解读。建议大家熟读iso13818-1,碰到问题很多情况是因为没有熟悉标准。原创 2024-01-26 16:34:01 · 1881 阅读 · 0 评论 -
修复ijkplayer没有正确处理sps导致的MediaCodec解码失败问题
这里针对这种情况做了处理,提取出其中的sps数据给到MediaCodec,避免MediaCodec初始化失败。需要这种视频链接的,我可以发出来,不过视频链接只有24小时有效。原创 2022-10-04 01:04:28 · 1369 阅读 · 0 评论 -
Android 硬解情况下 sps/pps变化时重启解码器继续播放
【代码】Android 硬解情况下 sps/pps变化时重启解码器继续播放。原创 2022-10-04 00:51:18 · 667 阅读 · 0 评论 -
如何用ijkplayer使用改变清晰度功能(切换码流)
自适应码率切换需要服务器端和客户端同时支持,首先服务器端需要提供多码率的码流,对HLS来说,就是需要服务器端提供master m3u8 playlist,也就是通常所说的嵌套m3u8;对Dash来说,manifest文件AdaptationSet里面会包含多个Representation,每个Representation对应某一个码率的流的描述。3.Buffer数据切换。原创 2022-10-04 00:21:52 · 1889 阅读 · 1 评论 -
seek缩略图
HIVideoView2: | onSeekPreviewInfoReady seekPreviewInfo= SeekPreviewInfo{urlList=[https://r1.ykimg.com/0524000861D55D630000011AC2072E4C-00001.jpg, https://r1.ykimg.com/0524000861D55D630000011AC2072E4C-00002.jpg, https://r1.ykimg.com/0524000861D55D630000011原创 2022-07-05 19:44:16 · 142 阅读 · 0 评论 -
TS文件格式详解及解封装过程
简要ts是一种封装格式,全名为MPEG-TS,文件分为三层:ts层(Transport Stream)、pes层(Packet Elemental Stream)、es层(Elementary Stream)。es层就是音视频数据,pes层是在音视频数据上加了时间戳等对数据帧的说明信息,ts层是在pes层上加入了数据流识别和传输的必要信息(header)。相关概念PAT:Program Association Table,节目关联表PMT:Program Map Table,节目映射表E原创 2021-09-06 17:35:52 · 10179 阅读 · 0 评论 -
在onDrawFrame中调用GLES20会导致长时间延迟(GLES20 calls in onDrawFrame causes long delay)
我编写了一个游戏,当调用onDrawFrame()时,我首先更新游戏状态(游戏逻辑和绘图缓冲区),然后继续进行实际绘图。 在Moto G和Nexus 7上,一切都运行顺畅,每个onDrawFrame()调用只需要1-5ms。 但是,在三星Galaxy S3上,90%的时间onDrawFrame()调用需要30-50ms才能更新。进一步研究这个问题我发现问题完全取决于我在下面附加的第一个渲染方法: - (编辑:块现在是glclear();删除了不必要的调用以获取句柄,请参阅注释)public vo.翻译 2022-05-25 10:22:41 · 315 阅读 · 0 评论 -
关于HLS的discontinue出现问题
1、apple 的hls方案,采用ffmpeg转码的ts流,播放时会渐渐变得音画不同步,sohu源的处理办法是每隔5分钟加一次discontinue标签,但是这个标签会导致原生播放器重启,表现得有点卡。解决办法:针对这种情况,改造播放器,不让重启,直接读取下一个流是比较好的办法。但是ffmpeg处理hls的播放存在其它一些问题:1、每遇到discontinue时,显示的播放时长会清零;2、只能在第一个discontinue前进行拖放。本文针对这个问题,对ffmpeg进行改造,使对hls源更优雅的适配。原创 2021-09-16 16:55:30 · 1746 阅读 · 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 · 372 阅读 · 0 评论 -
ffmpeg调用三方SO库
ijkplayer\android\contrib\tools\do-compile-ffmpeg.shFF_EXTRA_CFLAGS=$FF_SOURCE/prtengine/include/FF_EXTRA_LDFLAGS=$FF_SOURCE/prtengine/lib/libyour-lib.soFF_DEP_LIBS=原创 2021-08-19 09:42:56 · 196 阅读 · 0 评论 -
关于mediacode编解码绿屏的汇总
https://blog.csdn.net/email_jade/article/details/82527278ijkplayer起播绿屏问题记录Android平台使用ijkplayer播放mp4的时候出现了起播闪一下绿屏的现象,在github上寻找解决方案,很多答案都是说由于开启硬解并且视频第一帧不是关键帧导致的,如下: https://github.com/Bilibili/ijkplayer/issues/3233 但是我的配置是软解,也出现了同样的现象。后来...原创 2021-08-11 13:35:52 · 2370 阅读 · 0 评论 -
不同平台获取MAC地址
static int getMacAddress(char *addr){#ifdef _WIN32#elif __APPLE__#include <TargetConditionals.h>#if TARGET_IPHONE_SIMULATOR sprintf(addr, "ios_simulator");#elif TARGET_OS_IPHONE sprintf(addr, "iphone");#elif TARGET_OS_MAC FILE *f.原创 2021-06-29 15:41:08 · 190 阅读 · 0 评论 -
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 · 961 阅读 · 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 · 1610 阅读 · 1 评论 -
ijkplayer及ffmpeg重要概念及结构体(八)
ijkplayer中的结构体介绍IjkMediaPlayerijkplayer 的结构体,提供播放控制和播放的状态的一些处理,结构体指针再初始化后会保存在java层,提供复用。基本每个jni的方法都会获取java 层对应对象的一个long 型变量,然后强转成此结构体。FFPlayer主要与java层交互的结构体,音视频的输出,软硬解码器的设置。VideoStateFFPlay中的结构体。ijkplayer 直接拿过来包含在FFPlayer中。Frame_Queue保存解码后数原创 2021-05-14 11:27:44 · 726 阅读 · 0 评论 -
ijkplayer添加私有协议(六)
ffbuild\config.mak(这文件是自动生成,不用修改)CONFIG_IJKBUFFERDATASOURCE_PROTOCOL=yeslibavformat\protocols.cextern const URLProtocol ff_ijkbufferdatasource_protocol;libavformat/ijkutils.cIJK_DUMMY_PROTOCOL(ijkbufferdatasource);libavformat\protocol_list.c原创 2021-05-06 15:46:14 · 705 阅读 · 1 评论 -
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 · 943 阅读 · 0 评论 -
gradle配置 uploadArchives上传文件到私服仓库
简要 很多时候,Android Studio中所创建的工程,会依赖一个或多个Module。Module 生成的AAR库,可以上传到maven或者私服Nexus作为公用的SDK。Gradle子工程之间通过compile/implementation project(":XXX")这种方式依赖是非常便利的,但是这样的时候,如果用uploadArchives上传AAR到Maven,就可以通过api引用,很是方便。配置及编译配置分播放器部分配置和App引用配置ijkplayer配置及...原创 2021-01-18 14:31:20 · 8396 阅读 · 0 评论 -
video_refresh_thread分析 (四)
简介《ijkplayer解码器的准备过程(二)》这篇文章中,讲述了video_refresh_thread创建过程,这边文章主要分析video_refresh_thread的执行过程。故名思议,这个线程主要负责视频渲染过程,流程图代码分析1、video_refresh_thread循环调用video_refresh,只要满足不是暂停!is->paused和force刷新force_refreshstatic int video_refresh_thread(vo.原创 2021-01-07 13:35:43 · 531 阅读 · 1 评论 -
ijkplayer的read_thread线程分析(三)
read_thread线程read_thread:这个线程先进行FFmpeg初始化操作,然后获取视频流信息avformat_open_input():打开媒体。avformat_find_stream_info():获得媒体信息。这个函数有时候会影响首画的时间,看这个函数的源码发现:这个函数会一直分析视频流的信息,当一直获取不到信息的时候就会一直在这个函数中,一直到它最大的限制,才会出来,会有好几秒的时间。如果网络卡的话,时间会更长。但是我们可以自己给他添加限制,到达我们自己的限制原创 2020-12-24 11:28:09 · 856 阅读 · 0 评论 -
ijkplayer解码器的准备过程(二)
本文介绍,从设置好DataSource的URL后,到onPrepared回调的过程 ijkMediaPlayer.setDataSource("http://192.168.199.8/emo.mp4"); ts = System.currentTimeMillis(); ijkMediaPlayer.setOnPreparedListener(new IMediaPlayer.OnPreparedListener() { .原创 2020-11-20 17:48:59 · 1144 阅读 · 0 评论 -
initPlayer初始化过程(一)
initPlayer初始化过程IjkMediaPlayer.javanative_setup通过Jni调用ijkplayer_jni.c{ "native_setup", "(Ljava/lang/Object;)V", (void *) IjkMediaPlayer_native_setup },进入IjkMediaPlayer_native_setupIjkMediaPlayer *mp = ijkmp_android_create(message_l.原创 2020-11-19 15:04:57 · 933 阅读 · 0 评论