|
0 v; m0 _* h1 g; n4 g
! r; t! U% E) t4 K- L3 M/ lFFmpeg安卓流媒体播放器开发实战-基于NDK C++和 FFmpeg Android
1 t4 D# T, N+ G+ A, K( W├──1 课程介绍及音视频基础知识
- d$ e/ _4 [0 i| ├──1 课程介绍 .mp4 52.05M) P7 `" g& m- p7 M# S& x' b: A
| ├──2 音视频基础知识Mpeg4封装格式音视频编码格式讲解 .mp4 18.21M
) e- g7 [& ]3 Y( ]0 v& G; S| ├──3 音视频解封装和解码原理分析 .mp4 26.14M
2 I- W% K( ^2 ]. o6 j. l9 ?| ├──4 图形像素格式RGB和YUV格式分析 .mp4 21.94M' Q* `6 B5 G, U# [0 t! Y
| ├──5 PCM音频采样率 通道 planar等格式参数分析 .mp4 13.89M8 r$ x5 x: e: |8 e' h
| └──6 MP4标准和h264格式的NAL的GOP分析 .mp4 23.64M
' U4 v y) k/ z8 C( N- L├──10 视频播放器项目实战-音视频解码解封装 ' d( Z0 h2 q4 p
| ├──1 项目创建权限ABI和CMake相关库和头文件配置 .mp4 18.08M, I* U0 h3 B4 l M( j
| ├──10 添加IDemux的GetVPara获取视频XParamter .mp4 10.71M
9 u/ y0 H. k' {; ~- ^| ├──11 封装FFDecode解码的Send和Recv接口 .mp4 24.75M) U) w _( I _) w( l
| ├──12 读取媒体帧数据获取类型信息(音频 视频)存入XData .mp4 15.05M
5 z Y/ E9 y" t$ U| ├──13 完成音视频解码和并重构解码器加入观察者模式 .mp4 20.57M1 n% m6 ]* ~7 D
| ├──14 加入生产者消费者模式控制音视频缓冲 .mp4 33.18M" b2 p; Q$ Q' B+ U9 U( R, u
| ├──2 创建安卓流媒体播放器XPlay项目并配置添加了解封装模块代码 .mp4 25.87M
# a4 @* J2 \: t3 W2 h: X| ├──3 FFDemux的Open实现打开媒体文件 .mp4 27.96M& w% J2 G$ e0 N
| ├──4 FFdemux的Read读取帧数据接口编写 .mp4 19.53M
$ j6 ]" b/ X( z* d" K| ├──5 完成XThread线程类IDemux继承后在线程中读取帧数据 .mp4 23.92M
/ X7 N+ Z% v* ]( a n4 @, H1 V9 y| ├──6 添加了XSleep完成XThread线程函数的停止和超时判断 .mp4 16.88M
7 t' a' ` E, y% ?| ├──7 观察者Observer模式的代码实现并使用IDemux测试 .mp4 24.30M
+ ]9 {+ n& i. o3 {4 [. O1 d- s| ├──8 IDecode和FFDecode模块代码创建 .mp4 17.15M4 U* v8 W5 U' y" v0 ~' c, D
| └──9 FFDecode的Open打开解码器接口编写Observer .mp4 17.81M
3 l; y Z; r7 {) g: B, L7 i├──11 视频播放器项目实战-音视频播放
; V: ^, a6 z6 D| ├──1 IVideoView显示模块架构讲解和代码创建 .mp4 40.02M
4 f2 b/ n# m5 q* ]; @2 f' H| ├──10 SLAudioPlay音频播放完成并测试对MP4文件音视频播 .mp4 24.13M
1 g' F' u* _6 z, y| ├──11 完成硬解码并完成NV21和NV12格式的shader显示编写 .mp4 90.35M) Y E+ ~, E, P, J) ~
| ├──12 解决android8.0下opengles不能播放的问题 .mp4 12.41M- c7 J' V0 a; A
| ├──2 IEGL类初始化封装java部分添加XPlay窗口类 .mp4 49.96M
9 s" D9 N3 g8 Q, W& {| ├──3 XShader基于yuv420p的初始化Init代码完成并测 .mp4 37.07M9 [) V* ` q" L G& _3 G
| ├──4 XTexture初始化并完成GLVideoView的调用 .mp4 30.44M
! m$ h: ?2 a7 y f8 ~$ U% D' h* O| ├──5 GLVideoView完成使用shader显示视频 .mp4 68.41M# c/ F0 D5 D8 F3 x
| ├──6 完成音频重采样IResample模块初始化代码 .mp4 23.69M
+ c7 w! u5 g! L* s' C| ├──7 完成音频重采样IResample模块的处理功能 .mp4 55.16M
\2 o9 s, f- D, U; b| ├──8 完成了IAudioPlay和SLAudioPlay的音频播放 .mp4 63.88M
# \6 \8 ]6 q& V# e, l f4 Q: E. R| └──9 IAudioPlay的Update将音频压入缓冲队列并测试 .mp4 24.93M1 u% r9 I2 D' \9 D
├──12 视频播放器项目实战-完成架构解决同步和seek ) u; \ Q5 M5 w( Q0 Y
| ├──1 完成facade模式的IPlayer并实现Open接口 .mp4 63.39M! }" x6 h/ B+ | n# D
| ├──10 XShader线程安全处理和Close清理函数编写 .mp4 22.69M
: L2 [# B9 w* [) u& h| ├──11 XTexture和GLVideoView的线程安全和清理函数 .mp4 20.64M; C, W5 {# i @6 R
| ├──12 IPlayer完成Close清理函数编写并完成多次打开视频 .mp4 42.00M9 d2 b" j3 J/ ~8 t" N3 f
| ├──13 添加打开视频按钮和进度滑动条并响应打开事件 .mp4 22.79M
& V7 b6 e, K; c- Z| ├──14 添加视频打开路径和香港卫视rtmp打开路径的界面 .mp4 14.65M
. z+ N' K: n* W) C* o: r| ├──15 完成通过界面多次打开视频文件 修正了多次打开显示出现的bug .mp4 34.00M# b8 s' }: w+ S& c. s
| ├──16 在835cpu的手机中测试并修正了音频播放Close的bug .mp4 27.18M) G v) A0 D3 |
| ├──17 完成了播放进度的显示并修正了硬解码参数传递错误 .mp4 40.71M
% i" Z, S! n/ C' L) A' {# W6 p| ├──18 滑动条拖动Seek视频开发策略详细分析 .mp4 12.94M
- @3 m# j. y5 e| ├──19 完成了IDemux的Seek和界面SeekBar的事件响应 .mp4 38.32M& L0 x8 C. q9 y2 ]7 t' P% J
| ├──2 完成Iplayer开始播放和窗口初始化接口 .mp4 21.66M& i! B! b* f" E( I" ?$ J' P) [
| ├──20 添加了视频播放的暂停和恢复 .mp4 41.10M
; _2 l: w) Q4 M8 Q9 I| ├──21 修改了视频播放到结尾再次打开会锁死的bug .mp4 23.66M
6 w, t9 u) r. @0 ]7 d5 L6 z1 ^| ├──22 通过手动解码帧数据完成了IPlayer控制视频播放进度的功能 .mp4 40.77M( n0 Q" ~# {/ R7 ?+ ?
| ├──3 完成Builder模式的IPlayerBuilder构建IP .mp4 66.77M! e4 Z0 t+ Y5 s( h* a6 \8 }
| ├──4 完成IPlayerProxy代理模式并进行测试架构搭建完成 .mp4 30.76M
8 q8 g% _$ _# `' {& R9 q2 M: i| ├──5 统一换算pts为毫秒使用IPlayer完成音视频同步播放 .mp4 60.93M, F5 ]1 V% F+ ?' s" S
| ├──6 IDemux&FFdemux线程安全和Close清理函数编写 .mp4 17.59M4 Y' o" N6 K0 B! i2 S
| ├──7 FFdecode和FFResample线程安全处理Close .mp4 29.05M. P" R4 o2 a9 Z H+ d
| ├──8 SLAudioPlay的线程安全处理和Close清理函数编写 .mp4 30.07M& ?8 S* g7 ^% E0 t* o+ S
| └──9 XEGL的线程安全处理和Close清理函数编写 .mp4 17.99M4 K/ B3 }/ E5 h3 a* r2 H$ v
├──2 AndroidStudio开发工具和开发环境准备 " O: \/ f. n ?0 ?8 s. u
| ├──1 开发所用到的工具和sdk介绍 .mp4 10.05M9 u: X# r# R, a" O6 ?2 V. s( J' J
| ├──2 AndroidStudio开发工具安装使用讲解 .mp4 24.92M9 }& L. @' H' Q: h# J6 v
| ├──3 Android SDK目录内容分析 .mp4 11.02M
2 k9 x B& q' v# x1 P| ├──4 AndroidNDK工具目录功能分析 .mp4 9.11M9 r9 [0 a# ^! v' I
| └──5 安卓模拟器安装和第一个c++安卓程序编译运行 .mp4 48.49M n0 Z! }; T% L/ U* c
├──3 Android NDK交叉编译FFMpeg并添加测试AS项目 2 o, t7 [0 u/ `9 z- v/ K9 p
| ├──1 安卓NDK相关概念ABI NEON JNI和CMAKE分析 .mp4 18.74M
( t- H- Z: I& W( d3 O' {% P| ├──10 JNI和c传递文件路径并设置app的读写权限 .mp4 34.82M% f* H: K5 A0 z7 N- \
| ├──2 NDK中CPU的应用二进制界面ABI .mp4 14.11M
7 F. a5 l& A2 U7 `| ├──3 ubuntu虚拟机及常用工具安装并配置samba共享目录 .mp4 37.44M5 y: v! k I- h/ ~3 p: b
| ├──4 ffmpeg源码下载在android下的编译参数分析讲解 .mp4 20.62M# M( z1 Z- E/ ?: O
| ├──5 在ubuntu下交叉编译ffmpeg的android版本库 .mp4 47.01M H5 ]' S7 u+ E- s6 I) V5 j
| ├──6 ffmpeg通用编译bash脚本编写 硬解码 neon 多线 .mp4 55.33M7 h; M3 {3 T% D* h' ^5 {$ C1 j
| ├──7 AndroidStudio项目配置权限 jni库路径 ABI .mp4 12.66M
9 {3 Z% H3 D" \| ├──8 cmake配置(导入库 头文件 链接)分析 .mp4 17.59M
. h" e. H7 f' a& q7 ?& b% S| └──9 创建支持ffmpeg的AndroidStudio项目并调用 .mp4 44.82M
0 D' ~1 r6 ]5 M- E: n1 ?├──4 FFmpeg解封装(C++ NDK) 7 b& B& _1 N) d6 O% G
| ├──1 ffmpeg SDK软硬解码流程说明 .mp4 7.20M
$ b9 b5 w; b8 v6 j/ M6 k$ }| ├──10 AVPacket结构解析空间申请 初始化 复制 引用计数函数 .mp4 14.90M( Z3 x: M! J w7 A& N0 n8 E5 Q
| ├──11 av_seek_frame改变播放进度函数详解 .mp4 12.31M; H6 H) J6 U! s* ] C ?
| ├──12 av_read_frame和av_seek_frame代码 .mp4 20.68M
9 p) b/ J4 _1 ^& D0 g, I8 z| ├──2 ffmpeg音视频解封装用到的函数和结构体详解 .mp4 13.96M
4 u4 E% s3 F; P; X| ├──3 avformat_open_input函数详解并示例打开mp .mp4 37.00M
1 A% t3 Z# Z$ s7 T& ^. Q| ├──4 AVFormatContext结构分析和清理代码示例 .mp4 13.87M
9 s# W3 t) S, m- P0 b| ├──5 avformat_find_stream_info探测 .mp4 18.08M
: ^/ S' |, O$ V0 l0 t| ├──6 AVStream和AVCodecParameters分析 .mp4 22.42M
( K8 \0 D6 V y Z% h4 z| ├──7 通过遍历获取AVStream音视频流信息并打印参数 .mp4 31.77M
& w+ e5 h6 l4 S) A0 I9 u+ n& M' M# O| ├──8 通过av_find_best_stream获取音视频流索引 .mp4 7.86M. u# u/ \$ d0 J% v4 h
| └──9 av_read_frame读取帧数据函数分析和产生的空间问题 .mp4 9.46M6 k2 }/ B6 {; X5 e4 K$ x) h
├──5 FFmpeg软硬解和多线程解码(C++ NDK)
5 `9 ^5 @+ l! p( U: L| ├──1 AVCodecContext解码上下文初始化讲解和视频解码器 .mp4 34.00M# Y- B7 B8 q$ Y+ g0 }; _6 x2 k$ T
| ├──2 打开音频解码器上下文 .mp4 11.79M( N! b, u3 @. k& v# ]5 A, o! r
| ├──3 AVFrame格式解析和空间处理函数 .mp4 13.84M C* u1 e9 F; n7 ?: P# j
| ├──4 avcodec_send_packet和receive .mp4 10.93M
: ]; g+ |: k2 D Q ] [. `| ├──5 音视频多线程解码代码演示 .mp4 17.96M
3 c7 }# k/ p% f* V; ~| ├──6 音视频解码性能测试neon单线程和八线程解码测试代码 .mp4 27.32M& m! r& H/ l, H3 M6 i/ L: ~- ]
| └──7 ffmpeg调用MediaCodec实现硬解码代码演示 .mp4 9.26M+ T2 I. T# C% p
├──6 FFMpeg音频重采样和视频格式转换和显示 2 d# b- K% Q& l
| ├──1 sws_getContext和sws_scale像素格式 .mp4 18.95M* H o- v, {# L% u9 B! t
| ├──2 sws_scale像素格式转换代码演示 .mp4 33.30M
5 c5 S! y/ }( G9 L; d/ q$ w| ├──3 音频重采样SwrContext格式和swr_convert .mp4 7.85M; \" Y I, H$ S$ }5 `: s
| ├──4 swr_init音频重采样上下文初始化和swr_conver .mp4 33.73M
8 R5 h d( X4 _- @| ├──5 分析GLSurfaceView和NDK接口直接显示RGB视频 .mp4 14.97M
6 C# v! M" q& B6 V' ]) g9 g| ├──6 使用NDK通过GLSurfaceView双缓冲空间复制完成视 .mp4 54.51M
9 T; @, l& ~& E| └──7 安卓视频播放窗口去掉标题栏 全屏 横屏 .mp4 21.23M1 a- _4 f7 Y4 Y: G
├──7 OpenSLES音频播放
& c0 k& a6 e3 W! c2 o' j- _| ├──1 OpenSLES播放音频步骤和接口讲解 .mp4 30.37M7 g' K& N' Q% Y! i$ e3 B$ A. v
| ├──2 创建OpenSLES音频播放测试项目并完成引擎初始化 .mp4 23.14M
2 e: I! z$ |5 T: Y9 b* I5 v9 w* ]| ├──3 完成OpenSLES混音器CreateOutputMix初始 .mp4 11.20M
$ S* [; O% `' N- l. \' E+ U| ├──4 配置OpenSL的PCM音频输入格式 .mp4 8.39M
7 D& C m+ T9 x- n( Q| └──5 读取pcm音频文件并使用OpenSL播放 .mp4 46.00M
/ E( P0 w$ J4 u7 l├──8 EGL和OpenGLES Shader显示YUV视频 1 f5 _& c" D2 x- x: J5 |
| ├──1 egl和opengl_shader_glsl讲解 .mp4 19.71M' a9 @7 M9 I0 @/ z
| ├──10 OpenglES纹理数据修改和显示 .mp4 18.25M
, n7 e; g- W5 U( I| ├──11 通过OpenglES纹理修改完成yuv文件的播放显示 .mp4 11.14M7 F+ n8 c S; @7 b0 C0 g
| ├──2 testopengles_shader项目配置和创建 .mp4 21.83M# ?' @1 z7 X: r5 q4 I5 ^/ v
| ├──3 NDKC++完成EGL display surface .mp4 36.51M
. G% X* k, J% E7 x+ a9 s( K| ├──4 Opengl ES Shader顶点坐标和材质坐标分析 .mp4 15.69M% W! S5 T+ P; T/ m2 z1 U e, N
| ├──5 顶点着色器代码glsl代码编写 .mp4 12.33M
# X- o/ ~/ _7 k2 K0 ?5 E/ l* I| ├──6 yuv420p片元着色器glsl编写 .mp4 24.34M, Z# U8 G3 ]9 m- k1 m
| ├──7 shader初始化完成并编译顶点和片元着色器代码 .mp4 21.85M
! U; q9 L) ?4 T9 ^6 m| ├──8 program渲染程序初始化给shader传递顶点和材质顶点 .mp4 30.67M
& ]8 ` ?' K/ H| └──9 opengl的yuv纹理的创建和初始化 .mp4 32.25M2 D& k- u$ p. w! P6 H
├──9 视频播放器项目实战-需求和设计模式 ( y$ m/ L5 ?# G. g: S+ ]- `
| ├──1 视频播放器项目设计说明和UML类图知识讲解 .mp4 18.98M
4 b; d4 L8 [5 x| ├──2 模块分解和用到的7个设计模式讲解 .mp4 19.33M2 O0 v0 p+ l& @7 h
| ├──3 适配器 建造者 代理模式讲解 .mp4 23.72M
' S1 X( E/ e0 s' N' b4 A2 v| ├──4 门面模式 生产者消费者模式 .mp4 10.98M4 M% `) x( _$ `) r* W z# Y
| ├──5 Observer观察者模式讲解和应用 .mp4 7.66M" [' ^1 ~9 Y, d4 Z
| └──6 解码显示帧数据处理顺序图和开发计划讲解 .mp4 11.65M ?6 g1 h" R7 C8 C- h ?2 C
└──FFmpeg安卓流媒体播放器开发实战视频课程-基于NDK、C 和FFmpegAndroid .zip 3.27G
' F* b% L. \7 W1 ?! b$ Q" y
6 M- C6 M; T* h5 d4 ] _$ ^4 O2 v6 Q7 c. a$ r
, E" O1 v) X) T) z- y
资源下载地址和密码(百度云盘): [/hide] 百度网盘信息回帖可见
6 H" V) k: }/ \8 r, {1 C) t/ w8 C5 m
! P# ?! V3 s+ M; O
( w5 j6 Y( r2 m" q' K本资源由Java自学网收集整理【www.javazx.com】 |
|