音视频技术

简介: 音视频技术内容介绍入门

内容介绍

基础知识

  • Linux 基础知识
  • C基础回顾
  • Swift 语言
  • 各平台 ffmpeg 编译

音频

  • 音频基础知识
  • 音频编码原理
  • 音频数据的采集
  • AAC/OPUS 编码

视频

  • RGB/YUV
  • H264 编码原理
  • 视频数据采集
  • H264/H265编码
  • H264参数调优

流媒体服务器

  • nginx
  • SRS
  • CDN 网络
  • RTMP 传输

收获

  • 掌握音视频基础知识
  • H264编码原理及参数调优
  • 实战音视频采集
  • 实战音视频编码
  • 构建大并发流媒体服务器
  • RTMP 传输

亮点

贴近生活,通俗易懂

  • 声音是如何产生的?
  • 人的听觉范围
  • 显示器显示图像

深入浅出,逐步迭代

  • 打开音频设备
  • 读取音视频数据
  • 音频重采样
  • 音频编码

理论与实战结合

音频基础 => ffmpeg 命令 => ffmpeg API

    1. 音频三要素:采样率、采样大小、通道数
    1. ffplay -ar 44100 -ac 2 -f s16le xxx.pcm
    1. ffmpeg API 实现音频数据的采集

音视频的广泛应用

  • 直播类(互动直播系统): 音视频会议、教育直播、娱乐/游戏直播等,本次以娱乐直播系统作为背景进行实战。
  • 短视频(音视频特效、美颜瘦脸): 抖音、快手、小咖秀等
  • 音视频编辑(剪辑)
  • 网络视频:优酷、腾讯视频、爱奇艺等
  • 音视频通话:微信、QQ、Skype等
  • 视频监控
  • 人工智能:人脸识别、智能音响,更关注算法

最简单的直播系统常用工具

  • ffmpeg
ffmpeg -i video.mp4 -f flv rtmp://localhost/live/test
  • ffplay
ffplay rtmp://localhost/live/test

编译 ffmpeg 与 ffplay

  • Linux 基础
  • Linux/Mac 下编译 ffmpeg 和 ffplay
  • Windows 下编译 ffmpeg 和 ffplay
  • 基本命令
    lscdpwdmkdircprmsudopkg-config
  • 安装工具

apt/brew/yum

brew search [package name]
brew install [package name]
  • 环境变量

PATH、PKG_CONFIG_PATH

  • 环境变量的变更
// 查看环境变量
env

~/profile

  • 编辑器 vim

:w 保存
:q 退出
:wq 保存并退出
i 编辑
h 光标左移
j
k

l 光标右移

播放器架构

image.png

渲染流程

image.png

FFMPEG 从何而来

  • 2000年,由法布里斯·贝拉(FabriceBellard)创建。
  • 2004年,迈克尔(Michael Niedermayer)接管。
  • 2011年,Libav 从 FFMPEG 分离。

FFmpeg 命令分类

处理流程

image.png

1.基本信息查询命令

image.png

  • 显示版本 -version
ffmpeg -version
  • 显示可用的设备 -devices
  • 显示所有编解码器 -codecs
  • 显示可用的解码器 -decoders
  • 显示所有的编码器 -encoders
  • 显示可用的demuxers -demuxers
  • 显示可用的muxers -muxers
  • 显示比特流filter -bsfs
  • 显示可用的格式 -formats
  • 显示可用的协议 -protocols
  • 显示可用的过滤器 -filters
  • 显示可用的像素格式 -pix_fmts
  • 显示也用的采样格式 -sample_fmts
  • 显示channel名称 -layouts
  • 显示识别的颜色名称 -colors

2.录制命令

  • 录屏命令

录制:

// mac
ffmpeg -f avfoundation -i 1 -r 30 out.yuv
// windows
ffmpeg -f gdigrab -i desktop  -r 60 out.yuv
// 播放录制好的视频
ffplay
  • -f:指定使用 avfoundation 采集数据
  • -i:指定从哪儿采集数据,他是一个文件索引号
  • -r:指定帧率
  • out.yuv:输出的原始数据格式

播放:

采集格式

image.png

播放格式

image.png

-s 指采集像素
-pix_fmt 指采集的视频格式
ffplay -s 1920x1080 -pix_fmt bgra out.yuv
查看索引号
// mac
// 1 -> Capture screen 屏幕
ffmpeg -f avfoundation -list_devices true -i ""
录音 & 录制视频

1:0 分号前1指视频采集设备索引,分号后0指音频采集设备索引

ffmpeg -f avfoundation -i :0 out.wav

3.分解/复用命令

image.png

// mac 多媒体格式转换
ffmpeg -i out.mp4 -vcodec copy -acodec copy out.flv
视频中抽离视频画面,不要音频

-an 表示不要音频(audio not or no)

ffmpeg -i longxia.mp4 -an -vcodec copy out.h264
视频中抽离音频,不要视频

-vn 表示不要音频(video not or no)

ffmpeg -i longxia.mp4 -acodec copy -vn out.aac
  • -i : 输入文件
  • -vcodec copy : 视频编码处理方式
  • -acodec copy : 音频编码处理方式

4.处理原始数据命令

//2-6
原始数据就是 ffmpeg 解码后的数据,对于音频就是解码后的 PCM 数据, 对于视频就是 YUV 数据。

5.裁剪与合并命令

6.图片/视频互转命令

7.图片/视频互转命令

8.直播相关命令

9.各种滤镜命令

基础开发

几个词

  • 码率
  • 帧率
  • 压缩率
  • 分辨率
相关文章
|
存储 编解码 算法
音视频之音频知识入门
信息论的观点来看,描述信源的数据是信息和数据冗余之和,即:数据=信息+数据冗余。音频信号在时域和频域上具有相关性,也即存在数据冗余。将音频作为一个信源,音频编码的实质是减少音频中的冗余。自然界中的声音非常复杂,波形极其复杂,通常我们采用的是脉冲代码调制编码,即PCM编码。PCM通过抽样、量化、编码三个步骤将连续变化的模拟信号转换为数字编码。
723 0
|
Web App开发 编解码 算法
发现一个非常好用的RTC(实时音视频通信)方案,做直播和视频通话都很牛
HaaS RTC是阿里云IoT联合视频云开发的IoT设备端上的实时通讯服务,主要面向直播,音视频通话等各种场景。
2231 0
发现一个非常好用的RTC(实时音视频通信)方案,做直播和视频通话都很牛
|
6月前
|
存储 缓存 编解码
C++ 音视频流媒体浅谈
C++ 音视频流媒体浅谈
214 0
C++ 音视频流媒体浅谈
|
6月前
|
存储 编解码 C++
C++ 音视频原理
C++ 音视频原理
|
6月前
|
编解码 算法
网易云音乐音视频算法处理技术
网易云音乐音视频算法处理技术
154 0
|
编解码
[笔记]音视频之常见音视频封装格式组成
[笔记]音视频之常见音视频封装格式组成
|
存储 编解码 Windows
音视频相关基础
视频的播放原理:多张图片在短时间内播放,人眼就会认为是一段连贯的动作,以前的胶片电影,还有小时候玩过的快速翻页就能看动画的小书……
117 0
|
JSON 编解码 监控
天猫精灵音视频质保框架介绍
背景音视频做为天猫精灵的重要业务,可支持多态终端的爱家看护监控、音视频通话等场景,志在打造陪伴类心智,为用户生活增添便捷和美好。近一年业务经历了手机/音箱/云端/服务商等整体换血,在维持40万日活访问的基础上,打造新品卖点,提升性能耗时。音视频业务的质量保证,除了要考虑通用音视频指标,还要结合业务架构实际,从功能/稳定/性能/QoS等方面提升用户体验,了解行业位置。现将质保框架总结如下,希望能抛砖
天猫精灵音视频质保框架介绍
|
缓存
RTC-实时音视频通信技术介绍与应用
疫情打乱了我们的生活节奏,也改变了我们生活工作的方式。自疫情爆发以来,为了减少人员的聚集,避免疫情扩散传播,居家办公、远程办公变成一种办公常态。云视频会议凭借其低成本、灵活性强等优势迅速抢占视频会议市场份额,也深入走进老百姓的日常生活。那么网络云会议背后的技术力量是什么呢? 答案是:RTC-实时音视频技术。
885 0
RTC-实时音视频通信技术介绍与应用
|
Web App开发 编解码 缓存
基于视频流传输 — 在线教育白板技术
在线教育不同于线下教育, 内容需要经过电子白板展现给用户,如何做出优秀的在线教育白板成为研究的重点。本文来自学而思网校客户端架构负责人赵文杰在 LiveVideoStackCon 2018 大会上的分享,并由 LiveVideoStack 整理而成。
基于视频流传输 — 在线教育白板技术
下一篇
无影云桌面