Gahing's blog Gahing's blog
首页
知识体系
  • 前端基础
  • 应用框架
  • 工程能力
  • 应用基础
  • 专业领域
  • 业务场景
  • 前端晋升 (opens new window)
  • Git
  • 网络基础
  • 算法
  • 数据结构
  • 编程范式
  • 编解码
  • Linux
  • AIGC
  • 其他领域

    • 客户端
    • 服务端
    • 产品设计
软素质
  • 面试经验
  • 人生总结
  • 个人简历
  • 知识卡片
  • 灵感记录
  • 实用技巧
  • 知识科普
  • 友情链接
  • 美食推荐 (opens new window)
  • 收藏夹

    • 优质前端信息源 (opens new window)
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Gahing / francecil

To be best
首页
知识体系
  • 前端基础
  • 应用框架
  • 工程能力
  • 应用基础
  • 专业领域
  • 业务场景
  • 前端晋升 (opens new window)
  • Git
  • 网络基础
  • 算法
  • 数据结构
  • 编程范式
  • 编解码
  • Linux
  • AIGC
  • 其他领域

    • 客户端
    • 服务端
    • 产品设计
软素质
  • 面试经验
  • 人生总结
  • 个人简历
  • 知识卡片
  • 灵感记录
  • 实用技巧
  • 知识科普
  • 友情链接
  • 美食推荐 (opens new window)
  • 收藏夹

    • 优质前端信息源 (opens new window)
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 前端基础

  • 应用框架

  • 工程能力

  • 应用基础

  • 专业领域

    • 服务端

    • 跨端技术

    • Web IDE

    • 中后台

    • 动效渲染

    • 可视化

    • 埋点监控

    • 多媒体

      • 业务场景

        • 云游戏

        • 直播

          • TryPlay_Android_架构
          • fiiser技术研究
          • 流媒体直播——资料整理、你想要了解的都在这
            • WebRTC
              • native 2 browser
            • RTMP
            • ijkplayer[bilibili开源项目]
            • ffmpeg
            • vlc
            • 竞品分析
            • 音视频基础
            • RED5
            • EasyDarwin
            • SRS
            • WebSocket
              • jsmpeg
            • 其他文章
            • 下面是我做流媒体技术选型时的一个简单整理。
            • 书签JSON:
      • 基础知识

    • 桌面技术

    • 游戏互动

    • 编辑器

    • 虚拟化与容器化

    • 设计系统

  • 业务场景

  • 大前端
  • 专业领域
  • 多媒体
  • 业务场景
  • 直播
gahing
2016/08/24
目录

流媒体直播——资料整理、你想要了解的都在这

并没有按照某种标准进行分类。

感兴趣的可以将其作为chrome书签=。=

【文末附上Bookmarks Json】

# WebRTC

  1. HTML5 视频直播(三) | JerryQu 的小站 (opens new window) 从这边开始了解的WebRTC,里面推荐的文章都可以去读读,后面书签可能不会提到。
  2. LingyuCoder/SkyRTC-demo: A simple demo used SkyRTC (opens new window) 别人做的一套WebRTC系统,支持音视频,房间,文件传输,在线聊天,了解WebRTC后其实发现也没有什么技术难点
  3. WebRTC中文网-最权威的RTC实时通信平台 (opens new window) 说是权威的中文网,其实里面讲的算是比较简单的东西,而且基本没有native的文章。一般文章都是老外的翻译,有时间可以上去看看,虽然一般是简单的 但是说不定有收获呢。
  4. Getting Started with WebRTC - HTML5 Rocks (opens new window) 看标题就知道了,入门必备,不过是英文的!1.中提到的推荐文章里面有这个
  5. WebRTC Home | WebRTC (opens new window) 官网
  6. BlogGeek.me • The leading authority on WebRTC【老外博客】 (opens new window) 有关WebRTC的,资料会比较新。
  7. Media Capture and Streams (opens new window) 讲解一些更具体的API参数以及用法,收益不大,API使用其他文章都可以学到
  8. 最简单的WebRTC示例 - 不急不徐,持之以恒。 - BlogJava (opens new window) demo,作为快速测试
  9. WebRTC模块分析博客 (opens new window) native版,写的不错,做native开发的值得看
  10. WebRTC源码及项目 (opens new window)
  11. 接收音视频流的参数设置 (opens new window)
  12. qq浏览器对h5的支持程度How well does x5 browser support HTML5? (opens new window)
  13. WebRTC 浏览器端demo包括样式 流记录之类的 (opens new window) 备着,以后应该会用到。
  14. WebRTC Mobile 支持程度 (opens new window) 可以看下
  15. WebRTC 在WebView的使用,全屏,触摸事件 (opens new window)
  16. windows下webrtc的编译 2016 - 张晖 - 博客频道 - CSDN.NET (opens new window)

# native 2 browser

  1. Is it possible to use WebRTC to streaming video from Server to Client? - Stack Overflow (opens new window) 可以看下讨论
  2. WebRTC Native c++ to web demo (opens new window) 看讨论成功借鉴
  3. WebRTC Native C++ to Browser (opens new window) 还未看代码,因为自己实现了

# RTMP

  1. [总结]RTMP流媒体技术零基础学习方法 [写的不错!] (opens new window) 雷神出品。这里说下题外话,感谢雷神对流媒体做出的贡献,愿天堂没有代码..
  2. rtmp在线测试播放wowza (opens new window) RTMP流测试播放,随时可用。

# ijkplayer[bilibili开源项目]

  1. issue讨论,基本是关于延迟问题 Help with Buffering Settings · Issue #1233 · Bilibili/ijkplayer (opens new window) ijkplayer/ff_ffplay_options.h at master · Bilibili/ijkplayer (opens new window) Too big delay on start playing · Issue #1106 · Bilibili/ijkplayer (opens new window) ijkplayer播放rtmp直播流,延迟明显 · Issue #210 · Bilibili/ijkplayer (opens new window) 那么如何缩小延迟呢, 修改 \ijkplayer-android-demo\ijkplayer-java\src\main\java\tv\danmaku\ijk\media\player\IjkMediaPlayer.java 中 public void setDataSource(String path, Map<String, String> headers)函数 后面添加:

         Log.i("zjx","set packet-buffering");
         setDataSource(path);
         setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "packet-buffering", 0);
         setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "fflags", "nobuffer");
         setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "max-buffer-size", 512*1024);
         setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "min-frames", 5);
         setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "start-on-prepared", 1);
         setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "probsize", "4096");
         setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "analyzeduration", "2000000");
    

因为ijkmediaplayer默认是作为点播播放器的,所以buffer之类的会开的比较大,直播就要进行相应的调整。测试结果,延迟<200ms

  1. ijkplayer在windows下编译并导入Android Studio【我就是直接用的他编译好的项目] (opens new window)

  2. ijkplayer的引入&介绍&使用/android音视频点/直播模块开发 - 简书 (opens new window) 可以看下

# ffmpeg

  1. [总结]FFMPEG视音频编解码零基础学习方法 - 雷霄骅(leixiaohua1020)的专栏 - 博客频道 - CSDN.NET (opens new window) 必看
  2. 命令 FFmpeg Devices Documentation#dshow win采集命令 (opens new window) ffmpeg 发送流媒体到rtsp/udp/rtmp等 命令 (opens new window) gdigrab抓屏采集,视频采集编码rtmp协议发送 命令 (opens new window) FFmpeg获取DirectShow设备数据(摄像头,录屏) (opens new window) 【audio设备乱码的真实名可以看这篇,其他的命令和上面书签都有重复】
  3. 最简单的基于FFmpeg的移动端例子:Android HelloWorld - (opens new window) 【成功运行显示数据,可以自己编so也可以直接用他的】
  4. 移植ffmpeg到android,编译可用于jni调用的so库. (opens new window) 【有参考,自己又写了一篇blog】
  5. CompilationGuide/Ubuntu – FFmpeg (opens new window) 【可以参考】
  6. audio类型 (PCM AAC),ffmpeg命令里指定pcm数据时缩写的含义 (opens new window)
  7. 最简单的视频网站(JavaEE+FFmpeg) (opens new window) 【新手入门第一个应用,不过看看效果就好了,没什么学习的帮助】

# vlc

  1. VLC播放RTSP视频延迟问题-garfield_trump-ChinaUnix博客 (opens new window)
  2. Vlc for Android 全面阐述 - banketree - 博客频道 - CSDN.NET (opens new window) 用vlc for android 的可以看下这篇。

# 竞品分析

略

# 音视频基础

  1. 音频 属性详解(涉及采样率、通道数、位数、比特率、帧等) - code06网 (opens new window)
  2. [总结]视音频编解码技术零基础学习方法 - 雷霄骅(leixiaohua1020)的专栏 - 博客频道 - CSDN.NET (opens new window) 必看。
  3. 视频编码原理简介 - 博客 - 伯乐在线 (opens new window) 和下面雷那这篇有点重了,不过这篇也可以看下。
  4. 编解码技术介绍 愷风(Wei)的专栏 - 博客频道 - CSDN.NET (opens new window) 对所有编码算法和容器的介绍吧,不介绍原理,也不介绍编码格式,只介绍历史之类的,不过有些信息百度不是那么容易找到。可看可不看。
  5. 视频压缩编码和音频压缩编码的基本原理 - 雷霄骅(leixiaohua1020)的专栏 - 博客频道 - CSDN.NET (opens new window) 必看
  6. FLV封装格式分析器 - 雷霄骅(leixiaohua1020)的专栏 - 博客频道 - CSDN.NET (opens new window)
  7. aac编码介绍_百度文库 (opens new window)

# RED5

一开始接触直播时服务器都是用的RED5【当然现在做rtmp开发一般也还是用的red5】

  1. 基于 Red5 的流媒体服务器的搭建和应用 (opens new window) 其实这篇我没什么看
  2. Red5 Pro配置及测试 (opens new window) 【Red5 Pro会比Red5更容易使用】
  3. 使用red5和OBS搞出自己的直播平台来挑战bilibili(B站) - 一名清官 - 博客频道 - CSDN.NET (opens new window) 听名字就知道是入门系列,作为入门来说是最好的。
  4. Creating Your First Red5 Application - Red5 Pro (opens new window) 官网教程,可看可不看。

# EasyDarwin

其实这套产品看上去不错,但是我没有用过。因为不符合我们的业务

  1. EasyDarwin - EasyDarwin文档中心 (opens new window)
  2. EasyDarwin/EasyDarwin: OPEN:高性能开源流媒体服务器,支持RTSP、HLS、HTTP直播 (opens new window)

# SRS

v2_CN_Home · ossrs/srs Wiki (opens new window) 这套服务器看上去是不错的,特别是里面有我想用的HTTP-FLV模块。 但是客户端这边他是依赖于flash来做解码的。 所以后面我就觉得那还是去WebSocket的方式吧,效果也比较可控,比较代码会比较了解。

# WebSocket

  1. langhuihui/H5RtmpClient (opens new window) 国人做的一套H5解决方案,由于源码毫无文档,基本不能借鉴,也没有运行成功。目前我正往这方面前进。
  2. illuspas/Node-Media-Server: A Node.js implementation of RTMP Server (opens new window) NodeJS的rtmp服务器,后面音视频封装协议的时候可以参考。
  3. 通过websocket接收的音频流,如何使用audio标签播放- (opens new window) 测试MP3不能播放 文件格式大小什么的需要考虑
  4. 使用JS实现RTMP协议直播 (opens new window) 刚刚说的那个做H5直播的国人的博客。
  5. 参考issue 成功实现AAC播放 . · Issue #48 · audiocogs/aurora.js (opens new window)
  6. audiocogs/aurora.js Wiki 一套完整的音频解码JS (opens new window)
  7. aurora-websocket插件 WebSocket audio streaming plugin for aurora.js (opens new window)

# jsmpeg

利用jsmpeg进行视频直播

  1. phoboslab/jsmpeg: MPEG1 Video Decoder in JavaScript (opens new window) 这是其github,用法什么的可以在这边看。
  2. HTML5 视频直播(二) | JerryQu 的小站 (opens new window) 从这边知道有这么个JS. 这篇文章也有讲怎么用,通俗易懂。
  3. kevinschaul/jsmpeg at feature/audio (opens new window) 其他人fork后做了一个feature版本用于支持音频然而【用的http请求没什么参考价值,后面自己实现ws播放PCM成功】

# 其他文章

  1. 观止云直播 - 博客频道 - CSDN.NET (opens new window) 里面会介绍观止云直播的一些解决方案
  2. 鏖战双十一-阿里直播平台面临的技术挑战 (opens new window) 比较考虑业务,如安全、弹幕这类的。
  3. Android Media and Camera (opens new window) 原生API对流媒体的支持程度
  4. 深入浅出看流媒体前世今生,分分钟二逼变牛逼 - 技术平台 - 流媒体网 (opens new window) 讲的还可以,能够现有的流媒体技术有个大体的了解。

# 下面是我做流媒体技术选型时的一个简单整理。

技术和水平有限,我会不断更新的=。= 以下解决方案都是不会考虑flash和浏览器插件的。

原生开发的话可以考虑ijkplayer,基于ffmpeg,编译可拔插,基本上支持RTMP、H264/AAC的so包不会超过4M

技术选型 描述 兼容性 备注
H5 WebSocket 利用JS进行编解码(jsmpeg,aurora),目前没有完整的商业解决方案 IE不支持,其他大部分浏览器都支持 有前景
Web无插件播放RTSP 目前只有firefox支持live rtsp,其他浏览器不支持;Android VideoView支持rtsp文件,不支持rtsp实时流,可采用ijkplayer 仅firefox,并且我没有测试过 听说还要出一个RTSP2标准了
Web无插件播放RTMP Html5<video>标签不支持RTMP,需要flash player 。Android VideoView 不支持rtmp,可采用ijkplayer 无适用 video.js仍然需要flash
HLS 延迟较大,降低延迟将加大服务器压力 大部分浏览器支持,苹果完全支持,Android 3.0+支持[直接用VideoView播放] 无
WebRTC 延迟小,跨平台,有前景,但目前支持的浏览器不多 Chrome29+、火狐47+、Opera 39+支持IE内核的浏览器、Edge、Safari不支持;Chrome for Android ,firefox for Android支持,Android WebView(5.0以上支持,4.4.3部分手机(samsung htc等)支持),手机自带浏览器(4.4.3以上部分厂商支持),QQ/UC/百度浏览器目前不支持,WP手机不支持(可以考虑后面兼容ORTC);苹果用户考虑安装chrome。 有前景
HTTP+FLV 目前直播最主要的解决方案,延迟<2S,其实有点类似WebSocket,HTTP+FLV是可以依赖于flash的,所以PC正常播放,移动Web的话,有人对其进行修改,估计也是进行js解码了 基本所有浏览器 有前景

# 书签JSON:

{
	"children": [
		{
			"children": [
				{
					"date_added": "13113462703329928",
					"id": "491",
					"name": "HTML5 视频直播(三) | JerryQu 的小站",
					"sync_transaction_version": "597",
					"type": "url",
					"url": "https://imququ.com/post/html5-live-player-3.html"
				}, {
					"date_added": "13113452866183134",
					"id": "487",
					"name": "LingyuCoder/SkyRTC-demo: A simple demo used SkyRTC",
					"sync_transaction_version": "598",
					"type": "url",
					"url": "https://github.com/LingyuCoder/SkyRTC-demo"
				}, {
					"date_added": "13113454481787310",
					"id": "488",
					"name": "WebRTC中文网-最权威的RTC实时通信平台",
					"sync_transaction_version": "599",
					"type": "url",
					"url": "http://webrtc.org.cn/"
				}, {
					"date_added": "13113455763479783",
					"id": "489",
					"name": "Getting Started with WebRTC - HTML5 Rocks",
					"sync_transaction_version": "600",
					"type": "url",
					"url": "http://www.html5rocks.com/en/tutorials/webrtc/basics/"
				}, {
					"date_added": "13113476654399248",
					"id": "492",
					"name": "WebRTC Home | WebRTC",
					"sync_transaction_version": "603",
					"type": "url",
					"url": "https://webrtc.org/"
				}, {
					"date_added": "13113478543413919",
					"id": "493",
					"name": "WebRTC API - Web API 接口 | MDN",
					"sync_transaction_version": "606",
					"type": "url",
					"url": "https://developer.mozilla.org/zh-CN/docs/Web/API/WebRTC_API"
				}, {
					"date_added": "13113478554114551",
					"id": "494",
					"name": "WebRTC - Web 開發者指引 | MDN",
					"sync_transaction_version": "609",
					"type": "url",
					"url": "https://developer.mozilla.org/zh-TW/docs/Web/Guide/API/WebRTC"
				}, {
					"date_added": "13113478966534107",
					"id": "495",
					"name": "Media Capture and Streams",
					"sync_transaction_version": "612",
					"type": "url",
					"url": "https://w3c.github.io/mediacapture-main/getusermedia.html"
				}, {
					"date_added": "13113479111074785",
					"id": "496",
					"name": "最简单的WebRTC示例 - 不急不徐,持之以恒。 - BlogJava",
					"sync_transaction_version": "614",
					"type": "url",
					"url": "http://www.blogjava.net/linli/archive/2014/10/21/418910.html"
				}, {
					"date_added": "13113480530031815",
					"id": "497",
					"name": "WebRTC模块分析博客 写的不错",
					"sync_transaction_version": "830",
					"type": "url",
					"url": "http://www.cnblogs.com/fangkm/category/670346.html"
				}, {
					"date_added": "13114593439338259",
					"id": "561",
					"name": "WebRTC源码及项目",
					"sync_transaction_version": "760",
					"type": "url",
					"url": "https://github.com/muaz-khan/WebRTC-Experiment"
				}, {
					"date_added": "13114661947006949",
					"id": "568",
					"name": "接收音视频流的参数设置",
					"sync_transaction_version": "774",
					"type": "url",
					"url": "https://tools.ietf.org/html/draft-alvestrand-constraints-resolution-00#page-6"
				}, {
					"date_added": "13114666836368586",
					"id": "570",
					"name": "qq浏览器对h5的支持程度How well does x5 browser support HTML5?",
					"sync_transaction_version": "782",
					"type": "url",
					"url": "http://res.imtt.qq.com/qqbrowser_x5/h5/v8.0/h5_support.htm"
				}, {
					"date_added": "13114678478862750",
					"id": "571",
					"name": "WebRTC 浏览器端demo包括样式 流记录之类的",
					"sync_transaction_version": "786",
					"type": "url",
					"url": "https://github.com/webrtc/samples"
				}, {
					"date_added": "13113889282475314",
					"id": "525",
					"name": "Is it possible to use WebRTC to streaming video from Server to Client? - Stack Overflow",
					"sync_transaction_version": "795",
					"type": "url",
					"url": "http://stackoverflow.com/questions/17552333/is-it-possible-to-use-webrtc-to-streaming-video-from-server-to-client"
				}, {
					"date_added": "13114517904945265",
					"id": "558",
					"name": "WebRTC Native c++ to web demo [看讨论成功借鉴,",
					"sync_transaction_version": "994",
					"type": "url",
					"url": "https://groups.google.com/forum/#!msg/discuss-webrtc/Pdas21qohck/CCRZTxPx5esJ"
				}, {
					"date_added": "13113650005578365",
					"id": "509",
					"name": "WebRTC Native C++ to Browser[还未看代码,因为自己实现了",
					"sync_transaction_version": "841",
					"type": "url",
					"url": "http://sourcey.com/webrtc-native-to-browser-video-streaming-example/"
				}, {
					"date_added": "13114690596278212",
					"id": "574",
					"name": "WebRTC Mobile 支持程度",
					"sync_transaction_version": "820",
					"type": "url",
					"url": "http://www.tutorialspoint.com/webrtc/webrtc_mobile_support.htm"
				}, {
					"date_added": "13114767584864111",
					"id": "580",
					"name": "WebRTC 在WebView的使用,全屏,触摸事件",
					"sync_transaction_version": "839",
					"type": "url",
					"url": "https://github.com/GoogleChrome/chromium-webview-samples"
				}, {
					"date_added": "13113643637152077",
					"id": "506",
					"name": "windows下webrtc的编译 2016 - 张晖 - 博客频道 - CSDN.NET",
					"sync_transaction_version": "995",
					"type": "url",
					"url": "http://blog.csdn.net/nonmarking/article/details/46785197"
				}, {
					"date_added": "13114855122833789",
					"id": "594",
					"name": "BlogGeek.me • The leading authority on WebRTC【老外博客】",
					"sync_transaction_version": "1059",
					"type": "url",
					"url": "https://bloggeek.me/"
				}
			],
			"date_added": "13113462686245057",
			"date_modified": "13115444886462470",
			"id": "490",
			"name": "WebRTC",
			"sync_transaction_version": "593",
			"type": "folder"
		}, {
			"children": [
				{
					"date_added": "13112272435590549",
					"id": "407",
					"name": "[总结]RTMP流媒体技术零基础学习方法 [写的不错!]",
					"sync_transaction_version": "888",
					"type": "url",
					"url": "http://blog.csdn.net/leixiaohua1020/article/details/15814587"
				}, {
					"date_added": "13113653020038405",
					"id": "510",
					"name": "rtmp在线测试播放wowza",
					"sync_transaction_version": "904",
					"type": "url",
					"url": "http://www.wowza.com/resources/3.5.0/examples/LiveVideoStreaming/FlashRTMPPlayer/player.html"
				}
			],
			"date_added": "13111577706985142",
			"date_modified": "13114771844206771",
			"id": "16",
			"name": "RTMP[纯讲这个的,否则就归入其他组]",
			"sync_transaction_version": "881",
			"type": "folder"
		}, {
			"children": [
				{
					"date_added": "13112782051707527",
					"id": "439",
					"name": "Help with Buffering Settings · Issue #1233 · Bilibili/ijkplayer",
					"sync_transaction_version": "419",
					"type": "url",
					"url": "https://github.com/Bilibili/ijkplayer/issues/1233"
				}, {
					"date_added": "13112782057660261",
					"id": "440",
					"name": "ijkplayer/ff_ffplay_options.h at master · Bilibili/ijkplayer",
					"sync_transaction_version": "422",
					"type": "url",
					"url": "https://github.com/Bilibili/ijkplayer/blob/master/ijkmedia/ijkplayer/ff_ffplay_options.h#L114"
				}, {
					"date_added": "13112782060979256",
					"id": "441",
					"name": "Too big delay on start playing · Issue #1106 · Bilibili/ijkplayer",
					"sync_transaction_version": "425",
					"type": "url",
					"url": "https://github.com/Bilibili/ijkplayer/issues/1106"
				}, {
					"date_added": "13112782063899411",
					"id": "442",
					"name": "ijkplayer播放rtmp直播流,延迟明显 · Issue #210 · Bilibili/ijkplayer",
					"sync_transaction_version": "428",
					"type": "url",
					"url": "https://github.com/Bilibili/ijkplayer/issues/210"
				}, {
					"date_added": "13112762225311574",
					"id": "435",
					"name": "ijkplayer在windows下编译并导入Android Studio【我就是直接用的他编译好的项目]",
					"sync_transaction_version": "885",
					"type": "url",
					"url": "http://blog.csdn.net/u010072711/article/details/51354834"
				}, {
					"date_added": "13112703447816808",
					"id": "432",
					"name": "ijkplayer的引入&介绍&使用/android音视频点/直播模块开发 - 简书",
					"sync_transaction_version": "879",
					"type": "url",
					"url": "http://www.jianshu.com/p/8436c7353296"
				}
			],
			"date_added": "13112782021507841",
			"date_modified": "13114770163783196",
			"id": "438",
			"name": "ijkplayer[bilibili开源项目]",
			"sync_transaction_version": "883",
			"type": "folder"
		}, {
			"children": [
				{
					"date_added": "13112446245896420",
					"id": "418",
					"name": "[总结]FFMPEG视音频编解码零基础学习方法 - 雷霄骅(leixiaohua1020)的专栏 - 博客频道 - CSDN.NET",
					"sync_transaction_version": "894",
					"type": "url",
					"url": "http://blog.csdn.net/leixiaohua1020/article/details/15811977"
				}, {
					"date_added": "13112033881317009",
					"id": "385",
					"name": "FFmpeg Devices Documentation#dshow win采集命令",
					"sync_transaction_version": "886",
					"type": "url",
					"url": "https://ffmpeg.org/ffmpeg-devices.html#dshow"
				}, {
					"date_added": "13112098376989131",
					"id": "390",
					"name": "ffmpeg 发送流媒体到rtsp/udp/rtmp等 命令",
					"sync_transaction_version": "892",
					"type": "url",
					"url": "https://ffmpeg.org/ffmpeg-all.html#rtsp"
				}, {
					"date_added": "13112355490224569",
					"id": "411",
					"name": "gdigrab抓屏采集,视频采集编码rtmp协议发送 命令",
					"sync_transaction_version": "893",
					"type": "url",
					"url": "http://www.cnblogs.com/wainiwann/p/4128154.html"
				}, {
					"date_added": "13112531655347495",
					"id": "421",
					"name": "最简单的基于FFmpeg的移动端例子:Android HelloWorld - 【成功运行显示数据,可以自己编so也可以直接用他的】",
					"sync_transaction_version": "896",
					"type": "url",
					"url": "http://blog.csdn.net/leixiaohua1020/article/details/47008825"
				}, {
					"date_added": "13112625045047452",
					"id": "425",
					"name": "移植ffmpeg到android,编译可用于jni调用的so库.【有参考,自己又写了一篇blog】",
					"sync_transaction_version": "897",
					"type": "url",
					"url": "https://github.com/dxjia/ffmpeg-compile-shared-library-for-android"
				}, {
					"date_added": "13112642530759864",
					"id": "427",
					"name": "CompilationGuide/Ubuntu – FFmpeg【可以参考】",
					"sync_transaction_version": "899",
					"type": "url",
					"url": "https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu"
				}, {
					"date_added": "13112876675250710",
					"id": "451",
					"name": "FFmpeg获取DirectShow设备数据(摄像头,录屏)【audio设备乱码的真实名可以看这篇,其他的命令和其他书签都有重复】",
					"sync_transaction_version": "895",
					"type": "url",
					"url": "http://blog.csdn.net/leixiaohua1020/article/details/38284961"
				}, {
					"date_added": "13113886157396632",
					"id": "524",
					"name": "audio类型 (PCM AAC),ffmpeg命令里指定pcm数据时缩写的含义",
					"sync_transaction_version": "902",
					"type": "url",
					"url": "https://trac.ffmpeg.org/wiki/audio%20types"
				}, {
					"date_added": "13109230127960109",
					"id": "355",
					"name": "最简单的视频网站(JavaEE+FFmpeg)【新手入门第一个应用,不过看看效果就好了,没什么学习的帮助】",
					"sync_transaction_version": "901",
					"type": "url",
					"url": "http://blog.csdn.net/leixiaohua1020/article/details/43870599"
				}
			],
			"date_added": "13113041308166155",
			"date_modified": "13116415773337933",
			"id": "462",
			"name": "ffmpeg",
			"sync_transaction_version": "491",
			"type": "folder"
		}, {
			"children": [
				{
					"date_added": "13112030857137550",
					"id": "382",
					"name": "phoboslab/jsmpeg: MPEG1 Video Decoder in JavaScript",
					"sync_transaction_version": "497",
					"type": "url",
					"url": "https://github.com/phoboslab/jsmpeg"
				}, {
					"date_added": "13112007882031863",
					"id": "381",
					"name": "HTML5 视频直播(二) | JerryQu 的小站",
					"sync_transaction_version": "498",
					"type": "url",
					"url": "https://imququ.com/post/html5-live-player-2.html"
				}, {
					"date_added": "13113044479616838",
					"id": "467",
					"name": "kevinschaul/jsmpeg at feature/audio【用的http请求没什么参考价值,后面自己实现ws播放PCM成功】",
					"sync_transaction_version": "906",
					"type": "url",
					"url": "https://github.com/kevinschaul/jsmpeg/tree/feature/audio"
				}, {
					"date_added": "13113043079921347",
					"id": "466",
					"name": "audiocogs/mp3.js: A JavaScript MP3 decoder for Aurora.js[还没使用]",
					"sync_transaction_version": "907",
					"type": "url",
					"url": "https://github.com/audiocogs/mp3.js"
				}
			],
			"date_added": "13113041334403824",
			"date_modified": "13114691190080078",
			"id": "463",
			"name": "jsmpeg[mpeg编解码实现画面直播]",
			"sync_transaction_version": "903",
			"type": "folder"
		}, {
			"children": [
				{
					"date_added": "13111662621346305",
					"id": "370",
					"name": "Integrating mNectar using a Native Android SDK — mNectar Support documentation",
					"sync_transaction_version": "504",
					"type": "url",
					"url": "http://support.mnectar.com/publishers/android/mnectarsdk/native.html"
				}, {
					"date_added": "13111668169618559",
					"id": "373",
					"name": "mNectar | Applications",
					"sync_transaction_version": "505",
					"type": "url",
					"url": "https://pub.mnectar.com/v2/pm/apps"
				}, {
					"date_added": "13111665650703175",
					"id": "372",
					"name": "MRAID扩展协议 - missyou 专栏 - 博客频道 - CSDN.NET",
					"sync_transaction_version": "506",
					"type": "url",
					"url": "http://blog.csdn.net/gaoqiv0447/article/details/46618365"
				}, {
					"date_added": "13111834536618303",
					"id": "376",
					"name": "GitHub - VMFive/adplay-web-sdk-demo",
					"sync_transaction_version": "507",
					"type": "url",
					"url": "https://github.com/VMFive/adplay-web-sdk-demo"
				}, {
					"date_added": "13111834565183148",
					"id": "377",
					"name": "mnectarinc · GitHub",
					"sync_transaction_version": "508",
					"type": "url",
					"url": "https://github.com/mnectarinc"
				}, {
					"date_added": "13112357464675332",
					"id": "412",
					"name": "SDK小,商业RTMP Client ",
					"sync_transaction_version": "522",
					"type": "url",
					"url": "http://www.nodemedia.cn/doc/%E7%AE%80%E4%BB%8B"
				}, {
					"date_added": "13113020499274967",
					"id": "459",
					"name": "帮助文档_开放平台_夜神安卓模拟器",
					"sync_transaction_version": "908",
					"type": "url",
					"url": "http://dev.noxphone.com/application/doc?type=client"
				}, {
					"date_added": "13113021878734088",
					"id": "460",
					"name": "夜神公司的js 可参看",
					"sync_transaction_version": "530",
					"type": "url",
					"url": "http://access.noxphone.com/js/NoxCloudPhone.min.js"
				}
			],
			"date_added": "13113041369785043",
			"date_modified": "13113043079921347",
			"id": "464",
			"name": "竞品",
			"sync_transaction_version": "503",
			"type": "folder"
		}, {
			"children": [
				{
					"date_added": "13112076652281998",
					"id": "388",
					"name": "VLC播放RTSP视频延迟问题-garfield_trump-ChinaUnix博客",
					"sync_transaction_version": "514",
					"type": "url",
					"url": "http://blog.chinaunix.net/uid-20671208-id-3755470.html"
				}, {
					"date_added": "13109183062278069",
					"id": "354",
					"name": "Vlc for Android 全面阐述 - banketree - 博客频道 - CSDN.NET",
					"sync_transaction_version": "860",
					"type": "url",
					"url": "http://blog.csdn.net/banketree/article/details/39575973"
				}
			],
			"date_added": "13113041405405258",
			"date_modified": "13114769084905304",
			"id": "465",
			"name": "vlc",
			"sync_transaction_version": "513",
			"type": "folder"
		}, {
			"children": [
				{
					"date_added": "13113884215111729",
					"id": "523",
					"name": "音频 属性详解(涉及采样率、通道数、位数、比特率、帧等) - code06网",
					"sync_transaction_version": "664",
					"type": "url",
					"url": "http://www.code06.com/other/aoshilang2249/92451.html"
				}, {
					"date_added": "13112444209807667",
					"id": "417",
					"name": "[总结]视音频编解码技术零基础学习方法 - 雷霄骅(leixiaohua1020)的专栏 - 博客频道 - CSDN.NET",
					"sync_transaction_version": "880",
					"type": "url",
					"url": "http://blog.csdn.net/leixiaohua1020/article/details/18893769"
				}, {
					"date_added": "13101623361247230",
					"id": "313",
					"name": "视频编码原理简介 - 博客 - 伯乐在线",
					"sync_transaction_version": "1002",
					"type": "url",
					"url": "http://blog.jobbole.com/95862/"
				}, {
					"date_added": "13115902958125694",
					"id": "677",
					"name": "编解码技术介绍 愷风(Wei)的专栏 - 博客频道 - CSDN.NET",
					"sync_transaction_version": "1260",
					"type": "url",
					"url": "http://blog.csdn.net/flowingflying/article/month/2010/07"
				}, {
					"date_added": "13115962607276122",
					"id": "680",
					"name": "视频压缩编码和音频压缩编码的基本原理 - 雷霄骅(leixiaohua1020)的专栏 - 博客频道 - CSDN.NET",
					"sync_transaction_version": "1263",
					"type": "url",
					"url": "http://blog.csdn.net/leixiaohua1020/article/details/28114081"
				}, {
					"date_added": "13115978781923325",
					"id": "681",
					"name": "FLV封装格式分析器 - 雷霄骅(leixiaohua1020)的专栏 - 博客频道 - CSDN.NET",
					"sync_transaction_version": "1267",
					"type": "url",
					"url": "http://blog.csdn.net/leixiaohua1020/article/details/17934487"
				}, {
					"date_added": "13116483060559062",
					"id": "711",
					"name": "aac编码介绍_百度文库",
					"sync_transaction_version": "1354",
					"type": "url",
					"url": "http://wenku.baidu.com/view/0de48034f111f18583d05a65.html"
				}
			],
			"date_added": "13113884201796385",
			"date_modified": "13116483065958840",
			"id": "521",
			"name": "音视频基础",
			"sync_transaction_version": "662",
			"type": "folder"
		}, {
			"children": [
				{
					"date_added": "13113218690999115",
					"id": "473",
					"name": "langhuihui/H5RtmpClient",
					"sync_transaction_version": "791",
					"type": "url",
					"url": "https://github.com/langhuihui/H5RtmpClient"
				}, {
					"date_added": "13113219351831260",
					"id": "474",
					"name": "illuspas/Node-Media-Server: A Node.js implementation of RTMP Server",
					"sync_transaction_version": "792",
					"type": "url",
					"url": "https://github.com/illuspas/Node-Media-Server"
				}, {
					"date_added": "13112963192356543",
					"id": "454",
					"name": "通过websocket接收的音频流,如何使用audio标签播放-测试MP3不能播放 文件格式大小什么的需要考虑",
					"sync_transaction_version": "1341",
					"type": "url",
					"url": "http://bbs.csdn.net/topics/391819855"
				}, {
					"date_added": "13113217892050897",
					"id": "472",
					"name": "使用JS实现RTMP协议直播",
					"sync_transaction_version": "806",
					"type": "url",
					"url": "http://my.oschina.net/langhuihui/blog"
				}, {
					"date_added": "13116414665452336",
					"id": "706",
					"name": "参考issue 成功实现AAC播放 . · Issue #48 · audiocogs/aurora.js",
					"sync_transaction_version": "1337",
					"type": "url",
					"url": "https://github.com/audiocogs/aurora.js/issues/48"
				}, {
					"date_added": "13116394153581764",
					"id": "702",
					"name": "audiocogs/aurora.js Wiki 一套完整的音频解码JS",
					"sync_transaction_version": "1340",
					"type": "url",
					"url": "https://github.com/audiocogs/aurora.js/wiki"
				}, {
					"date_added": "13116480353611833",
					"id": "710",
					"name": "aurora-websocket插件 WebSocket audio streaming plugin for aurora.js",
					"sync_transaction_version": "1350",
					"type": "url",
					"url": "https://github.com/fabienbrooke/aurora-websocket"
				}
			],
			"date_added": "13114683602955114",
			"date_modified": "13116483060559062",
			"id": "572",
			"name": "WebSocket",
			"sync_transaction_version": "797",
			"type": "folder"
		}, {
			"children": [],
			"date_added": "13114768048613751",
			"date_modified": "13114768196400213",
			"id": "581",
			"name": "HLS",
			"sync_transaction_version": "844",
			"type": "folder"
		}, {
			"children": [
				{
					"date_added": "13109021383226132",
					"id": "351",
					"name": "基于 Red5 的流媒体服务器的搭建和应用",
					"sync_transaction_version": "851",
					"type": "url",
					"url": "http://www.ibm.com/developerworks/cn/opensource/os-cn-Red5/"
				}, {
					"date_added": "13110289117401478",
					"id": "362",
					"name": "Red5 Pro配置及测试【Red5 Pro会比Red5更容易使用】",
					"sync_transaction_version": "864",
					"type": "url",
					"url": "http://blog.csdn.net/kinglong68/article/details/50848785"
				}, {
					"date_added": "13114770064241261",
					"id": "585",
					"name": "使用red5和OBS搞出自己的直播平台来挑战bilibili(B站) - 一名清官 - 博客频道 - CSDN.NET",
					"sync_transaction_version": "869",
					"type": "url",
					"url": "http://blog.csdn.net/wk313753744/article/details/50458360"
				}, {
					"date_added": "13110221725552373",
					"id": "361",
					"name": "Creating Your First Red5 Application - Red5 Pro",
					"sync_transaction_version": "876",
					"type": "url",
					"url": "https://www.red5pro.com/docs/server/red5prolive/"
				}
			],
			"date_added": "13114768638797469",
			"date_modified": "13114770140782156",
			"id": "582",
			"name": "Red5",
			"sync_transaction_version": "850",
			"type": "folder"
		}, {
			"children": [
				{
					"date_added": "13109022139149196",
					"id": "353",
					"name": "EasyDarwin - EasyDarwin文档中心",
					"sync_transaction_version": "856",
					"type": "url",
					"url": "http://doc.easydarwin.org/EasyDarwin/README/"
				}, {
					"date_added": "13114768877093516",
					"id": "584",
					"name": "EasyDarwin/EasyDarwin: OPEN:高性能开源流媒体服务器,支持RTSP、HLS、HTTP直播",
					"sync_transaction_version": "859",
					"type": "url",
					"url": "https://github.com/EasyDarwin/EasyDarwin"
				}
			],
			"date_added": "13114768850751352",
			"date_modified": "13114768877093516",
			"id": "583",
			"name": "EasyDarwin",
			"sync_transaction_version": "855",
			"type": "folder"
		}, {
			"children": [
				{
					"date_added": "13116065354065376",
					"id": "687",
					"name": "v2_CN_Home · ossrs/srs Wiki",
					"sync_transaction_version": "1320",
					"type": "url",
					"url": "https://github.com/ossrs/srs/wiki/v2_CN_Home"
				}
			],
			"date_added": "13116400435306683",
			"date_modified": "13116400435306897",
			"id": "704",
			"name": "SRS",
			"sync_transaction_version": "1322",
			"type": "folder"
		}, {
			"date_added": "13115727320729413",
			"id": "657",
			"name": "观止云直播 - 博客频道 - CSDN.NET",
			"sync_transaction_version": "1171",
			"type": "url",
			"url": "http://blog.csdn.net/charleslei?viewmode=contents"
		}, {
			"date_added": "13112163617867209",
			"id": "398",
			"name": "鏖战双十一-阿里直播平台面临的技术挑战",
			"sync_transaction_version": "1172",
			"type": "url",
			"url": "http://www.infoq.com/cn/articles/alibaba-broadcast-platform-technology-challenges"
		}, {
			"date_added": "13112096770353514",
			"id": "389",
			"name": "Android Media and Camera 原生API对流媒体的支持程度",
			"sync_transaction_version": "1173",
			"type": "url",
			"url": "https://developer.android.com/guide/appendix/media-formats.html#network"
		}, {
			"date_added": "13116067904989673",
			"id": "688",
			"name": "深入浅出看流媒体前世今生,分分钟二逼变牛逼 - 技术平台 - 流媒体网",
			"sync_transaction_version": "1286",
			"type": "url",
			"url": "http://tech.lmtw.com/technews/201504/115637.html"
		}
	],
	"date_added": "13111659536756641",
	"date_modified": "13116414650884522",
	"id": "369",
	"name": "直播",
	"sync_transaction_version": "588",
	"type": "folder"
}
编辑 (opens new window)
#WebRTC#ffmpeg
上次更新: 2025/06/11, 23:06:59
fiiser技术研究
H5视频直播—JSMPEG源码解析、视频压缩编码、MPEG-1标准

← fiiser技术研究 H5视频直播—JSMPEG源码解析、视频压缩编码、MPEG-1标准→

最近更新
01
我的 2024 总结
12-31
02
浅谈代码质量与量化指标
08-27
03
快速理解 JS 装饰器
08-26
更多文章>
Theme by Vdoing | Copyright © 2016-2025 Gahing | 闽ICP备19024221号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式