干货:一些优秀的音视频开源项目、面试题推荐
共 6529字,需浏览 14分钟
·
2024-05-12 10:45
今天在论坛上看到一个关于音视频开发的帖子,看到题目,我忍不住点了进去。
标题是这样的“【🔥🔥🔥热门、吃香】音视频流媒体权威资料整理,精选文章,学术论文,大佬视频,实践项目,开源框架,协议,业界大神一览”,质疑“估计是骗人的,怎么会有这么全的内容”,但是还是想进去一探究竟。
项目地址:https://github.com/0voice/audio_video_streaming
一、书籍
《FFmpeg从入门到精通》
《视频图像处理与性能优化》
《数字图像与视频处理》
《数字音视频技术及应用 》
《音视频开发进阶指南:基于Android与iOS平台的实践 》
《视频编码全角度详解:AVS_China、H.264_MPEG-4_PART10、HEVC、VP6、DIRAC、VC-1 》
《FFMPEG - From Zero to Hero 》
《FFmpeg Basics 2012 》
《Handbook on SDP for Multimedia Session Negotiations SIP and WebRTC IP Telephony 》
《Learning WebRTC 》
《Real-Time Communication with WebRTC》
二、面试题
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. 简述推流、拉流的工作流程?
三、文章
WebRTC 发送方码率预估实现解析
码率控制基本概念
Speex回声消除代码分析
房间声学原理与Schroeder混响算法实现
H264系列--压缩编码技术
RTSP 媒体协议流的录制方案及其覆盖策略详解
建立连接之ICE框架
流媒体协议介绍(rtp/rtcp/rtsp/rtmp/mms/hls)
音视频同步原理及实现
直播概念和流程框架
CDN在直播中的运用
常见音视频编码格式
H.264官方软件JM源代码分析-编码器lencod
H.264官方软件JM源代码分析-解码器ldecod
Android 音视频技术
Web前端WebRTC攻略-媒体协商与SDP简析
基于FFmpeg的AVfilter的例子-纯净版
WebRTC 传输安全机制第二话:深入显浅出 SRTP 协议
WebRTC能给我带来什么?
视音频数据处理:RGB、YUV像素数据处理
视音频数据处理:PCM音频采样数据处理
视音频数据处理:H.264视频码流解析
视音频数据处理:AAC音频码流解析
视音频数据处理:FLV封装格式解析
视音频数据处理:UDP-RTP协议解析
如何生成mp4文件
ffmpeg滤镜的基本使用
webRTC是如何实现音视频的录制
音视频同步算法
房间声学原理与Schroeder混响算法实现
一个频域语音降噪算法实现及改进方法
HEVC官方软件HM源代码分析-编码器TAppEncoder
HEVC官方软件HM源代码分析-解码器TAppDecoder
音视频编解码常用知识点
微信小程序集成实时音视频通话功能
视音频编解码技术零基础学习方法
RTSP协议学习
HEVC码流分析
H.264简单码流分析
MPEG2简单码流分析
视频码流分析工具
H.264分析器
FFmpeg架构之IO模块分析
(Video and Audio Data Processing)UDP-RTP协议解析
RTSP协议实例分析
RTSP协议之TCP或UDP问题
ffplay工具命令使用技巧
VLC RTSP网络串流播放失败
RTMP协议详解
STUN 原理理解
四、开源框架
实时音视频应用共包括几个环节:采集、编码、前后处理、传输、解码、缓冲、渲染等很多环节。每一个细分环节,还有更细分的技术模块。比如,前后处理环节有美颜、滤镜、回声消除、噪声抑制等,采集有麦克风阵列等,编解码有VP8、VP9、H.264、H.265等。
采集->前处理编码->传输->解码后处理->渲染
实时音视频开源项目思维导图
编解码开源项目
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
五、视频
国外大神
国内大佬
六、更多给力的资源
如:学术论文、业界大神介绍、流媒体协议、实战项目等
通过上面对内容的简述,我想大家对这分资料,都有了一个大概的了解,也同时对它有了个大概的评价。
从我个人感觉来说,我认为这份资料还是整理得不错的。并没有一味吹嘘。基本符合标题所写的“【🔥🔥🔥热门、吃香】音视频流媒体权威资料整理,精选文章,学术论文,大佬视频,实践项目,开源框架,协议,业界大神一览”。
资料地址:https://github.com/0voice/audio_video_streaming
repo最后附上的了公众号,有需要这份资料所有文档的朋友,可以联系他们。
-- END --
进技术交流群,扫码添加我的微信:Byte-Flow
获取视频教程和源码
推荐: