小白学习多媒体系列。
之前有做过几年的音视频同步策略处理,也做过点对点投屏,对投屏延时优化有点小心得。知道音视频大的阶段采集、编码、封装、解封装、解码、同步、输出,但对各中细节、原理都了解不深,只能算是小白。
之前一直在找视频编解码的资料,总是觉得看的太晦涩难懂,后面在极客时间上发现了一个不错的课程,对视频编解码原理部分感兴趣的小伙伴可以看看,链接如下,起对视频编解码原理讲的很清晰,看不懂的话多看几遍,再找开源库结合代码来回顾原理:攻克视频技术_声网_视频技术_视频_YUV_RGB_编码原理_编码压缩_SVC_花屏_卡顿_音画同步_MP4_FLV-极客时间极客时间推出的攻克视频技术是帮助互联网人学习声网、视频技术、视频、YUV、RGB、编码原理、编码压缩、SVC、花屏、卡顿、音画同步、MP4、FLV相关知识的在线课程,极客时间是面向IT领域的知识服务产品,致力于帮助用户轻松学习,高效学习。https://time.geekbang.org/column/intro/100098901?tab=catalog
android 多媒体部分都在framework中,可看的东西挺多,但是没有硬件设备不是很好跟,所以我选FFmpeg来搭个简单播放器,进行跟踪媒体整体流程。
先整下编译环境,直接在window下编译我整了小半天放弃了,所以我在window 下搭建了Ubuntu 虚拟机,ubuntu版本是20,然后下载NDK,安装make(sudo apt install make)下载ffmepg 源码:
ffmpeg: FFmpeg 的中国 Git 镜像https://gitee.com/mirrors/ffmpeg?_from=gitee_search下载好源码后,需要更改下目录权限,不然会提示configure 配置问题。编译脚本主要配置的NDK编译路径及FFmpeg编译选项配置,不清楚的配置项可以通过 ./configure --help 查看自己所需的配置项。我将我编译的脚本、FFmpeg上传到了git 仓库,有需要的小伙伴可以进行下载,git 仓库地址:https://github.com/iot-multiscreen/ffmpeg
https://github.com/iot-multiscreen/ffmpeg编译so类型(armv7-a、armv8-a、x86、x86_64)在build_all.sh配置,ndk路径、ffmpeg配置项在build_config.sh中配置。执行./build_all.sh ,编译后的so会拷贝到当前ffmpeg/android 目录下