Skip to content
This repository has been archived by the owner on Apr 2, 2020. It is now read-only.

Commit

Permalink
[flv] size reduce
Browse files Browse the repository at this point in the history
  • Loading branch information
myfreeer authored Nov 27, 2016
1 parent 75faf08 commit 7886d31
Showing 1 changed file with 0 additions and 349 deletions.
349 changes: 0 additions & 349 deletions bundle.js
Original file line number Diff line number Diff line change
Expand Up @@ -336,7 +336,6 @@
});
}
exports.playUrl = playUrl;
exports.end = mediaSource.end;
let cmd = {};

cmd.youku = youku;
Expand Down Expand Up @@ -381,328 +380,6 @@
}

cmd.playUrl = playUrl;

cmd.testXhr = () => {
var xhr = new XMLHttpRequest();
xhr.open('GET', localhost+'projectindex-0.flv');
setTimeout(() => xhr.abort(), 100);
xhr.onload = function(e) {
console.log(this.status);
console.log(this.response.length);
}
xhr.onerror = function() {
console.log('onerror')
}
xhr.send();
}

cmd.testWriteFile = () => {
let errfunc = e => console.error(e);
webkitRequestFileSystem(TEMPORARY, 1*1024*1024*1024, fs => {
fs.root.getFile('tmp.bin', {create:true}, file => {
file.createWriter(writer => {
writer.onwrittend = () => console.log('write complete');
//writer.truncate(1024*1024);
for (let i = 0; i < 1024*1024*10; i++) {
let u8 = new Uint8Array([0x65,0x65,0x65,0x65]);
writer.write(new Blob([u8]));
}
let a = document.createElement('a');
a.href = file.toURL();
a.download = 'a.txt';
document.body.appendChild(a);
a.click();
});
}, errfunc);
}, errfunc);
}

cmd.testfetch = () => {
let dbp = console.log.bind(console)

let parser = new flvdemux.InitSegmentParser();
let total = 0;
let pump = reader => {
return reader.read().then(res => {
if (res.done) {
dbp('parser: EOF');
return;
}
let chunk = res.value;
total += chunk.byteLength;
dbp(`parser: incoming ${chunk.byteLength}`);
let done = parser.push(chunk);
if (done) {
dbp('parser: finished', done);
reader.cancel();
return done;
} else {
return pump(reader);
}
});
}

let headers = new Headers();
headers.append('Range', 'bytes=0-400000');
fetch(`http://27.221.48.172/youku/65723A1CDA44683D499698466F/030001290051222DE95D6C055EEB3EBFDE3F09-E65E-1E0A-218C-3CDFACC4F973.flv`, {headers}).then(res => pump(res.body.getReader()))
.then(res => console.log(res));
}

cmd.testInitSegment = () => {
let dbp = console.log.bind(console)

let meta;
let fetchseg = seg => {
return fetch(localhost+'test-fragmented.mp4', {headers: {
Range: `bytes=${seg.offset}-${seg.offset+seg.size-1}`,
}}).then(res=>res.arrayBuffer());
}

fetch(localhost+'test-fragmented-manifest.json').then(res=>res.json()).then(res => {
meta = res;
dbp('meta', meta);
}).then(res => {
res = new Uint8Array(res);

let mediaSource = new MediaSource();
let video = document.createElement('video');
document.body.appendChild(video);

video.src = URL.createObjectURL(mediaSource);
video.autoplay = true;

video.addEventListener('loadedmetadata', () => {
dbp('loadedmetadata', video.duration);
});

let sourceBuffer;
mediaSource.addEventListener('sourceopen', e => {
dbp('sourceopen');
if (mediaSource.sourceBuffers.length > 0)
return;
let codecType = meta.type;
sourceBuffer = mediaSource.addSourceBuffer(codecType);
sourceBuffer.mode = 'sequence';
sourceBuffer.addEventListener('error', () => dbp('sourceBuffer: error'));
sourceBuffer.addEventListener('abort', () => dbp('sourceBuffer: abort'));
sourceBuffer.addEventListener('update', () => {
dbp('sourceBuffer: update');
})
sourceBuffer.addEventListener('updateend', () => {
let ranges = [];
let buffered = sourceBuffer.buffered;
for (let i = 0; i < buffered.length; i++) {
ranges.push([buffered.start(i), buffered.end(i)]);
}
dbp('sourceBuffer: updateend');
dbp('buffered', JSON.stringify(ranges), 'duration', video.duration);
});
fetchseg(meta.init).then(() => {
sourceBuffer.appendBuffer(res);
return fetchseg(meta.media[1]).then(res => {
dbp(res.byteLength);
sourceBuffer.appendBuffer(res);
});
});
})
mediaSource.addEventListener('sourceended', () => dbp('mediaSource: sourceended'))
mediaSource.addEventListener('sourceclose', () => dbp('mediaSource: sourceclose'))
}).catch(e => {
console.error(e);
});
}

cmd.testPlayer = () => {
let player = createPlayer();
player.video.src = localhost+'projectindex.mp4';
player.video.muted = true;
}
//cmd.testPlayer();

cmd.testCanvasSpeed = () => {
let canvas = document.createElement('canvas');
canvas.width = 1280;
canvas.height = 800;
let ctx = canvas.getContext('2d');

let line = [];
for (let i = 0; i < 3; i++) {
let c = document.createElement('canvas');
c.width = 100;
c.height = 100;
line.push(c);
}
console.log('canvas', canvas.width, canvas.height);

var _RAF = window.requestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.msRequestAnimationFrame ||
window.oRequestAnimationFrame ||
function(cb) { return setTimeout(cb, 17); };

setInterval(() => {
line.forEach(c => {
ctx.drawImage(c, 0, 0);
console.log('draw');
});
}, 1000/24);
}

cmd.testCssTransition = () => {
let freelist = [];
const FONTSIZE = 25;
const ROWS = 50;
let currow = 0;

let container = document.createElement('div');
container.style.width = '100%';
container.style.height = '100%';
document.body.appendChild(container);

for (let i = 0; i < 200; i++) {
let p = document.createElement('canvas');
p.width = 1;
p.height = 1;
p.style.position = 'absolute';
p.style.backgroundColor = 'transparent';
container.appendChild(p);
freelist.push(p);
}

let emit = ({text, pos, color, shadow}) => {
if (freelist.length == 0)
return;

currow++;
if (currow > ROWS)
currow = 0;

color = color || '#fff';
shadow = shadow || {color: '#000'};
pos = pos || 'normal';

let p = freelist[0];
freelist = freelist.slice(1);

let size = FONTSIZE;
let ctx = p.getContext('2d');
ctx.font = `${size}px Arail`;
p.width = ctx.measureText(text).width;
p.height = size*1.5;

ctx.font = `${size}px Arail`;
ctx.fillStyle = color;
ctx.textAlign = "start";
ctx.textBaseline = "top";
if (shadow) {
ctx.shadowOffsetX = 1;
ctx.shadowOffsetY = 1;
ctx.shadowColor = shadow.color;
}
ctx.fillText(text, 0, 0);

let time = 5;
let movew = container.offsetWidth+p.width;

p.style.top = `${currow*FONTSIZE}px`;

if (pos == 'top') {
p.style.left = `${(container.offsetWidth-p.width)/2}px`;
} else {
p.style.right = `${-p.width}px`;
}

p.style.display = 'block';

setTimeout(() => {
p.style.display = 'none';
freelist.push(p);
}, time*1000);

if (pos == 'normal') {
setTimeout(() => {
p.style.transition = `transform ${time}s linear`;
p.style.transform = `translate(-${movew}px,0)`;
}, 50);
}

}

emit({text:'哔哩哔哩哔哩哔哩哔哩哔哩哔哩哔哩哔哩哔哩哔哩哔哩哔哩哔哩'});
emit({text:'我占了中间位置', color:'#f00', pos:'top'});
//setInterval(reset, 2000);
}

cmd.testDamoo = () => {
let div = document.createElement('div');

document.body.style.margin = '0';
let resize = () => {
div.style.height = window.innerHeight+'px';
div.style.width = window.innerWidth+'px';
}
window.addEventListener('resize', () => resize());
resize();

div.innerHTML = `
<h1>Background</h1>
`;
div.style.background = '#eee';
document.body.appendChild(div);

let dm = new FastDamoo({container:div, fontSize:20});
dm.show();
dm.resume();
dm.emit({text:'小小小的文字', color:'#000'});
dm.emit({text:'小小小的文字', color:'#000', pos:'bottom'});
dm.emit({text:'稍微长一点的文字2333333333333333333', color:'#000', pos:'top'});

document.body.addEventListener('keydown', (e) => {
switch (e.code) {
case "KeyR": {
dm.resume();
} break;

case "KeyP": {
dm.suspend();
} break;

case "KeyS": {
dm.show();
} break;

case "KeyH": {
dm.hide();
} break;
}
});

let i = 0;
let timer = setInterval(() => {
i++;
if (i > 300) {
clearInterval(timer);
return;
}
let text = '哔哩哔哩';
for (let i = 0; i < 4; i++)
text = text+text;
dm.emit({
text,
color: '#f00',
});
}, 10);
}
//cmd.testDamoo()

if (location.href.substr(0,6) != 'chrome') {
// playUrl(location.href);
} else {
window.cmd = cmd;
}



/***/ },
/* 1 */
Expand Down Expand Up @@ -3144,32 +2821,6 @@
return [fileid, ep];
}

exports.testEncryptFuncs = function() {
{
let fn = (a,b) => E(a, atob(b)).split('_')
console.log(fn("becaf9be","PgXWTwkWLrPa2fbJ9+JxWtGhuBQ01wnKWRs="),"9461488808682128ae179_4114")
}

{
let assert = (r1, r2) => {
console.log(r1[0]==r2[0],r1[1]==r2[1]);
}
assert(generate_ep(0,"03008002005715DFD766A500E68D4783E81E57-3E8D-DABF-8542-460ADBBC66A5","24614839104951215057d","1329"),["03008002005715DFD766A500E68D4783E81E57-3E8D-DABF-8542-460ADBBC66A5","cCaSG02FVccB5SfWjT8bZinicXBbXP4J9h%2BNgdJgALshT%2Bm67UilwJu2P%2FpCFowfelYCF%2BPy3tjmH0UTYfM2oRwQqz%2FaT%2Fro%2B%2FTh5alVxOF0FGtFdMumsVSfQDL4"])
}

{
console.log(querystring.parse("oip=1932302622&ep=cCaSG02FX84D5ifaij8bbn7jd3VZXP4J9h%2BNgdJgALshT%2Bm67UilwJu2P%2FpCFowfelYCF%2BPy3tjmH0UTYfM2oRwQqz%2FaT%2Fro%2B%2FTh5alVxOF0FGtFdMumsVSfQDH1&token=1314&yxon=1&ctype=12&ev=1&K=9f73bb3c4155957624129573"))
console.log('mine',querystring.parse("ctype=12&ev=1&K=fb5cd30b897d0949261ef913&ep=cSaSG02FUcoC5yfZij8bZH%2FjIHMLXP4J9h%2BNgdJhALshT%2BnNnzrSxJXFS41CFv5oBid1Y5rzrNSTY0ARYfU2qG4Q2kqtSPrni4Ti5apWzZMAFxk2AMnTxVSaRDP3&oip=1932302622&token=4736&yxon=1"))
}

{
let data = JSON.parse(`{"e":{"desc":"","provider":"play","code":0},"data":{"id":862768,"stream":[{"logo":"none","media_type":"standard","audio_lang":"default","subtitle_lang":"default","transfer_mode_org":"http","segs":[{"total_milliseconds_audio":"1795669","fileid":"030020010057230223FEB42D9B7D2FB424E317-3B01-8066-DABC-7C9B74ADE438","total_milliseconds_video":"1795667","key":"90e959ebddf813392412979a","size":"86371154"}],"stream_type":"3gphd","width":480,"transfer_mode":"http","size":86371154,"height":366,"milliseconds_video":1795667,"drm_type":"default","milliseconds_audio":1795669,"stream_fileid":"030020010057230223FEB42D9B7D2FB424E317-3B01-8066-DABC-7C9B74ADE438"},{"logo":"none","media_type":"standard","audio_lang":"default","subtitle_lang":"default","transfer_mode_org":"http","segs":[{"total_milliseconds_audio":"409600","fileid":"03000205005723027DFEB42D9B7D2FB424E317-3B01-8066-DABC-7C9B74ADE438","total_milliseconds_video":"409600","key":"37ec34a13b3d665b282b61be","size":"20591540"},{"total_milliseconds_audio":"409600","fileid":"03000205015723027DFEB42D9B7D2FB424E317-3B01-8066-DABC-7C9B74ADE438","total_milliseconds_video":"409600","key":"f6b9ef5afce65a04261efcac","size":"21394445"},{"total_milliseconds_audio":"362533","fileid":"03000205025723027DFEB42D9B7D2FB424E317-3B01-8066-DABC-7C9B74ADE438","total_milliseconds_video":"362533","key":"62e46a284c2d2ae32412979a","size":"19437517"},{"total_milliseconds_audio":"298400","fileid":"03000205035723027DFEB42D9B7D2FB424E317-3B01-8066-DABC-7C9B74ADE438","total_milliseconds_video":"298400","key":"1fa3c8fa48ce0e1f2412979a","size":"19868318"},{"total_milliseconds_audio":"315536","fileid":"03000205045723027DFEB42D9B7D2FB424E317-3B01-8066-DABC-7C9B74ADE438","total_milliseconds_video":"315534","key":"37cdf72dd0e395fe261efcac","size":"20442591"}],"stream_type":"flvhd","width":480,"transfer_mode":"http","size":101734411,"height":366,"milliseconds_video":1795667,"drm_type":"default","milliseconds_audio":1795669,"stream_fileid":"03000205005723027DFEB42D9B7D2FB424E317-3B01-8066-DABC-7C9B74ADE438"},{"logo":"none","media_type":"standard","audio_lang":"default","subtitle_lang":"default","transfer_mode_org":"http","segs":[{"total_milliseconds_audio":"395854","fileid":"030008050057230A77FEB42D9B7D2FB424E317-3B01-8066-DABC-7C9B74ADE438","total_milliseconds_video":"395854","key":"4e534452a6dfd9872412979a","size":"32024089"},{"total_milliseconds_audio":"391349","fileid":"030008050157230A77FEB42D9B7D2FB424E317-3B01-8066-DABC-7C9B74ADE438","total_milliseconds_video":"391349","key":"fb34cda7c5fc5268261efcac","size":"32844767"},{"total_milliseconds_audio":"374584","fileid":"030008050257230A77FEB42D9B7D2FB424E317-3B01-8066-DABC-7C9B74ADE438","total_milliseconds_video":"374583","key":"5a17bba933613284261efcac","size":"33922099"},{"total_milliseconds_audio":"333625","fileid":"030008050357230A77FEB42D9B7D2FB424E317-3B01-8066-DABC-7C9B74ADE438","total_milliseconds_video":"333625","key":"0ba87cd04ff5a9492412979a","size":"37678873"},{"total_milliseconds_audio":"300257","fileid":"030008050457230A77FEB42D9B7D2FB424E317-3B01-8066-DABC-7C9B74ADE438","total_milliseconds_video":"300174","key":"2331c14afeb54948261efcac","size":"35383393"}],"stream_type":"mp4hd","width":704,"transfer_mode":"http","size":171853221,"height":536,"milliseconds_video":1795585,"drm_type":"default","milliseconds_audio":1795669,"stream_fileid":"030008050057230A77FEB42D9B7D2FB424E317-3B01-8066-DABC-7C9B74ADE438"}],"security":{"encrypt_string":"EZIdNEWjiLVksbbEOeHLaC23yrK3W0Np4qoMg4Nijic=","ip":2746431115},"video":{"logo":["http://r2.ykimg.com/0541040857230A846A0A430458F07AAA","http://r2.ykimg.com/0542040857230A846A0A430458F07AAA","http://r2.ykimg.com/0543040857230A846A0A430458F07AAA"],"title":"video_id:3468941","source":53093,"encodeid":"CMzQ1MTA3Mg==","description":"","userid":765164847},"network":{"dma_code":"17816","area_code":"442000"}},"cost":0.007000000216066837}`);
let info = {data12:data.data, data10:data.data};
console.log(info);
extractFlvPath(info).then(res => console.log(res));
}
}

var extractFlvPath = exports.extractFlvPath = function(info) {
var sorted = info.data10.stream.sort(
(a,b) => a.height<b.height||a.height==b.height&&a.milliseconds_audio<b.milliseconds_audio);
Expand Down

0 comments on commit 7886d31

Please sign in to comment.