文章目录
- 本文介绍学习音视频通信、及ffmpeg相关的知识点
- Mac上手动编译ffmpeg
- 示例代码
- 视频
- 电子书
- 文档
- 网站
- 博客
- 工具
- 相关标准化组织
- 相关专业以及参考资料
- 直播测试流
- 常见格式
本文介绍学习音视频通信、及ffmpeg相关的知识点
Mac上手动编译ffmpeg
ffmpeg使用了make来维护代码,所以不能使用cmake gui这类可视化的工具来编译。
在Mac上编译的话比较简单,可以使用brew帮忙下载依赖的第三方工具。同unix系统及其派生系统一样,都是使用下面的指令进行编译和安装的:
./configure
make
make install
并且还可以指定安装位置。具体请参考ffmpeg官网的一篇文章 Generic Compilation Guide
在各个平台上碰到问题都可以参考网页: FFmpeg Compilation Guide
在我的电脑上,使用brew安装了ffmpeg之后,再编译从源码ffmpeg会提示需要安装: yasm和pkg-config,需要使用homebrew来安装。
如果想要研究ffmpeg最好是可以自己编译一下,这样有调试信息的库方便调试。在Mac上编译ffmpeg的时候,可以设置一下编译选项中的prefix,比如我设置的是:
./configure --prefix=/Users/hj/ffmpeg/build --enable-shared
这样在make install的时候就会将生成的文件拷贝进指定的prefix目录的相应子目录下:
➜ build git:(release/4.1) ✗ l
total 0
drwxr-xr-x 6 hj staff 192B Jul 4 16:47 .
drwxr-xr-x 49 hj staff 1.5K Jul 4 16:47 ..
drwxr-xr-x 5 hj staff 160B Jul 4 16:47 bin
drwxr-xr-x 9 hj staff 288B Jul 4 16:47 include
drwxr-xr-x 10 hj staff 320B Jul 4 16:47 lib
drwxr-xr-x 4 hj staff 128B Jul 4 16:47 share
在我的电脑上编译一次ffmpeg的时间大概是12分钟。
示例代码
- 官方示例代码
- 雷霄骅写的例子 Lei Xiaohua’s learning resource about video/audio technics
- 还有一个方法是先熟悉ffmpeg的命令行,然后根据命令参数搜索源码来学习
视频
- 王纲的视频教程: 跟我学ffmpeg 这个系列在B站和爱奇艺上都有
- 基于FFmpeg+SDL的视频播放器的制作——雷霄骅
电子书
目前来说,找到的一些ffmpeg的电子书基本都是重点介绍命令行功能。毕竟ffmpeg的初始功能就是这个。
- 新一代高效视频编码H.265HEVC:原理、标准与实现
- Iain E G Richardon写的《h.264和mpeg-4视频压缩》 百度网盘链接 提取码: b6iq
- 我收集的一个音视频书籍的集合:百度网盘链接 提取码:ntn6,里面有一个ffmpepg的电子书: 《ffmpeg基础库编程开发》20140307
- Jpeg2000图像压缩基础、标准和实践
- FFmpeg从入门到精通 作者:刘歧 赵文杰,该书在豆瓣上评价不高,但是入门的书籍较少,较旧,该书是2018年的较新,能入门就好了。另,豆瓣阅读上有活动¥9.99,京东上有活动的时候是¥15.
文档
- 即时通讯网中的一个系列文章 即时通讯音视频开发 1 - 18。 其实还有好多其他的主题,想要入门通信领域的话,可以关注这个网站的其他主题。其中的第6篇中介绍了音频编解码应该看的书,极具参考价值。第14篇介绍了实时音视频通信涉及到的传输协议,可以系统地了解一二。
- H.265(HEVC)深度解析
- H264标准(中文)
- 研究音频编解码要看什么书
- 卢俊,七牛直播 SDK 技术负责人在知乎专栏写的【音视频开发】开发小白如何成为音视频专家? 这个回答中同时还描述了职业瓶颈的一些看法,很有参考价值。
- 如果研究生阶段方向是音视频编解码,本科期间应该打好哪些基础? - 张晖的回答 - 知乎
- 如果研究生阶段方向是音视频编解码,本科期间应该打好哪些基础? - 武晓阳的回答 - 知乎
- 如果研究生阶段方向是音视频编解码,本科期间应该打好哪些基础? - 殷汶杰的回答 - 知乎。这个回答结合来目前的职位要求,比较有实际价值。
网站
- ffmpeg官网的 wiki 这是一个必须重视的网站
- ffmpeg文档中提到的一个网站 MultimediaWiki 它致力于打造一个收集各种与多媒体有关的信息获取和编辑的地方
- 即时通信网 里面有好多大牛
- LiveVideoStack的的一些专题的 演讲回顾 我们沪江的唐小浙是LiveVideoStack的联席主席之一,大招在里面是讲师。
- xiph 一个制定免费开源音视频编码实现的非盈利机构,制定了Theora 视频编码、Vorbis 音频编码、Ogg 容器格式。还提供了一些测试资源 Xiph.org Test Media
- SDL 一个多媒体库,封装了计算机外设接口,可视化接口
博客
- 雷霄骅(leixiaohua1020)的专栏
- 殷汶杰CSDN博客 Workshop of Wenjie.Yin 博主有几个系列的文章都不错,同时在CSDN上还有一个视频课程讲解H.264的
- 斯坦福教授Julius Orion Smith III教授主页
- 刘华平的博客,读了博主的部分文章,发现音频编码居然比视频编码复杂,比较惊讶。
- 腾讯云上的专栏 流媒体
- 博客园上的 灰色飘零
工具
视频流分析工具,其中有的是商业的,有的是免费的。
- Elecard Stream Analyzer (commercial)
- CodecVisa (commercial)
- Intel Video Pro Analyzer (commercial)
- AOMAnalyzer (free, AV1/VP9 video)
上面4个工具摘自 FFmpeg Encoding and Editing Course 第53页
- mp4info 一个可视化的查看mp4文件信息的工具
相关标准化组织
- ITU:International Telecommunications Union
- VCEG: Video Coding Experts Group is a working group of the ITU Telecommunication Standardization Sector (ITU-T) concerned with video coding standards.
- VQEG Video Quality Experts Group (VQEG) 有一个免费视频资源,可用来测试。
- ISO: International Standards Organization
- MPEG: Motion Picture Experts Group
- 3GPP: 3rd Generation Partnership Project (3GPP). The Mobile Broadband Standard
相关专业以及参考资料
与音视频编解码相关的专业有通信专业,电子信息专业……
与之相关的课程有:信号与系统,数字信号处理,信息论。弱相关的有数电模电、通信原理……
参考殷汶杰在知乎上的回答,相关的职位有:
- 编解码算法研究(要求博士及以上学位),职位较少,偏研究类型
- 算法工程实现 属于工程领域。就是要熟悉ffmpeg,x264 x265这些开源项目,要求了解主流图像视频编解码&压缩原理
- 音视频应用开发,属于工程领域。就是在不同的平台上实现业务逻辑,要求是熟悉平台(PC、移动、及不同的操作系统)相关技术、概念、框架。同一个音视频通信模型的概念在不同平台上有不一样的实现,比如DirectX家族、OpenGL、GDI,speexdsp、libfaac、opus、speex、ffmpeg,还有计算机网络相关知识,TCP/IP相关协议RTMP、RSTP、HLS、HDL等……在采集、传输、处理、渲染4个环节都有很多具体的平台实现。参考【音视频开发】开发小白如何成为音视频专家?
直播测试流
M3U8 流
- CCTV 1 直播流 :http://ivi.bupt.edu.cn/hls/cctv1hd.m3u8
- CCTV 6 直播流 :http://ivi.bupt.edu.cn/hls/cctv6hd.m3u8
- CCTV 8 直播流 :http://ivi.bupt.edu.cn/hls/cctv8hd.m3u8
常见格式
- 来自 灰色飘零 的博客分类 多媒体文件格式 包含了mp4, flv, m3u8, ts文件格式,以及分析工具