Ustream mp4
by
noromanba
2015-06-21 [2015/06/21 07:17:01]
flash-free Ustream
/*
* @title Ustream mp4
* @description flash-free Ustream
* @include http://www.ustream.tv/*
* @license MIT License http://opensource.org/licenses/MIT
* @javascript_url
*/
// e.g.
// http://www.ustream.tv/channel/ubuntu-offline-meeting-1506
// http://iphone-streaming.ustream.tv/ustreamVideo/20760528/streams/live/playlist.m3u8
(function () {
// ustream:channel_id
// <meta name="ustream:channel_id" content="20760528">
//*
var id = (document.querySelector('meta[name="ustream:channel_id"][content]') || {}).content;
/*/
// data-content-id
var id;
Array.prototype.some.call(document.querySelectorAll('[data-content-id]'), function (node) {
if (id = node.dataset.contentId) {
return true;
}
});
//*/
if (!id) return;
// HTML5 HLS endpoint (http only)
// http://iphone-streaming.ustream.tv/uhls/CHANNEL_ID/streams/live/iphone/playlist.m3u8
// http://iphone-streaming.ustream.tv/ustreamVideo/CHANNEL_ID/streams/live/playlist.m3u8
var HLS_URL = [
'http://iphone-streaming.ustream.tv/uhls/',
id,
'/streams/live/playlist.m3u8'
].join('');
// TODO open in same tab/window, but couldn't X-domain GET
// not provide CORS; 'Access-Control-Allow-Origin'
// cleanup c.f. http://jsperf.com/innerhtml-vs-removechild/157
/*/
var body = document.body;
while (body.firstChild) { // TBD range
body.removeChild(body.firstChild);
}
var video = document.createElement('video');
video.src = HLS_URL;
document.body.appendChild(video);
/*/
// TBD window.open()
// open w/ mplayer, vlc et al.
window.prompt('streaming URL', HLS_URL);
//*/
})();
- Permalink
- このページへの個別リンクです。
- RAW
- 書かれたコードへの直接のリンクです。
- Packed
- 文字列が圧縮された書かれたコードへのリンクです。
- Userscript
- Greasemonkey 等で利用する場合の .user.js へのリンクです。
- Loader
- @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
- Metadata
- コード中にコメントで @xxx と書かれたメタデータの JSON です。