网友对音频视频的理解
来源:互联网 发布:360无法修复网络连接 编辑:程序博客网 时间:2024/05/01 16:31
作者:姚冬
链接:http://www.zhihu.com/question/31156766/answer/54645514
来源:知乎
著作权归作者所有,转载请联系作者获得授权。
链接:http://www.zhihu.com/question/31156766/answer/54645514
来源:知乎
著作权归作者所有,转载请联系作者获得授权。
我们先假设某人在音视频方面是零基础,也没学过任何数字信号处理相关知识,数学基础基本是高中水准,但是熟悉 C/C++ 开发,至少熟悉某一个平台下的编译调试IDE。
着重研究两个开源项目 ffmpeg 和 webRTC,主要看ffmpeg的视频部分和webRTC的音频部分。
首先,从视频解码入手,这个最简单,调用 ffmpeg视频解码的基本代码只有100行左右,具体可以参考 @雷霄骅 的blog,有详细示例和说明。视频解码只要搞懂h.264就好了,80%+场景都是这个编码格式了,了解基本的 H.264 的 sps pps NAL等文件格式概念,了解YUV图像格式原理,了解YUV到RGB的转换,这样就可以做图像渲染,可以实现一个简单的视频播放器。
然后,学习视频编码,建议从x264入手,一个简单的调用x264的编码代码也不到100行。编码比解码复杂在于,解码是不需要配置什么参数的,而编码有大量参数需要配置,初期只要了解几个基本概念就好了,比如 帧速率, 常用流控方式 ABR CRF,GOP,I/B/P Frame分别是什么意思。
音频部分的编解码和视频差不多,初期只需要了解两种编码器EAAC+和Silk,了解 声道,采样率等概念,了解 Wave文件格式。可以做一个简单音频播放器。
音频复杂的地方不是编解码,而是音效,看下 webRTC里的 Audio Processing module,理解以下几个概念,去噪NS,消回声AEC,静音检测VAD,自动增益控制AGC,webRTC内置的这几个算法虽然不是最好的,但是可以解决90%+的问题了,值得学习下。
学到了这里需要思考个问题了,自己是想走工程路线还是算法路线,如果是算法路线,那么必须要去学数学了,数字信号处理背后是大量的数学基础理论。如果是工程路线,那么要去学习跨平台开发,学习多个平台下音视频的采集,播放和处理,学习多平台下汇编语言优化。
音视频是个水很深的领域,学一辈子都学不完,但这个领域有个好处,就是知识更新速度比较慢,学的东西不容易被淘汰,经验的积累非常重要
着重研究两个开源项目 ffmpeg 和 webRTC,主要看ffmpeg的视频部分和webRTC的音频部分。
首先,从视频解码入手,这个最简单,调用 ffmpeg视频解码的基本代码只有100行左右,具体可以参考 @雷霄骅 的blog,有详细示例和说明。视频解码只要搞懂h.264就好了,80%+场景都是这个编码格式了,了解基本的 H.264 的 sps pps NAL等文件格式概念,了解YUV图像格式原理,了解YUV到RGB的转换,这样就可以做图像渲染,可以实现一个简单的视频播放器。
然后,学习视频编码,建议从x264入手,一个简单的调用x264的编码代码也不到100行。编码比解码复杂在于,解码是不需要配置什么参数的,而编码有大量参数需要配置,初期只要了解几个基本概念就好了,比如 帧速率, 常用流控方式 ABR CRF,GOP,I/B/P Frame分别是什么意思。
音频部分的编解码和视频差不多,初期只需要了解两种编码器EAAC+和Silk,了解 声道,采样率等概念,了解 Wave文件格式。可以做一个简单音频播放器。
音频复杂的地方不是编解码,而是音效,看下 webRTC里的 Audio Processing module,理解以下几个概念,去噪NS,消回声AEC,静音检测VAD,自动增益控制AGC,webRTC内置的这几个算法虽然不是最好的,但是可以解决90%+的问题了,值得学习下。
学到了这里需要思考个问题了,自己是想走工程路线还是算法路线,如果是算法路线,那么必须要去学数学了,数字信号处理背后是大量的数学基础理论。如果是工程路线,那么要去学习跨平台开发,学习多个平台下音视频的采集,播放和处理,学习多平台下汇编语言优化。
音视频是个水很深的领域,学一辈子都学不完,但这个领域有个好处,就是知识更新速度比较慢,学的东西不容易被淘汰,经验的积累非常重要
0 0
- 网友对音频视频的理解
- 安卓对音频视频、gif的处理
- 对部分网友的回复
- 网友对SL的评论
- 网友对spring.net的理解:(为什么要用晦涩难懂的spring?)
- 郭品超 网友对“郭品超”的评论:
- 网友对闭包的总结
- JavaScript -- 音频视频的播放
- 音频视频
- H5 - 音频视频标签的使用
- 关于C++的学习,对一位网友的回复
- CSDN论坛网友写的一篇IOCP文章 -- 理解IOCP
- 对于架构师的一点理解(来自网友讨论)
- CSDN论坛网友写的一篇IOCP文章 -- 理解IOCP
- 如何理解闭包(摘录网友的文章)
- Linux_Hi3518E开发_网友对开发流程的理解
- 网友对各产家“一卡通”系统产品的评论
- 对网友“宝宝”所提问题的回复
- UICollectionView 添加段头
- PLSQL客户端下拉空白
- Java对象转Json字符串
- linux下学习音视频流处理的一个项目Camkit
- c++ 指针
- 网友对音频视频的理解
- gen_server源码杂记
- mysql 连接闪断自动重连的方法
- H5-register
- 常用的webservice客户端和spring集成的方法
- HDU 4911Inversion
- h5-aes
- 基于MATLAB实现的云模型计算隶属度
- 素数求和问题