干货:一些优秀的音视频开源项目、面试题推荐

字节流动

共 6529字,需浏览 14分钟

 ·

2024-05-12 10:45

今天在论坛上看到一个关于音视频开发的帖子,看到题目,我忍不住点了进去。


标题是这样的“【🔥🔥🔥热门、吃香】音视频流媒体权威资料整理,精选文章,学术论文,大佬视频,实践项目,开源框架,协议,业界大神一览”,质疑“估计是骗人的,怎么会有这么全的内容”,但是还是想进去一探究竟。


项目地址:https://github.com/0voice/audio_video_streaming


一、书籍


  1. 《FFmpeg从入门到精通》

  2. 《视频图像处理与性能优化》

  3. 《数字图像与视频处理》

  4. 《数字音视频技术及应用 》

  5. 《音视频开发进阶指南:基于Android与iOS平台的实践 》

  6. 《视频编码全角度详解:AVS_China、H.264_MPEG-4_PART10、HEVC、VP6、DIRAC、VC-1 》

  7. 《FFMPEG - From Zero to Hero 》

  8. 《FFmpeg Basics 2012 》

  9. 《Handbook on SDP for Multimedia Session Negotiations SIP and WebRTC IP Telephony 》

  10. 《Learning WebRTC 》

  11. 《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. 简述推流、拉流的工作流程?


 三、文章


  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等。


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


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





编解码开源项目


  • 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



获取视频教程和源码



推荐:

Android FFmpeg 实现带滤镜的微信小视频录制功能

全网最全的 Android 音视频和 OpenGL ES 干货,都在这了

一文掌握 YUV 图像的基本处理

抖音传送带特效是怎么实现的?

所有你想要的图片转场效果,都在这了

浏览 61
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报