💡 【最新更新】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 |
实时音视频应用共包括几个环节:采集、编码、前后处理、传输、解码、缓冲、渲染等很多环节。每一个细分环节,还有更细分的技术模块。
比如,前后处理环节有美颜、滤镜、回声消除、噪声抑制等,采集有麦克风阵列等,编解码有VP8、VP9、H.264、H.265等。
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 | 地址 |
---|---|---|
26 | windows ffmpeg命令行环境搭建 | 百度网盘 提取码:i3f2 |
27 | FFMPEG如何查询命令帮助文档 | 百度网盘 提取码:9mqk |
28 | ffmpeg音视频处理流程 | 百度网盘 提取码:azx3 |
29 | ffmpeg命令分类查询 | 百度网盘 提取码:odhc |
30 | ffplay播放控制 | 百度网盘 提取码:e51s |
31 | ffplay命令选项(上) | 百度网盘 提取码:n1zx |
32 | ffplay命令选项(下) | 百度网盘 提取码:rtn0 |
33 | ffplay命令播放媒体 | 百度网盘 提取码:bs9s |
34 | ffplay简单过滤器 | 百度网盘 提取码:r4rk |
35 | ffmpeg命令参数说明 | 百度网盘 提取码:5q18 |
36 | ffmpeg命令提取音视频数据 | 百度网盘 提取码:v807 |
37 | ffmpeg命令提取像素格式和PCM数据 | 百度网盘 提取码:az9x |
38 | ffmpeg命令转封装 | 百度网盘 提取码:s7ez |
39 | fmpeg命令裁剪和合并视频 | 百度网盘 提取码:6g0g |
40 | fmpeg命令图片与视频互转 | 百度网盘 提取码:a3p5 |
41 | ffmpeg命令视频录制 | 百度网盘 提取码:em7b |
42 | ffmpeg命令直播(上) | 百度网盘 提取码:ilxz |
43 | ffmpeg命令直播(下) | 百度网盘 提取码:akyr |
44 | ffmpeg过滤器-裁剪 | 百度网盘 提取码:toii |
45 | ffmpeg过滤器-文字水印 | 百度网盘 提取码:unuu |
46 | ffmpeg过滤器-图片水印 | 百度网盘 提取码:mw4v |
47 | ffmpeg过滤器-画中画 | 百度网盘 提取码:c6fc |
48 | ffmpeg过滤器-多宫格 | 百度网盘 提取码:aioi |
49 | SRS流媒体服务器实战(上) | 百度网盘 提取码:4134 |
50 | SRS流媒体服务器实战(下) | 百度网盘 提取码:g4be |
51 | 音视频开发-ffplay.iikplayer、vlc的播放器设计实现 | 百度网盘 提取码:1img |
52 | 音视频成长之路-进阶三部曲 | 百度网盘 提取码:4nw3 |
53 | 为什么直播领域也要搞WebRTC-srs4.0 | 百度网盘 提取码:m47a |
54 | 腾讯课堂直播如何做到低延迟 | 百度网盘 提取码:jruh |
55 | rtmp2webrtc提出问题-灵魂拷问 | 百度网盘 提取码:pupp |
No. | Title | link |
---|---|---|
1 | Hypertext Transfer Protocol -- HTTP/1.1 | rfc2068.txt.pdf |
2 | An Extension to HTTP : Digest Access Authentication | rfc2069.txt.pdf |
3 | Simple Hit-Metering and Usage-Limiting for HTTP | rfc2227.txt.pdf |
4 | HTTP Extensions for Distributed Authoring -- WEBDAV | rfc2518.txt.pdf |
5 | Internet X.509 Public Key Infrastructure Operational Protocols: FTP and HTTP | rfc2585.txt.pdf |
6 | Upgrading to TLS Within HTTP/1.1 | rfc2817.txt.pdf |
No. | Title | link |
---|---|---|
7 | RTP: A Transport Protocol for Real-Time Applications | rfc1889.txt.pdf |
8 | RTP Profile for Audio and Video Conferences with Minimal Control | rfc1890.txt.pdf |
9 | RTP Payload Format of Sun's CellB Video Encoding | rfc2029.txt.pdf |
10 | RTP Payload Format for JPEG-compressed Video | rfc2035.txt.pdf |
11 | RTP Payload Format for MPEG1/MPEG2 Video | rfc2038.txt.pdf |
12 | RTP Payload for Redundant Audio Data | rfc2198.txt.pdf |
13 | RTP Payload Format for MPEG1/MPEG2 Video | rfc2250.txt.pdf |
14 | RTP Payload Format for the 1998 Version of ITU-T Rec. H.263 Video (H.263+) | rfc2429.txt.pdf |
15 | RTP Payload Format for BT.656 Video Encoding | rfc2431.txt.pdf |
16 | RTP Payload Format for JPEG-compressed Video | rfc2435.txt.pdf |
17 | Compressing IP/UDP/RTP Headers for Low-Speed Serial Links | rfc2508.txt.pdf |
18 | An RTP Payload Format for Generic Forward Error Correction | rfc2733.txt.pdf |
19 | RTP Payload for Text Conversation | rfc2793.txt.pdf |
20 | RTP Payload for DTMF Digits, Telephony Tones and Telephony Signals | rfc2833.txt.pdf |
21 | RTP Payload Format for Real-Time Pointers | rfc2862.txt.pdf |
22 | RTP Payload Format for MPEG-4 Audio/Visual Streams | rfc3016.txt.pdf |
23 | RTP Payload Format for ITU-T Recommendation G.722.1 | rfc3047.txt.pdf |
No. | Title | link |
---|---|---|
24 | Real Time Streaming Protocol (RTSP) | rfc2326.txt.pdf |
25 | Key Management Extensions for Session Description Protocol (SDP) and Real Time Streaming Protocol (RTSP) | rfc4567.txt.pdf |
26 | A Network Address Translator (NAT) Traversal Mechanism for Media Controlled by the Real-Time Streaming Protocol (RTSP) | rfc7825.txt.pdf |
27 | Real-Time Streaming Protocol Version 2.0 | rfc7826.txt.pdf |
28 | SDP: Session Description Protocol | rfc8866.pdf |
No. | Title | link |
---|---|---|
29 | Protocol standard for a NetBIOS service on a TCP/UDP transport: Concepts and methods | rfc1001.pdf |
30 | Protocol standard for a NetBIOS service on a TCP/UDP transport: Detailed specifications | rfc1002.pdf |
31 | Transmission Control Protocol | rfc793.pdf |
No. | Title | link |
---|---|---|
32 | Protocol standard for a NetBIOS service on a TCP/UDP transport: Concepts and methods | rfc1001.pdf |
33 | Protocol standard for a NetBIOS service on a TCP/UDP transport: Detailed specifications | rfc1002.pdf |
34 | SNMPv2 Management Information Base for the User Datagram Protocol using SMIv2 | rfc2013.pdf |
35 | TCP and UDP over IPv6 Jumbograms | rfc2147.pdf |
36 | Compressing IP/UDP/RTP Headers for Low-Speed Serial Links | rfc2508.pdf |
37 | STUN - Simple Traversal of User Datagram Protocol (UDP) Through Network Address Translators (NATs) | rfc3489.pdf |
38 | Mobile IP Traversal of Network Address Translation (NAT) Devices | rfc3519.pdf |
39 | The Lightweight User Datagram Protocol (UDP-Lite) | rfc3828.pdf |
40 | UDP Encapsulation of IPsec ESP Packets | rfc3948.pdf |
41 | RObust Header Compression (ROHC): Profiles for User Datagram Protocol (UDP) Lite | rfc4019.pdf |
42 | Management Information Base for the User Datagram Protocol (UDP) | rfc4113.pdf |
43 | User Datagram Protocol | rfc768.pdf |
No. | Title | link |
---|---|---|
44 | The gopher URI Scheme | rfc4266.pdf |
No. | Title | link |
---|---|---|
45 | SDP: Session Description Protocol | rfc2327.pdf |
46 | The PINT Service Protocol: Extensions to SIP and SDP for IP Access to Telephone Call Services | rfc2848.pdf |
47 | Carrying Label Information in BGP-4 | rfc3107.pdf |
48 | An Offer/Answer Model with Session Description Protocol (SDP) | rfc3264.pdf |
49 | Support for IPv6 in Session Description Protocol (SDP) | rfc3266.pdf |
50 | Grouping of Media Lines in the Session Description Protocol (SDP) | rfc3388.pdf |
51 | Session Description Protocol (SDP) Simple Capability Declaration | rfc3407.pdf |
52 | The Session Initiation Protocol (SIP) and Session Description Protocol (SDP) Static Dictionary for Signaling Compression (SigComp) | rfc3485.pdf |
53 | Mapping of Media Streams to Resource Reservation Flows | rfc3524.pdf |
54 | Session Description Protocol (SDP) Bandwidth Modifiers for RTP Control Protocol (RTCP) Bandwidth | rfc3556.pdf |
55 | RTP Control Protocol Extended Reports (RTCP XR) | rfc3611.pdf |
56 | A Transport Independent Bandwidth Modifier for the Session Description Protocol (SDP) | rfc3890.pdf |
57 | The Alternative Network Address Types (ANAT) Semantics for the Session Description Protocol (SDP) Grouping Framework | rfc4091.pdf |
58 | TCP-Based Media Transport in the Session Description Protocol (SDP) | rfc4145.pdf |
59 | RTP Payload Format for BroadVoice Speech Codecs | rfc4298.pdf |
60 | SDP: Session Description Protocol | rfc4566.pdf |
61 | Key Management Extensions for Session Description Protocol (SDP) and Real Time Streaming Protocol (RTSP) | rfc4567.txt.pdf |
No. | Title | link |
---|---|---|
62 | The PPP OSI Network Layer Control Protocol (OSINLCP) | rfc1242.txt.pdf |
No. | Title | link |
---|---|---|
63 | RTP: A Transport Protocol for Real-Time Applications | rfc1889.txt.pdf |
64 | Session Description Protocol (SDP) Bandwidth Modifiers for RTP Control Protocol (RTCP) Bandwidth | rfc3556.txt.pdf |
65 | Real Time Control Protocol (RTCP) attribute in Session Description Protocol (SDP) | rfc3605.txt.pdf |
66 | RTP Control Protocol Extended Reports (RTCP XR) | rfc3611.txt.pdf |
67 | Framing Real-time Transport Protocol (RTP) and RTP Control Protocol (RTCP) Packets over Connection-Oriented Transport | rfc4571.txt.pdf |
68 | Extended RTP Profile for Real-time Transport Control Protocol (RTCP)-Based Feedback (RTP/AVPF) | rfc4585.txt.pdf |
69 | RTP Retransmission Payload Format | rfc4588.txt.pdf |
70 | Extended Secure RTP Profile for Real-time Transport Control Protocol (RTCP)-Based Feedback (RTP/SAVPF) | rfc5124.txt.pdf |
71 | Support for Reduced-Size Real-Time Transport Control Protocol (RTCP): Opportunities and Consequences | rfc5506.txt.pdf |
72 | Post-Repair Loss RLE Report Block Type for RTP Control Protocol (RTCP) Extended Reports (XRs) | rfc5725.txt.pdf |
73 | RTP Control Protocol (RTCP) Extensions for Single-Source Multicast Sessions with Unicast Feedback | rfc5760.txt.pdf |
74 | Datagram Transport Layer Security (DTLS) Extension to Establish Keys for the Secure Real-time Transport Protocol (SRTP) | rfc5764.txt.pdf |
75 | Session Initiation Protocol Event Package for Voice Quality Reporting | rfc6035.txt.pdf |
76 | Rapid Synchronisation of RTP Flows | rfc6051.txt.pdf |
77 | RTP Control Protocol (RTCP) Port for Source-Specific Multicast (SSM) Sessions | rfc6128.txt.pdf |
78 | Guidelines for Choosing RTP Control Protocol (RTCP) Canonical Names (CNAMEs) | rfc6222.txt.pdf |
79 | Application Mechanism for Keeping Alive the NAT Mappings Associated with RTP / RTP Control Protocol (RTCP) Flows | rfc6263.txt.pdf |
80 | Multicast Acquisition Report Block Type for RTP Control Protocol (RTCP) Extended Reports (XRs) | rfc6332.txt.pdf |
81 | RTP Control Protocol (RTCP) Extension for a Third-Party Loss Report | rfc6642.txt.pdf |
实现了多人语音/多人视频项目, 房间号Id一致,用户Id不一致,即可实现多人语音/多人视频。
ijkplayer 是一个基于 ffplay 的轻量级 Android/iOS 视频播放器。实现了跨平台功能,API易于集成;编译配置可裁剪,方便控制安装包大小;支持硬件加速解码,更加省电;提供Android平台下应用弹幕集成的解决方案。
仿网易云音乐 安卓版,netease android,音乐播放器 在线 下载。
Timber是一个设计漂亮,功能完善,Material Design风格的音乐播放器。
WebRTC初学者的启动演示,包括一个基于Socket.IO的简单信号服务器,以及一些客户端演示Web/Android/IOS/Windows平台。
WebRTC入门项目部署步骤
使用WebRTC getstats APL返回对等连接状态的微小JavaScript库,如带宽使用、数据包丢失、本地)远程IP地址和端口、连接类型等。
跨平台的视频播放器,可在Linux和其他类Unix系统、Windows及Mac OS X系统使用。
IOS平台基于FFMPEG播放器
Android/IOS平台上的多媒体框架,带有硬件加速解码和渲染.
YUV转RGB.
将TS流解码为PES或ES.(下载这个源码需要FQ)
跨平台的视频播放器。现在也有安卓版本。也可以作为流媒体服务器。
免费的编解码软件,基于windows平台。原因就是directshow就是微软开发的,只能用于windows平台。
这是一个专注音视频播放器的库,目前还在不断优化中。
视频下载SDK功能。
这是一个专注音视频边下边播的库。
夜雨飘零大佬撰写的基于《Baidu's Deep Speech 2 paper》论文深度学习语音识别实战项目。
Android OpenGLES 3.0 开发系统性学习教程。
Android OpenGL Camera 2.0 实现 30 种滤镜和抖音特效。