{"id":27857770,"url":"https://github.com/runner365/read_book","last_synced_at":"2025-05-04T13:58:16.974Z","repository":{"id":46526418,"uuid":"127990057","full_name":"runner365/read_book","owner":"runner365","description":null,"archived":false,"fork":false,"pushed_at":"2022-05-07T04:23:30.000Z","size":15934,"stargazers_count":223,"open_issues_count":1,"forks_count":94,"subscribers_count":20,"default_branch":"master","last_synced_at":"2025-05-04T13:58:08.843Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/runner365.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-04-04T01:33:46.000Z","updated_at":"2025-04-18T03:39:03.000Z","dependencies_parsed_at":"2022-09-23T02:02:30.099Z","dependency_job_id":null,"html_url":"https://github.com/runner365/read_book","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/runner365%2Fread_book","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/runner365%2Fread_book/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/runner365%2Fread_book/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/runner365%2Fread_book/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/runner365","download_url":"https://codeload.github.com/runner365/read_book/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252344598,"owners_count":21732979,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-05-04T13:58:16.411Z","updated_at":"2025-05-04T13:58:16.966Z","avatar_url":"https://github.com/runner365.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"\n一点点从基础做起\n从音视频协议原文精读翻译做起，欢迎交流指导！\n\u003c!-- TOC --\u003e\n\n- [1. webrtc方向](#1-webrtc%E6%96%B9%E5%90%91)\n    - [1.1 RTP/RTCP](#11-rtprtcp)\n    - [1.1.1 英文自译](#111-%E8%8B%B1%E6%96%87%E8%87%AA%E8%AF%91)\n        - [1.1.1.1 RTP/RTC协议部分](#1111-rtprtc%E5%8D%8F%E8%AE%AE%E9%83%A8%E5%88%86)\n        - [1.1.1.2 RTP纠错方式](#1112-rtp%E7%BA%A0%E9%94%99%E6%96%B9%E5%BC%8F)\n    - [1.2 RTP H264: rfc6184](#12-rtp-h264-rfc6184)\n- [2 QUIC](#2-quic)\n- [3 RTMP](#3-rtmp)\n\n个人webrtc sfu开源: [runner365/cpp_media_server](https://github.com/runner365/cpp_media_server)\n\ncpp media server是基于c++11开发的webrtc会议服务sfu，并且支持跨平台(linux/mac)。\n\ncpp media server同时支持多种流媒体协议: webrtc/rtmp/httpflv/hls/websocket flv\n\n\u003c!-- /TOC --\u003e\n# 1. webrtc方向\n\u0026emsp;\u0026emsp;webrtc技术栈比较长，内容比较多，如果只是拿一些开源来改改使用，无法真正的入门\u003cbr\u003e\nwebrtc的主要内容:\u003cbr/\u003e\n+ 音视频编解码\n+ RTP/RTCP传输\n+ P2P\n+ 各种信令协议\n+ QUIC协议(未来用QUIC替代UDP的可能性)\n\n开始自学英文协议文档方式，一点点的深入，一边提高英文能力，一边理解各种协议和具体实现。\u003cbr/\u003e\n首先，从关键的RTP/RTCP协议基础开始。\u003cbr/\u003e\n\n## 1.1 RTP/RTCP\n**RTP：Audio and video for the Internet.pdf**，这本书比较全面的介绍RTP/RTCP协议在互联网中的应用，通过对关键章节的翻译，逐步深入理解RTP/RTCP协议。\n## 1.1.1 英文自译\n原文: [RTP/RTCP for internet](https://github.com/runner365/read_book/blob/master/RTP_RTCP/RTP%EF%BC%9AAudio%20and%20video%20for%20the%20Internet.pdf)\u003cbr\u003e\n\n### 1.1.1.1 RTP/RTC协议部分\n自译文档连接:[RTP/RTC协议--精选翻译](https://github.com/runner365/read_book/blob/master/RTP_RTCP/RTP_RTCP%E5%8D%8F%E8%AE%AE%E5%86%85%E5%AE%B9--%E7%B2%BE%E9%80%89%E8%87%AA%E8%AF%91.md)\u003cbr/\u003e\n自译关键内容:\n* RTCP报文介绍: SR, RR, BYE, APP\n* JITTER计算方式\n* RTT计算方式\n\n### 1.1.1.2 RTP纠错方式\n自译文档链接:[RTP纠错方式](https://github.com/runner365/read_book/blob/master/RTP_RTCP/RTP%E7%BA%A0%E9%94%99%E6%9C%BA%E5%88%B6--%E7%B2%BE%E9%80%89%E8%87%AA%E8%AF%91.md)\u003cbr/\u003e\n自译关键内容:\n* RTP纠错方式: NACK\n* RTP纠错方式:FEC(前向纠错)\n\n## 1.2 RTP H264: rfc6184\n**RFC6184是RFC描述RTP协议如何承载H264**\u003cbr/\u003e\n对于视频，主要承载的就是H264报文，rfc6184就显得非常的核心和重要。\n原文:[RFC6184.pdf](https://github.com/runner365/read_book/blob/master/RTP_H264/rfc6184.pdf)\u003cbr/\u003e\n自译文档链接:[翻译: rfc6184-RTP Payload Format for H.264 Video](https://github.com/runner365/read_book/blob/master/RTP_H264/rfc6184%E8%87%AA%E8%AF%91.md)\u003cbr/\u003e\n翻译主要内容:\u003cbr/\u003e\n* RTP承载H264的主要几种方式\n* single NAL unit mode(单NAL单元模式)\n* STAP-A方式(同一时间和顺序的聚合模式)\n* FU-A(同一时间和顺序的分片模式)\n\n对于STAP-B，MTAP，FU-B等，因为当前没有应用场景，在实际工作中用不到，因此不进行翻译。\u003cbr/\u003e\n\n# 2 QUIC\n原文链接: [QUIC wire specification](https://docs.google.com/document/d/1WJvyZflAO2pq77yOLbp9NsGjC1CHetAXV8I0fQe-B_U/edit)\u003cbr/\u003e\n自译文档连接: [QUIC协议自译](https://github.com/runner365/read_book/blob/master/Quic/Quic_Wire_layout_specification_%E8%87%AA%E8%AF%91.md)\u003cbr/\u003e\n相关文档:\n* [draft-ietf-quic-transport-14](https://tools.ietf.org/html/draft-ietf-quic-transport-14)\n\n# 3 RTMP\n原文链接: [rtmp_specification_1.0.pdf](https://github.com/runner365/read_book/blob/master/rtmp/rtmp_specification_1.0.pdf)\u003cbr/\u003e\n\n自译文档连接: [rtmp协议自译](https://github.com/runner365/read_book/blob/master/rtmp/rtmp_specification_1.0_%E8%87%AA%E8%AF%91.md) \u003cbr/\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frunner365%2Fread_book","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frunner365%2Fread_book","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frunner365%2Fread_book/lists"}