[学习资料]稀缺的音视频,50道音视频经典面试题,国内国外大佬教学视频,N个经典开源项目,建议收藏

img

—— 近年来热门、吃香、值得学习的技术方向

📢【推荐收藏】音视频流媒体开发知识归纳导图

🏹【熟读兵法,搞定面试】50道音视频经典面试题

👁️【不想看文字,视频更直接】国内国外大佬教学视频

🗜【项目实战应用,日后100%要用到】N个经典开源项目

img

本资源节选自:github.com/0voice/audio_video_stre... 更多内容请移步至github仓。

📙 书籍

FFmpeg从入门到精通 百度网盘 提取码:n4zj

视频图像处理与性能优化 百度网盘提取码:9kf0

数字图像与视频处理 百度网盘提取码:urz3

数字音视频技术及应用 百度网盘提取码:ezio

音视频开发进阶指南:基于Android与iOS平台的实践 百度网盘提取码:vr7q

视频编码全角度详解:AVS_China、H.264_MPEG-4_PART10、HEVC、VP6、DIRAC、VC-1 百度网盘提取码:mj2d

FFMPEG - From Zero to Hero 百度网盘提取码:0kiu

FFmpeg Basics 2012 百度网盘提取码:migt

Handbook on SDP for Multimedia Session Negotiations SIP and WebRTC IP Telephony 百度网盘提取码:ol6q

Learning WebRTC 百度网盘提取码:85wo

Real-Time Communication with WebRTC 百度网盘提取码:673p

🌅 面试题

1. 为什么巨大的原始视频可以编码成很小的视频呢?这其中的技术是什么呢?

2. 怎么做到直播秒开优化?

3. 直方图在图像处理里面最重要的作用是什么?

4. 数字图像滤波有哪些方法?

5. 图像可以提取的特征有哪些?

6. 衡量图像重建好坏的标准有哪些?怎样计算?

7. AAC和PCM的区别?

8. H264存储的两个形态?

9. FFMPEG:图片如何合成视频?

10. 常见的音视频格式有哪些?

11. 请指出“1080p”的意义?

12. 请解释颜色的本质及其数字记录原理,并说出几个你所知道的色域。

13. 请解释“矢量图”和“位图”的区别?

14. 请从“光圈”“快门速度”“感光度”“白平衡”“景深”中任选2个进行叙述?

15. 视频分量YUV的意义及数字化格式?

16. 在MPEG标准中图像类型有哪些?

17. 列举一些音频编解码常用的实现方案?

18. 请叙述MPEG视频基本码流结构?

19. sps和pps的区别?

20. 请叙述AMR基本码流结构?

21. 预测编码的基本原理是什么?

22. 说一说ffmpeg的数据结构?

23. 说一说AVFormatContext 和 AVInputFormat之间的关系?

24. 说一说AVFormatContext, AVStream和AVCodecContext之间的关系?

25. 说一说视频拼接处理步骤?(细节处理,比如分辨率大小不一,时间处理等等)

26. NV21如何转换成I420?

27. DTS与PTS共同点?

28. 影响视频清晰度的指标有哪些?

29. 编解码处理时遇到什么困难?

30. 如何秒开视频?什么是秒开视频?

31. 如何降低延迟?如何保证流畅性?如何解决卡顿?解决网络抖动?

32. 需要把网络上一段视频存储下来(比如作为mp4 ), 请实现并说出方法(第一个视频需要翻墙才能进)?

33. 需要把网络上一段语音存储下来(比如作为mp3 ), 请实现并说出方法?

34. 为什么要有YUV这种数据出来?(YUV相比RGB来说的优点)

35. H264/H265有什么区别?

36. 视频或者音频传输,你会选择TCP协议还是UDP协议?为什么?

37. 平时说的软解和硬解,具体是什么?

38. 何为直播?何为点播?

39. 简述推流、拉流的工作流程?

📰 文章

  1. WebRTC 发送方码率预估实现解析

  2. 码率控制基本概念

  3. Speex回声消除代码分析

  4. 房间声学原理与Schroeder混响算法实现

  5. H264系列–压缩编码技术

  6. RTSP 媒体协议流的录制方案及其覆盖策略详解

  7. 建立连接之ICE框架

  8. 流媒体协议介绍(rtp/rtcp/rtsp/rtmp/mms/hls)

  9. 音视频同步原理及实现

  10. 直播概念和流程框架

  11. CDN在直播中的运用

  12. 常见音视频编码格式

  13. H.264官方软件JM源代码分析-编码器lencod

  14. H.264官方软件JM源代码分析-解码器ldecod

  15. Android 音视频技术

  16. Web前端WebRTC攻略-媒体协商与SDP简析

  17. 基于FFmpeg的AVfilter的例子-纯净版

  18. WebRTC 传输安全机制第二话:深入显出 SRTP 协议

  19. WebRTC能给我带来什么?

  20. 视音频数据处理:RGB、YUV像素数据处理

  21. 视音频数据处理:PCM音频采样数据处理

  22. 视音频数据处理:H.264视频码流解析

  23. 视音频数据处理:AAC音频码流解析

  24. 视音频数据处理:FLV封装格式解析

  25. 视音频数据处理:UDP-RTP协议解析

  26. 如何生成mp4文件

  27. ffmpeg滤镜的基本使用

  28. webRTC是如何实现音视频的录制

  29. 音视频同步算法

  30. 房间声学原理与Schroeder混响算法实现

  31. 一个频域语音降噪算法实现及改进方法

  32. HEVC官方软件HM源代码分析-编码器TAppEncoder

  33. HEVC官方软件HM源代码分析-解码器TAppDecoder

  34. 音视频编解码常用知识点

  35. 微信小程序集成实时音视频通话功能

  36. 视音频编解码技术零基础学习方法

  37. RTSP协议学习

  38. HEVC码流分析

  39. H.264简单码流分析

  40. MPEG2简单码流分析

  41. 视频码流分析工具

  42. H.264分析器

  43. FFmpeg架构之IO模块分析

  44. (Video and Audio Data Processing)UDP-RTP协议解析

  45. RTSP协议实例分析

  46. RTSP协议之TCP或UDP问题

  47. ffplay工具命令使用技巧

  48. VLC RTSP网络串流播放失败

  49. RTMP协议详解

  50. STUN 原理理解

🌐 开源框架

实时音视频开源项目

实时音视频应用共包括几个环节:采集、编码、前后处理、传输、解码、缓冲、渲染等很多环节。每一个细分环节,还有更细分的技术模块。 比如,前后处理环节有美颜、滤镜、回声消除、噪声抑制等,采集有麦克风阵列等,编解码有VP8、VP9、H.264、H.265等。

采集->前处理编码->传输->解码后处理->渲染

实时音视频开源项目思维导图

img

编解码开源项目

  • WebRTC

地址:webrtc.org

WebRTC实现了基于网页的视频会议,标准是WHATWG 协议,目的是通过浏览器提供简单的javascript就可以达到实时通讯(Real-Time Communications (RTC))能力。WebRTC提供了视频会议的核心技术,包括音视频的采集、编解码、网络传输、显示等功能,并且还支持跨平台:windows,linux,mac,android。

  • H.264

地址:www.linuxfromscratch.org

H.264是ITU(International Telecommunication Union,国际通信联盟)和MPEG(Motion Picture Experts Group,运动图像专家组)联合制定的视频编码标准。而x264是一个开源的H.264/MPEG-4 AVC视频编码函数库,是最好的有损视频编码器之一。

  • FFmpeg

地址:ffmpeg.org

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。FFmpeg提供了编码、解码、转换、封装等功能,以及剪裁、缩放、色域等后期处理。

  • ijkplayer

地址:bilibili/ijkplayer

ijkplayer 是一个基于 ffplay 的轻量级 Android/iOS 视频播放器。实现了跨平台功能,API易于集成;编译配置可裁剪,方便控制安装包大小;支持硬件加速解码,更加省电;提供Android平台下应用弹幕集成的解决方案。

  • JSMpeg

地址:jsmpeg.com

JSMpeg is a Video Player written in JavaScript. It consists of an MPEG-TS Demuxer, WebAssembly MPEG1 Video & MP2 Audio Decoders, WebGL & Canvas2D Renderers and WebAudio Sound Output. JSMpeg can load static files via Ajax and allows low latency streaming (~50ms) via WebSocktes.

  • Opus

地址:opus.nlpl.eu

Opus是一个有损声音编码的格式,由Xiph.Org基金会开发,之后由IETF(互联网工程任务组)进行标准化,目标是希望用单一格式包含声音和语音,取代Speex和Vorbis,且适用于网络上低延迟的即时声音传输,标准格式定义于RFC 6716文件。Opus格式是一个开放格式,使用上没有任何专利或限制。

  • live555

地址:www.live555.com

服务端开源项目

  • jitsi

地址:jitsi/jitsi

Jitsi是一个音频/视频和聊天通信器,它支持SIP、XMPP/Jabber、IRC和许多其他有用的特性。

  • JsSIP

地址:jssip.net

JsSIP是一个简单易用的JavaScript库,它利用SIP和WebRTC的最新发展,在任何网站上提供全功能的SIP端点。通过JsSIP ,只要几行代码,任何网站都可以通过音频,视频等获得实时通信功能。

  • SRS

地址:www.ossrs.net

SRS定位是运营级的互联网直播服务器集群,追求更好的概念完整性和最简单实现的代码。SRS提供了丰富的接入方案将RTMP流接入SRS,包括推送RTMP到SRS、推送RTSP/UDP/FLV到SRS、拉取流到SRS。SRS还支持将接入的RTMP流进行各种变换,譬如将RTMP流转码、流截图、转发给其他服务器、转封装成HTTP-FLV流、转封装成HLS、转封装成HDS、录制成FLV。SRS包含支大规模集群如CDN业务的关键特性,譬如RTMP多级集群、源站集群、VHOST虚拟服务器、无中断服务Reload、HTTP-FLV集群、Kafka对接。此外,SRS还提供丰富的应用接口,包括HTTP回调、安全策略Security、HTTP API接口、RTMP测速。

  • JRTPLIB

地址:j0r1/JRTPLIB

jrtplib是一个基于C++、面向对象的RTP封装库, jrtplib支持定义于RFC3550中的RTP协议,它使得发送和接收RTP报文变得异常简单,用户不用担心SSRC冲突,也不用考虑如何传输RTCP数据,因为RTCP功能完全在内部实现。

  • OPAL

地址:opalvoip

openphone抽象库(OPAL)是一个c++多平台、多协议的库,用于IP和其他网络上的传真、视频和语音。还包括可移植工具库(PTLib),这是一个c++多平台抽象库。

  • Kurento

地址:www.kurento.org

Kurento 是一个WebRTC流媒体服务器以及一些客户端API,开发WWW及智能手机平台的高级视频应用就变得更加容易。可以利用Kurento开发的应用类型包括,视频会议,音视频广播,音视频录制、转码等。

  • Janus

地址:janus.conf.meetecho.com

🧿 视频

国外大神

img

国内大佬

img

本资源节选自:github.com/0voice/audio_video_stre... 更多内容请移步至github仓。

👀 业界大神

  • 刘岐:FFmpeg官方代码维护者之一,十余年一线技术研发与技术管理经验,人称“大师兄”。现任职于OnVideo公司,担任CTO,公司联合创立人,负责在线音视频云编辑与创作平台的开发和建设。曾任职蓝汛、高升、金山云等公司,担任视频部门架构师及技术专家。

  • 赵文杰:擅长音视频编解码和渲染技术,客户端技术专家,开源流媒体服务器SRS开发者之一,现任好未来网校事业部高级架构师一职,负责端开发。

  • 廖庆富:主要从事音视频驱动,多媒体中间件,流媒体服务器的高级开发,主导开发过即时通讯+音视频通话的大型项目。曾就职于联发科,现任职于零声教育,资深音视频讲师。主讲WebRTC,ffmpeg,流媒体。

  • 雷霄骅:两届CSDN博客之星、微软MVP。主要从事与广播电视有关的视音频技术的研究。包括视音频质量评价,视音频编解码,流媒体,媒资检索等。

  • 栗伟:资深音视频技术专家,曾任职于中科院计算所、CC视频,任职期间利用WebRTC技术开发了直播、在线课堂、视频会议等商业产品,并发用户数达到500万。开源社区的积极参与者,在GitHub上开源了视频会议项目WiLearning,免费供中小企业使用。

  • 杨成立:阿里云RTC服务器团队负责人。负责中国最大CDN蓝汛科技流媒体分发系统开发项目。主导研发转码、P2P、流媒体服务器, 开源项目SRS主要开发者之一。

🥌 实践项目

音视频通话项目

实现了多人语音/多人视频项目, 房间号Id一致,用户Id不一致,即可实现多人语音/多人视频。

Android/iOS 视频播放器

ijkplayer 是一个基于 ffplay 的轻量级 Android/iOS 视频播放器。实现了跨平台功能,API易于集成;编译配置可裁剪,方便控制安装包大小;支持硬件加速解码,更加省电;提供Android平台下应用弹幕集成的解决方案。

仿网易云音乐安卓版客户端

仿网易云音乐 安卓版,netease android,音乐播放器 在线 下载。

Timber

Timber是一个设计漂亮,功能完善,Material Design风格的音乐播放器。

WebRTC入门项目

WebRTC初学者的启动演示,包括一个基于Socket.IO的简单信号服务器,以及一些客户端演示Web/Android/IOS/Windows平台。 WebRTC入门项目部署步骤

getStats

使用WebRTC getstats APL返回对等连接状态的微小JavaScript库,如带宽使用、数据包丢失、本地)远程IP地址和端口、连接类型等。

MPlayer

跨平台的视频播放器,可在Linux和其他类Unix系统、Windows及Mac OS X系统使用。

KxMovie

IOS平台基于FFMPEG播放器

Vitamio

Android/IOS平台上的多媒体框架,带有硬件加速解码和渲染.

YUV2RGB

YUV转RGB.

TSDemux

将TS流解码为PES或ES.(下载这个源码需要FQ)

VLC

跨平台的视频播放器。现在也有安卓版本。也可以作为流媒体服务器。

FFDshow

免费的编解码软件,基于windows平台。原因就是directshow就是微软开发的,只能用于windows平台。

PlayerSDK(Android平台)

这是一个专注音视频播放器的库,目前还在不断优化中。

VideoDownloader(Android平台)

视频下载SDK功能。

MediaSDK(Android平台)

这是一个专注音视频边下边播的库。

本资源节选自:github.com/0voice/audio_video_stre... 更多内容请移步至github仓。

本作品采用《CC 协议》,转载必须注明作者和本文链接
本帖由系统于 3天前 自动加精
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 2

我只知道音视频要用udp 不可靠传输 哈哈

1周前 评论
Luson

整挺好

1周前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!