ijkplayer专题

ijkplayer音视频同步策略分析

音视频同步是播放器的一道必选题,也是面试官常问的面试题。大家应该都知道音视频同步时钟有三种,默认使用音频时钟作为主时钟。但是面试官会有其他变种问法:如果直播流的音频落后或者中断怎么办?如果没有音频流,以什么时钟作为主时钟?如果有两个音频流(原声和伴奏的播放场景)怎么办?如果视频时间戳落后或者超前怎么办,不同落后程度怎么处理?如果设置倍速播放有没影响? 总结一下音视频同步问题: 1、视频时间戳落

ijkplayer播放器架构从原型到升级

ijkplayer是一款跨平台的播放器,支持Android与iOS端,核心部分基于ffmpeg,支持Android的mediacodec硬解与iOS的videotoolbox硬解,视频图像采用OpenGL进行渲染。许多主流播放器都使用ijkplayer作为播放方案。接下来我们从核心播放流程、内核架构、时序图、状态机、播放器整体架构进行详细分析。 目录 1、核心播放流程 2、播放内核架构 3

ijkplayer音频解码播放架构分析

ijkplayer是一款跨平台播放器,支持Android与iOS播放,音频解码默认使用FFmpeg的avcodec软解。Android端播放音频可以用OpenSL ES和AudioTrack,而iOS端播放音频默认使用AudioQueue。 一、iOS音频解码播放 采用pipeline形式创建音频播放组件,整体流水线如下: 1、创建IjkMediaPlayer 首先调用ijkplaye

ijkplayer的时序与状态图分析

ijkplayer底层基于FFmpeg的ffplay.c进行改造与扩展,中间层进行Android与iOS的适配,Android需要添加JNI接口,而iOS可以直接调用c/c++。IJK作为一款优秀的开源跨平台播放器,具备完整的状态机,而且播放时序清晰。 目录 一、ijkplayer时序图 二、ijkplayer状态图 1、状态机 2、状态分析 3、状态迁移 一、ijkplayer时序

Android边缓冲边播放视频(ijkplayer的编译和使用)

当你看到这篇博文的时候希望你先对这个开源项目有所了解。   github上的地址: https://github.com/Bilibili/ijkplayer   感谢哔哩哔哩团队不吝开放出来。此文主要用于帮助之后需要编译ijkplayer的同学,少走一点弯路。   转载请注明出处:CSDN 胖虎 http://blog.csdn.net/ljphhj   首先交代一下我这边编译的

在ubuntu下编译ijkplayer-android

在ubuntu下编译ijkplayer-android 我前面一片文字讲的是在windows的cygwin中去编译,那真是各种坑啊,软链接无法识别,x86和86_64的so文件无法编译出来等等,我折腾了几天还是没有在cygwin中完美编译ijkplayer,今天我用了一下同事的ubuntu的电脑,变异ijkplayer-android真的是很快,很快的。 1.前提: 下面是官方的提示: #

ijkplayer在windows下编译并导入Android Studio

PS:必须说,这个编译千万不要在windows下,去ubuntu下编译吧: 教程:http://blog.csdn.net/u010072711/article/details/51438871   阅读本文章前请先看:windows下用cygwin编译android版ijkplayer   我是看着里面的步骤来做的,由于我自己对linux环境和命令不熟悉,导致我对Cygwin的知识为零,

ijkplayer从ffmpeg指针获取sdl渲染信息并设置异常到流程

获取abort_request流程: is->abort_request VideoState *is = ffp->is; 获取sdl流程: typedef struct FFPlayer {     /* extra fields */     SDL_Aout *aout;     SDL_Vout *vout; } sdl回调的call机制 ANativ

ijkplayer seek的问题

1. IjkMediaPlayer_seekTo 调用 ijkmp_seek_to , ijkmp_seek_to_l 2. seek 最终会调用 ff_ffmsg_queue.h 中的方法 ffp_notify_msg2 , msg_queue_put_simple3 ,  msg_queue_put ,  msg_queue_put_private来发送消息:

ijkplayer设置开启log

player.setLogEnabled(true);

ijkplayer源码分析之surface与opengl关联初始化(一)

ijkplayer源码分析之opengl与surface关联初始化 ===================================================== ijkplayer源码分析系列文章列表: ijkplayer源码分析之surface与opengl es关联初始化(一) ijkplayer源码分析之audio与opensl es初始化(二) ==========

IJKPlayer 编译与使用总结

IJKPlayer 是B站开源的超级好用的视频播放器,IJKPlayer Android和IOS都可用,还支持多种视频的硬解码。公司的项目采用Google MediaPlayer,播放器存在对视频格式和传输协议的支持不足问题。经过对主流开源播放器的对比,最终选择IJKPlayer。          开始编译 拉取ijkplayer源码 git clone https://

retrofit+Rxjava+Greendao+断点续传+Ijkplayer视频播放

retrofit+Rxjava+Greendao+断点续传+Ijkplayer视频播放: 过多的解释就不说了,都是小知识点,直接上代码 github下载地址

FFmpeg:自实现ijkplayer播放器--11音视频同步

文章目录 音视频同步时钟结构时间api实现过程 音视频同步 音视频同步采用以音频为基准的方式,使用时间轴作为参考 如部分音频数据解不出来时,计算音频的pts(时间戳)与时间轴的差值,视频时间为差值加上时间轴,使得时间戳和音频一样 时间轴统是通过av_gettime_relative()获取到的时钟,单位为微妙 时钟结构 typedef struct Clock {doub

FFmpeg: 自实现ijkplayer播放器--03UI界面设计

文章目录 UI设计流程图UI设计界面点击播放功能实现 UI设计流程图 UI设计界面 主界面 控制条 播放列表 画面显示 标题栏 设置界面 提示框 点击播放功能实现 槽函数实现: connect(ui->ctrlBarWind, &CtrlBar::SigPlayOrPause, this, &MainWind::OnPlayOrPaus

FFmpeg: 自实现ijkplayer播放器-02环境搭建

文章目录 安装环境项目工程配置库文件 安装环境 IDE: Qt5.12 库: ffmpeg-4.2.1-win32SDL 项目工程配置 pro文件 TEMPLATE = appTARGET = SimpleIJKPlayerDESTDIR = binQT += core gui widgets#CONFIG += debug#DEFINES += _UNI

FFmpeg: 简易ijkplayer播放器实现--05ijkplayer–连接UI界面和ffplay.c

文章目录 ijkplayer时序图消息循环--回调函数实现播放器播放时状态转换播放停止 ijkmediaPlay成员变量成员函数 ijkplayer时序图 stream_open: frame_queue_init packet_queue_init init_clock 创建read_thread线程 创建video_refresh_thread线程 消息循环–回调函

FFmpeg: 简易ijkplayer播放器实现--01项目简介

文章目录 项目介绍流程图播放器实现过程界面展示 项目介绍 此项目基于FFmeg中 ffplay.c进行二次开发,实现基本的功能,开发软件为Qt 项目优势: 参考ijkplayer播放器,实现UI界面和播放器核心进行解耦,容易添加其他功能采用消息机制,设计消息队列,设置播放器状态,播放器的性能更加优化参考ffplay.c源码,使用多线程进行视频解复用,编解码,优化播放器性能

IJKPLAYER源码分析-OpenSL ES播放

前言     与IJKPLAYER处理AudioTrack播放类似,OpenSL ES的接入需要满足SDL_Aout的接口规范,所不同的是OpenSL ES播放是在native完成的,调用的是NDK接口OpenSL ES的播放能力。关于OpenSL ES的详细介绍,请参考官方文档 OpenSL ES 一文。     Pipeline及SDL_Aout结构体及相关创建,与AudioTrack一致

windows+msys2编译android版ijkplayer

近来想研究一下ijkplayer,发现在windows上编译有很多的坑。搞了一天终于能运行example,过程就像排雷一般,但也对整个项目结构了解了一番。记录下来! 可能有些坑没记得写下来,欢迎留言。 下载我改过的文件。 准备材料 msys2安装包ndk(我用的14b)安装android studio 环境配置 安装完msys2后从开始菜单启动msys2 minggw 64-bit,理

IJKPlayer的视频播放

Android程序员面试宝典本文转载自:https://www.jianshu.com/p/c6620e27a67a运行效果配套视频:http://toutiao.com/item/6431719005085499906/使用步骤1. 在project的build.gradle添加如下代码(如下图) allprojects {repositories {...maven { url "ht

今天用IJKPlayer播放视频,频繁切换视频,发现一直报what=-10000,extra=0

今天用IJKPlayer播放视频,频繁切换视频,发现一直报what=-10000,extra=0。以为是播放器没有释放资源的问题,然后就对播放器进行各种优化,最后发现是视频被删除了的原因导致。视频压根不存在,粗心了。

Bilibili/ijkplayer,QPlayer

GitHub - bilibili/ijkplayer: Android/iOS video player based on FFmpeg n3.4, with MediaCodec, VideoToolbox support. QPlayer2 | 网站底部悬浮音乐播放 - 知乎 (zhihu.com) GitHub - Jrohy/QPlayer-WordPress-Plugi

flutter开发实战-ijkplayer视频播放器功能

flutter开发实战-ijkplayer视频播放器功能 使用better_player播放器进行播放视频时候,在Android上会出现解码失败的问题,better_player使用的是video_player,video_player很多视频无法解码。最终采用ijkplayer播放器插件,在flutter上使用fijkplayer插件。 一、引入fijkplayer 在使用fijkpl

iOS-ijkplayer框架的集成

ijkplayer 是一个基于 ffplay 的轻量级 Android/iOS 视频播放器。实现了跨平台功能,API易于集成;编译配置可裁剪,方便控制安装包大小;支持硬件加速解码,更加省电,此方案目前已用于美拍和斗鱼 APP,说明ijkplayer是经得起考验的,当然用第三方SDK是最方便的,如七牛、腾讯、阿里都很好。 第一步 :到git上面下载 ijkplayer-master 1.手动到g

ijkplayer支持播放h264本地文件

默认前期已能正确编译ijkplayer及使用官方例子demo,这个方法目前只测试了安卓端可以正常播放h264格式的本地文件,流播放没有测试,不一定可行。 在do-compile-ffmpeg.sh添加以下内容 # Standard options:FF_CFG_FLAGS="$FF_CFG_FLAGS --prefix=$FF_PREFIX"#lbgFF_CFG_FLAGS="$FF_CF