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

流媒体 2016-08-24

并没有按照某种标准进行分类。 感兴趣的可以将其作为chrome书签=。= 【文末附上Bookmarks Json】

WebRTC

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

    native 2 browser

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

RTMP

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

ijkplayer[bilibili开源项目]

  1. issue讨论,基本是关于延迟问题 Help with Buffering Settings · Issue #1233 · Bilibili/ijkplayer ijkplayer/ff_ffplay_options.h at master · Bilibili/ijkplayer Too big delay on start playing · Issue #1106 · Bilibili/ijkplayer ijkplayer播放rtmp直播流,延迟明显 · Issue #210 · Bilibili/ijkplayer 那么如何缩小延迟呢, 修改 \ijkplayer-android-demo\ijkplayer-java\src\main\java\tv\danmaku\ijk\media\player\IjkMediaPlayer.javapublic 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【我就是直接用的他编译好的项目]]28

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

ffmpeg

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

vlc

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

    竞品分析

    音视频基础

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

RED5

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

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

EasyDarwin

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

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

SRS

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

WebSocket

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

    jsmpeg

    利用jsmpeg进行视频直播

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

其他文章

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

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

技术和水平有限,我会不断更新的=。= 以下解决方案都是不会考虑flash和浏览器插件的。 原生开发的话可以考虑ijkplayer,基于ffmpeg,编译可拔插,基本上支持RTMP、H264/AAC的so包不会超过4M

技术选型 描述 兼容性 备注
H5 WebSocket 利用JS进行编解码,目前没有完整的商业解决方案,同步这块我还在研究 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"
}

本文由 GaHingZ 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

如果对您有用,您的支持将鼓励我继续创作!