ijkplayer

Android常用第三方框架记录

妖精的绣舞 提交于 2020-11-19 04:49:08
先记录,万一用到呢 1、腾讯TBS浏览器WebView,避免系统WebView的多坑。 2、智能布局加载更多:SmartRefreshLayout 3、沉浸式布局:ImmersionBar 4、注解:ButterKnife 5、键盘监听:KeyboardHeightProvider 6、滑动TabLayout:SlidingTabLayout 6、音视频播放器:IjkPlayer 7、音视频缓存管理:HttpProxyCacheServer 8、JS连接桥:com.github.lzyzsd:jsbridge 9、权限检测:com.yanzhenjie:permission 10、照片裁减:badgeview 11、桌面应用角标:com.facebook.stetho:stetho 12、地址选择器:com.soundcloud.android:android-crop 13、内存检测:leakcanary 14、图片加载:Fresco(建议使用,加载速度比Glide快,加载动画适配机型比Glide多) 15、Banner:cn.bingoogolapple:bga-banner 16、事件传递:EventBus,Rxbus(如果使用RxJava,建议使用) 17、流式布局:com.github.iwgang:countdownview 18、数据库:GreenDao 19

基于ijkplayer封装的UE4安卓播放器插件

那年仲夏 提交于 2020-07-27 13:49:40
基于ijkplayer封装的UE4安卓播放器插件 关于 ijkplayerUE4 相关的 Github 地址 使用方法 运行后的demo 关于 ijkplayerUE4 基于bilibili开源项目 ijkplayer 的一个UE4视频播放器插件,理论上是支持各种直播流媒体的。比如RTSP,RTMP之类的,不过这些特殊的类型需要自行下载ijkplayer编译成库,现在仅支持m3u8等格式的视频流。 UI界面用的是开源的 jjdxm_ijkplayer 的项目, ijkplayerUE4 基本上是站在巨人的肩旁上。 相关的 Github 地址 如果没有特殊需求的可以直接用我封装好的插件:https://github.com/LinXunxi/IJKPlayerUE 下面是所依赖的库的地址: jjdxm_ijkplayer :https://github.com/lingcimi/jjdxm_ijkplayer ijkplayer :https://github.com/Bilibili/ijkplayer 使用方法 下载压缩包或者直接clone下来 git --clone https://github.com/LinXunxi/IJKPlayerUE.git 放到项目根目录的Plugins目录(没有就创建 CS文件中引用 using UnrealBuildTool; public

仿最新BiliBili客户端(已开源)

烈酒焚心 提交于 2020-04-28 10:58:04
前言 该项目仿照B站的Android客户端进行开发,初衷是想学习流行的Android技术,但是没有数据资源。因为喜欢逛B站,而且B站的Android客户端又是Google推荐的MD设计规范,于是花了些时间研究B站的网络请求,最后成功搞定,与@Android_ZzT同学达成一致,合作开发这个模仿B站的练习项目。该项目在工作之余开发,所以更新时间不定。 前期准备 一、B站网络请求抓包 首先是对B站的网络请求进行抓包,环境是mac,开始尝试使用Charles,由于B站的网络请求大多为Https,Charles的证书设置总是不成功(没找到正确的打开方式),无法抓到Https的包,就放弃了。 这里推荐mitmproxy,是一款在github上托管的开源抓包工具。 官网地址:http://mitmproxy.org/ github地址:https://github.com/mitmproxy/mitmproxy 教程:使用mitmproxy进行移动端的HTTP抓包 Tips:Https抓包需要安装证书,大部分手机按照官方文档或是教程文章都可以成功安装,但是小米手机无法正常下载,官方文档中提到证书会放在~/.mitmproxy目录下,所以可以手动传到手机中进行安装。 在设置好证书和代理之后,我们就可以开始进行https抓包了,先打开app首页 观察mitmproxy并找到对应网络请求

一步步实现windows版ijkplayer系列文章之三——Ijkplayer播放器源码分析之音视频输出——音频篇

こ雲淡風輕ζ 提交于 2020-04-20 15:19:05
一步步实现windows版ijkplayer系列文章之一——Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二——Ijkplayer播放器源码分析之音视频输出——视频篇 一步步实现windows版ijkplayer系列文章之三——Ijkplayer播放器源码分析之音视频输出——音频篇 一步步实现windows版ijkplayer系列文章之四——windows下编译ijkplyer版ffmpeg 一步步实现windows版ijkplayer系列文章之五——使用automake一步步生成makefile 一步步实现windows版ijkplayer系列文章之六——SDL2源码分析之OpenGL ES在windows上的渲染过程 一步步实现windows版ijkplayer系列文章之七——终结篇(附源码) #一步步实现windows版ijkplayer系列文章之三——Ijkplayer播放器源码分析之音视频输出——音频篇 这篇文章的ijkplayer音频源码研究我们还是选择Android平台,它的音频解码是不支持硬解的,音频播放使用的API是OpenSL ES或AudioTrack。 OpenSL ES & AudioTrack OpenSL ES 什么是OpenSL ES?下面来自官网的说明: OpenSL

如何实现直播的低延迟?

岁酱吖の 提交于 2020-03-27 09:27:09
3 月,跳不动了?>>> 解决低延迟问题的核心思想: NO BUFFER 低延迟:顾名思义,就是让播放端和推流端的时间差越小越好,那么如何做到低延迟呢,一个词概括: no buffer 首先说明一下视频流的流向:推流端 --->CDN 服务器 ---> 拉流端 1. 推流端 nobuffer ,也就是保证推流端缓存的 buffer 最小。这样基本上保证在推流端出现网络抖动或者突然变差的情况下,能够舍弃已经缓存的 buffer ,继续推新生成好的视频帧。这样保证了,在网络端开始传输的时候的视频内容是最新的。 2. CDN nobuffer ,针对性的调整 CDN 的配置,让 CDN 服务器缓存的 GOP 尽可能的少,这样保证拉流端获取到的是最新的内容。 3. 拉流端 nobuffer ,既然推流和中转的 CDN 都设置了 nobuffer ,那么拉流端设置 nobuffer 的意义,应该不需要做过多的解释了吧。 记住一点:低延迟问题的解决不是一端的事情,三端的配置都会对延迟的效果产生影响。 拉流端(基于 IjkPlayer )低延时直播的经验: 在直播的过程中,有首开延时和内容延时。首开延时,基本可以控制在 100ms 左右;基于 RTMP 播放的内容延迟根据 CDN 的情况,基本上会在 2~5 秒左右。而因为 RTMP 是基于 TCP 协议的,所以在播放的过程中会受到网络条件的影响

视频直播技术的相关协议

我只是一个虾纸丫 提交于 2020-03-24 10:58:02
3 月,跳不动了?>>> 首先,了解了一下视频直播相关的概念。常用的几种视频协议是: RTMP 、 HTTP-FLV 、 HLS 、 RTP/RTCP 协议。 然后我们会在说明一下直播整体的流程和相关的技术。 视频直播协议 在直播领域大概可以分类两种类型的在直播:一种是交互式直播,另外一种是非交互式直播。 非交互式直播(如:阅兵直播、 NBA 直播、欧冠直播等)交互性不强,允许延迟 10 秒或者 10 秒以上,特点是源比较少,适合做多路转码(用户可以根据网络条件观看)。 交互式直播的典型场景有:秀场直播、游戏直播等。这些直播因为对主播和观众的互动性要求比较高,所以要求延迟在 5s 以内。交互式直播的特点是:源比较多,不适合做多路转码,中间服务器只作为中转角色。 直播内容传输的介质是网络,而网络中传播视频或者音频时需要使用对应的协议,目前适合直播场景的常用协议有如下几种。 1.RTMP 协议 (HTML 5 不支持, Flash 支持 ) RTMP 是一种流媒体协议,是 Adobe 的专利协议。基于 TCP ,在国内的使用流行度很高。 流行原因:开源软件和开源库的支持稳定完整,最常用的推流和拉流的解决方案基本上能够很稳定的运行。如:开源的 librtmp 推流库,服务端有 nginx-rtmp 插件,拉流有 ijkPlayer 播放库。 2.HTTP-FLV 协议 (HTML 5

几个不错的Android开源音视频播放器

Deadly 提交于 2020-03-24 10:56:54
3 月,跳不动了?>>> 原文链接: https://blog.csdn.net/u012246458/article/details/83620456 需求: 搜集到的github常用的视频和音频播放器,其中前三个是比较常用的播放器。 第四个和第五个是比较直白的用法。 1.ijkplayer 项目地址: https://github.com/Bilibili/ijkplayer 介绍:Ijkplayer 是Bilibili发布的基于 FFplay 的轻量级 Android/iOS 视频播放器。实现了跨平台功能,API 易于集成;编译配置可裁剪,方便控制安装包大小;支持硬件加速解码,更加省电;提供 Android 平台下应用弹幕集成的解决方案。 2.ExoPlayer 项目地址:https://github.com/google/ExoPlayer 介绍:ExpPlayer是一个开源的,App等级的媒体API,它的开源项目包含了library和示例:ExoPlayer library - 这部分是核心的库 Demo app - 这部分是演示怎么使用ExoPlayer的Demo 3.android-UniversalMusicPlayer 项目地址:https://github.com/googlesamples/android-UniversalMusicPlayer

移动端实时音视频直播技术流程

雨燕双飞 提交于 2020-03-18 11:30:48
某厂面试归来,发现自己落伍了!>>> 随着互联网用户消费内容和交互方式的升级,支撑这些内容和交互方式的基础设施也正在悄悄发生变革。手机设备拍摄视频能力和网络的升级催生了大家对视频直播领域的关注,吸引了很多互联网创业者或者成熟企业进入该领域。 本文是我们将从整体介绍直播中的各个环节。 1 、音视频采集 采集是播放环节中的第一环,iOS 系统因为软硬件种类不多,硬件适配性较好,所以比较简单。Android 则不同,市面上硬件机型非常多,难以做到一个库适配所有硬件。PC 端的采集也跟各种摄像头驱动有关,推荐使用目前市面上最好用的 PC 端开源免费软件 OBS。 2 、音视频处理 「80% 的主播没有美颜根本没法看。」不光是美颜,很多其它的视频处理如模糊效果、水印等也都是在这个环节做。目前 iOS 端比较知名的是 GPUImage 这个库,提供了丰富端预处理效果,还可以基于这个库自己写算法实现更丰富端效果。Android 也有 GPUImage 这个库的移植,叫做 android-gpuimage。同时,Google 官方开源了一个伟大的库,覆盖了 Android 上面很多多媒体和图形图像相关的处理。 3 、音视频编码 编码主要难点有两个: 处理硬件兼容性问题。 在高 fps、低 bitrate 和音质画质之间找到平衡。 iOS 端硬件兼容性较好,可以直接采用硬编。而 Android

Flutter Weekly Issue 47

眉间皱痕 提交于 2020-03-18 11:22:16
某厂面试归来,发现自己落伍了!>>> 教程 开辟 Dart 到 Native 的超级通道,饿了么跨平台的最佳实践 当永恒的软键盘问题遇到Flutter 插件 fijkplayer ijkplayer for flutter. ijkplayer 的 flutter 封装。 Flutter media player plugin for android/iOS based on ijkplayer. fijkplayr 是基于 ijkplayer 封装的 flutter 媒体播放器,开箱即用,无需编译 ijkplayer。 router_generator router_generator is a flutter library for router generation. state_notifier ValueNotifier, but outside Flutter and with some extra perks i69n Simple internationalization (i18n) package for Dart and Flutter. CustomSwitch Beautiful Custom Switch package created with Flutter. flutter_verification_code A Flutter package

带着问题,再读ijkplayer源码

江枫思渺然 提交于 2020-03-09 21:30:29
问题 - 主流程上的区别 - 缓冲区的设计 - 内存管理的逻辑 - 音视频播放方式 - 音视频同步 - seek的问题:缓冲区flush、播放时间显示、k帧间距大时定位不准问题… - stop时怎么释放资源,是否切换到副线程? - 网络不好时的处理,如获取frame速度慢于消耗速度时,如果不暂停,会一致卡顿,是否会主动暂停? - VTB的解码和ffmpeg的解码怎么统一的?架构上怎么设计的? 数据流向 主流程更详细看ijkPlayer主流程分析 音频 - av_read_frame - packet_queue_put - audio_thread+decoder_decode_frame+packet_queue_get_or_buffering - frame_queue_peek_writable+frame_queue_push - audio_decode_frame+frame_queue_peek_readable,数据到is->audio_buf sdl_audio_callback,数据导入到参数stream里。这个函数是上层的音频播放库的buffer填充函数,如iOS里使用audioQueue,回调函数IJKSDLAudioQueueOuptutCallback调用到这里,然后把数据传入到audioQueue. 视频 读取packet部分一样 video