流媒体直播——资料整理、你想要了解的都在这
并没有按照某种标准进行分类。
感兴趣的可以将其作为chrome书签=。=
【文末附上Bookmarks Json】
# WebRTC
- HTML5 视频直播(三) | JerryQu 的小站 (opens new window) 从这边开始了解的WebRTC,里面推荐的文章都可以去读读,后面书签可能不会提到。
- LingyuCoder/SkyRTC-demo: A simple demo used SkyRTC (opens new window) 别人做的一套WebRTC系统,支持音视频,房间,文件传输,在线聊天,了解WebRTC后其实发现也没有什么技术难点
- WebRTC中文网-最权威的RTC实时通信平台 (opens new window) 说是权威的中文网,其实里面讲的算是比较简单的东西,而且基本没有native的文章。一般文章都是老外的翻译,有时间可以上去看看,虽然一般是简单的 但是说不定有收获呢。
- Getting Started with WebRTC - HTML5 Rocks (opens new window) 看标题就知道了,入门必备,不过是英文的!1.中提到的推荐文章里面有这个
- WebRTC Home | WebRTC (opens new window) 官网
- BlogGeek.me • The leading authority on WebRTC【老外博客】 (opens new window) 有关WebRTC的,资料会比较新。
- Media Capture and Streams (opens new window) 讲解一些更具体的API参数以及用法,收益不大,API使用其他文章都可以学到
- 最简单的WebRTC示例 - 不急不徐,持之以恒。 - BlogJava (opens new window) demo,作为快速测试
- WebRTC模块分析博客 (opens new window) native版,写的不错,做native开发的值得看
- WebRTC源码及项目 (opens new window)
- 接收音视频流的参数设置 (opens new window)
- qq浏览器对h5的支持程度How well does x5 browser support HTML5? (opens new window)
- WebRTC 浏览器端demo包括样式 流记录之类的 (opens new window) 备着,以后应该会用到。
- WebRTC Mobile 支持程度 (opens new window) 可以看下
- WebRTC 在WebView的使用,全屏,触摸事件 (opens new window)
- windows下webrtc的编译 2016 - 张晖 - 博客频道 - CSDN.NET (opens new window)
# native 2 browser
- Is it possible to use WebRTC to streaming video from Server to Client? - Stack Overflow (opens new window) 可以看下讨论
- WebRTC Native c++ to web demo (opens new window) 看讨论成功借鉴
- WebRTC Native C++ to Browser (opens new window) 还未看代码,因为自己实现了
# RTMP
- [总结]RTMP流媒体技术零基础学习方法 [写的不错!] (opens new window) 雷神出品。这里说下题外话,感谢雷神对流媒体做出的贡献,愿天堂没有代码..
- rtmp在线测试播放wowza (opens new window) RTMP流测试播放,随时可用。
# ijkplayer[bilibili开源项目]
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
ijkplayer在windows下编译并导入Android Studio【我就是直接用的他编译好的项目] (opens new window)
ijkplayer的引入&介绍&使用/android音视频点/直播模块开发 - 简书 (opens new window) 可以看下
# ffmpeg
- [总结]FFMPEG视音频编解码零基础学习方法 - 雷霄骅(leixiaohua1020)的专栏 - 博客频道 - CSDN.NET (opens new window) 必看
- 命令 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设备乱码的真实名可以看这篇,其他的命令和上面书签都有重复】
- 最简单的基于FFmpeg的移动端例子:Android HelloWorld - (opens new window) 【成功运行显示数据,可以自己编so也可以直接用他的】
- 移植ffmpeg到android,编译可用于jni调用的so库. (opens new window) 【有参考,自己又写了一篇blog】
- CompilationGuide/Ubuntu – FFmpeg (opens new window) 【可以参考】
- audio类型 (PCM AAC),ffmpeg命令里指定pcm数据时缩写的含义 (opens new window)
- 最简单的视频网站(JavaEE+FFmpeg) (opens new window) 【新手入门第一个应用,不过看看效果就好了,没什么学习的帮助】
# vlc
- VLC播放RTSP视频延迟问题-garfield_trump-ChinaUnix博客 (opens new window)
- Vlc for Android 全面阐述 - banketree - 博客频道 - CSDN.NET (opens new window) 用vlc for android 的可以看下这篇。
# 竞品分析
略
# 音视频基础
- 音频 属性详解(涉及采样率、通道数、位数、比特率、帧等) - code06网 (opens new window)
- [总结]视音频编解码技术零基础学习方法 - 雷霄骅(leixiaohua1020)的专栏 - 博客频道 - CSDN.NET (opens new window) 必看。
- 视频编码原理简介 - 博客 - 伯乐在线 (opens new window) 和下面雷那这篇有点重了,不过这篇也可以看下。
- 编解码技术介绍 愷风(Wei)的专栏 - 博客频道 - CSDN.NET (opens new window) 对所有编码算法和容器的介绍吧,不介绍原理,也不介绍编码格式,只介绍历史之类的,不过有些信息百度不是那么容易找到。可看可不看。
- 视频压缩编码和音频压缩编码的基本原理 - 雷霄骅(leixiaohua1020)的专栏 - 博客频道 - CSDN.NET (opens new window) 必看
- FLV封装格式分析器 - 雷霄骅(leixiaohua1020)的专栏 - 博客频道 - CSDN.NET (opens new window)
- aac编码介绍_百度文库 (opens new window)
# RED5
一开始接触直播时服务器都是用的RED5【当然现在做rtmp开发一般也还是用的red5】
- 基于 Red5 的流媒体服务器的搭建和应用 (opens new window) 其实这篇我没什么看
- Red5 Pro配置及测试 (opens new window) 【Red5 Pro会比Red5更容易使用】
- 使用red5和OBS搞出自己的直播平台来挑战bilibili(B站) - 一名清官 - 博客频道 - CSDN.NET (opens new window) 听名字就知道是入门系列,作为入门来说是最好的。
- Creating Your First Red5 Application - Red5 Pro (opens new window) 官网教程,可看可不看。
# EasyDarwin
其实这套产品看上去不错,但是我没有用过。因为不符合我们的业务
- EasyDarwin - EasyDarwin文档中心 (opens new window)
- EasyDarwin/EasyDarwin: OPEN:高性能开源流媒体服务器,支持RTSP、HLS、HTTP直播 (opens new window)
# SRS
v2_CN_Home · ossrs/srs Wiki (opens new window) 这套服务器看上去是不错的,特别是里面有我想用的HTTP-FLV模块。 但是客户端这边他是依赖于flash来做解码的。 所以后面我就觉得那还是去WebSocket的方式吧,效果也比较可控,比较代码会比较了解。
# WebSocket
- langhuihui/H5RtmpClient (opens new window) 国人做的一套H5解决方案,由于源码毫无文档,基本不能借鉴,也没有运行成功。目前我正往这方面前进。
- illuspas/Node-Media-Server: A Node.js implementation of RTMP Server (opens new window) NodeJS的rtmp服务器,后面音视频封装协议的时候可以参考。
- 通过websocket接收的音频流,如何使用audio标签播放- (opens new window) 测试MP3不能播放 文件格式大小什么的需要考虑
- 使用JS实现RTMP协议直播 (opens new window) 刚刚说的那个做H5直播的国人的博客。
- 参考issue 成功实现AAC播放 . · Issue #48 · audiocogs/aurora.js (opens new window)
- audiocogs/aurora.js Wiki 一套完整的音频解码JS (opens new window)
- aurora-websocket插件 WebSocket audio streaming plugin for aurora.js (opens new window)
# jsmpeg
利用jsmpeg进行视频直播
- phoboslab/jsmpeg: MPEG1 Video Decoder in JavaScript (opens new window) 这是其github,用法什么的可以在这边看。
- HTML5 视频直播(二) | JerryQu 的小站 (opens new window) 从这边知道有这么个JS. 这篇文章也有讲怎么用,通俗易懂。
- kevinschaul/jsmpeg at feature/audio (opens new window) 其他人fork后做了一个feature版本用于支持音频然而【用的http请求没什么参考价值,后面自己实现ws播放PCM成功】
# 其他文章
- 观止云直播 - 博客频道 - CSDN.NET (opens new window) 里面会介绍观止云直播的一些解决方案
- 鏖战双十一-阿里直播平台面临的技术挑战 (opens new window) 比较考虑业务,如安全、弹幕这类的。
- Android Media and Camera (opens new window) 原生API对流媒体的支持程度
- 深入浅出看流媒体前世今生,分分钟二逼变牛逼 - 技术平台 - 流媒体网 (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"
}