0voice/audio_video_streaming

★ 6,245⑂ 0

音视频流媒体权威资料整理,500+份文章,论文,视频,实践项目,协议,业界大神名单。

6,245Star
0Fork
0Watch
0Issue
-Language
-License
Created · last push · repository size 0 KB · default branch -

README

【🔥🔥🔥热门、吃香】音视频流媒体权威资料整理,精选文章,学术论文,大佬视频,实践项目,开源框架,协议,业界大神一览


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


📙
     书籍     
|🌅
    面试题   
| 📰
    文章   
:-------: | :-------: | :---------: 🌐
开源框架
|💽
视频
| 👷‍♂️
业界大神
📄
学术论文
| 🤝
协议
| 🏗️
实践项目


💡 【最新更新】WebRTC零基础开发者教程(中文)

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

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

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

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


📙 书籍

No.|book nam|author :------- | :--------------- | :------------ 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|Nick, Ferrando| 8|FFmpeg Basics 2012|Frantisek Korbel| 9|Handbook on SDP for Multimedia Session Negotiations SIP and WebRTC IP Telephony |Roy, Radhika Ranjan| 10|Learning WebRTC|Dan Ristic| 11|Real-Time Communication with WebRTC |Salvatore Loreto, Simon Pietro Romano|


🌅 面试题

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. 简述推流、拉流的工作流程?
40. 如何在直播中I帧间隔设置、与帧率分辨率选定?
41. 直播推流中推I帧与推非I帧区别是什么?
42. 常见的直播协议有哪些?之间有什么区别?
43. 点播中常见的数据传输协议主要有哪些?
44. RTMP、HLS协议各自的默认端口号是?
45. 简述RTMP协议,如何封装RTMP包?
46. m3u8构成是?直播中m3u8、ts如何实时更新?
47. 何为音视频同步,音视频同步是什么标准?
48. 播放器暂停、快进快退、seek、逐帧、变速怎么实现?
49. 说说你平时在播放过程中做的优化工作?
50. 你研究过哪些具体的流媒体服务器,是否做过二次开发?
51. 什么是GOP?
52. 音频测试的测试点,音频时延如何测试?
53. 美颜的实现原理,具体实现步骤?
54. 如何直播APP抓包过来的文件,如何过滤上行,下行,总码率?
55. 如何测试一个美颜挂件?
56. 为什么要用FLV?
57. 如何测试一个美颜挂件?
58. 平常的视频格式?
59. 何为homebrew?你用它安装过什么?常用命令有哪些?
60. RTMP、HLS协议各自的默认端口号是?


📰 文章

No.|article :------- | :--------------- 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等。

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

实时音视频开源项目思维导图 ![音视频开源项目说明](https://www.0voice.com/uiwebsite/audio_video_streaming/02/audio_video_open_source_pro.png "音视频开源项目")

编解码开源项目
project|website|introduce :------- | :--------------- | :------------ WebRTC|webrtc.org|WebRTC实现了基于网页的视频会议,标准是WHATWG 协议,目的是通过浏览器提供简单的javascript就可以达到实时通讯(Real-Time Communications (RTC))能力。WebRTC提供了视频会议的核心技术,包括音视频的采集、编解码、网络传输、显示等功能,并且还支持跨平台:windows,linux,mac,android。 x264|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|live555是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了标准流媒体传输,是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了对标准流媒体传输协议如RTP/RTCP、RTSP、SIP等的支持。Live555实现了对多种音视频编码格式的音视频数据的流化、接收和处理等支持,包括MPEG、H.263+ 、DV、JPEG视频和多种音频编码。
服务端开源项目

project|website|introduce :------- | :--------------- | :------------ jitsi|jitsi/jitsi|Jitsi is an audio/video and chat communicator that supports protocols such as SIP, XMPP/Jabber, IRC and many other useful features. 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|Open Phone Abstraction Library (OPAL) is a C++ multi-platform, multi-protocol library for Fax, Video & Voice over IP and other networks. Also included is the Portable Tool Library (PTLib) which is a C++ multi-platform abstraction library. Kurento|www.kurento.org|Kurento 是一个WebRTC流媒体服务器以及一些客户端API,开发WWW及智能手机平台的高级视频应用就变得更加容易。可以利用Kurento开发的应用类型包括,视频会议,音视频广播,音视频录制、转码等。 Janus|janus.conf.meetecho.com|Janus 是由Meetecho设计和开发的开源、通用的基于SFU架构的WebRTC流媒体服务器,它支持在Linux的服务器或MacOS上的机器进行编译和安装。

质量传输开源项目

project|website|introduce :------- | :--------------- | :------------ callstats.io|callstats|Callstats.io致力于监控和管理WebRTC应用中的音频和视频通话性能。提供Javascript客户端库,可以监测浏览器终端性能,从而帮助服务供应商准确定位那些媒体质量较低的终端用户,并进行性能问题的诊断。该信息主要是用于产品经理和工程师来提高客户体验质量,主动解决潜在的瓶颈障碍。 Meetecho|meetecho/janus-gateway|Meetecho Janus是Meetecho公司的一款WebRTC(网页即时通信)服务器。 Agora|agora.io|声网Agora提供了一套简单而强大的SDK,开发者可以利用其中的资源在任何手机或电脑应用中加入高清语音和视频通讯功能。

视频前后处理开源项目
音频

project|website|introduce :------- | :--------------- | :------------ soundtouch|soundtouch|SoundTouch是一个开源的音频处理库,主要实现包含变速、变调、变速同时变调等三个 功能模块,能够对媒体流实时操作,也能对音频文件操作。采用32位浮点或者16位定点,支持单声道或者双声道,采样率范围为8k~48k。

视频

project|website|introduce :------- | :--------------- | :------------ SeetaFace6|SeetaFace6Open|SeetaFace6是中科视拓最新开源的商业正式版本。包含人脸识别的基本部分,如人脸检测、关键点定位、人脸识别。同时增加了活体检测、质量评估、年龄性别估计。并且响应时事,开放了口罩检测以及戴口罩的人脸识别模型。 GPUImage2|GPUImage2|GPUImage是个功能十分强大、又十分易用的图像处理库。提供各种各样的图像处理滤镜,并且支持照相机和摄像机的实时滤镜。 open nsfw|open_nsfw|open nsfw是雅虎开源项目caffeonspark,使用深度学习训练得到caffe模型。nsfw翻译为不可在工作中看的图片。主要是针对黄图的,恐怖,血腥图片不能识别。 PaddleGAN|PaddleGAN|PaddleGAN是百度飞桨团队开源的对抗网络工具箱,提供了视频超分、插帧、上色等高质量深度学习能力。

其他音视频开源项目

project|website|introduce :------- | :--------------- | :------------ Speex|xiph.org|Speex是一套主要针对语音的开源免费,无专利保护的音频压缩格式。 FLAC|xiph.org|FLAC中文可解释为无损音频压缩编码。FLAC是一套著名的自由音频压缩编码,其特点是无损压缩。不同于其他有损压缩编码如MP3及AAC,它不会破坏任何原有的音频信息,所以可以还原音乐光盘音质。 Xvid|xvidmovies|Xvid是一个开放源代码的MPEG-4视频编解码器,它是基于OpenDivX而编写的。 Lagarith|lags.leetcode.net|Lagarith,是一种由Ben Greenwood所撰写的影片编解码器(video codec)。 Thor|wwww.thor.com|Thor是思科开源的视频编码解码器,Thor拥有适当复杂度的高压缩率视频编码解码器,使用众所周知的 motion-compensated 预测的混合视频编码方法和变换编码。


🧿 视频

国外大神

No.|title :------- | :--------------- 1|如何使用FFMPEG将MP4视频文件转换为GIF 2|FFMPEG Introduction & Examples 3|Live Streaming with Nginx and FFmpeg 4|Ep2 Ffmpeg Nginx & Nginx-Rtmp-Module Streaming to Server 5|Streaming an IP Camera to a Web Browser using FFmpeg 6|Easy Screencasting and Webcamming with ffmpeg in Linux 7|Streaming an IP Camera to a Web Browser using FFmpeg 8|FFMPEG Advanced Techniques Pt2 - Filtergraphs & Timeline 9|Convert HEVCh265 mkv video to AVCh264 mp4 with ffmpeg 10|How to add soft subtitles( srt subrip) to mp4 video using ffmpeg%20to%20mp4%20video%20using%20ffmpeg.mp4) 11|FFmpeg Processing multiple video files by using.bat file 12|Opensource Multimedia Framework -- FFmpeg 13|rtsp streaming node js ip camera jsmpeg 14|[H.265 RTSP Streaming to VLC + NewTek NDI Integration](https://www.0voice.com/uiwebsite/audio_video_streaming/video/014-H.265%20RTSP%20Streami

More Video Trending projects

1

Genymobile / scrcpy

C★ 149,650⑂ 0
2

harry0703 / MoneyPrinterTurbo

Python★ 123,776⑂ 0
3

obsproject / obs-studio

C★ 76,223⑂ 0
4

FFmpeg / FFmpeg

C★ 64,235⑂ 0
5

calesthio / OpenMontage

Python★ 59,205⑂ 0
6

heygen-com / hyperframes

TypeScript★ 50,163⑂ 0