@eyevinn/m3u8
Version:
streaming m3u8 parser for Apple's HTTP Live Streaming protocol
55 lines (47 loc) • 1.46 kB
JavaScript
var fs = require('fs');
describe('parsing iframe m3u8', function() {
it('should emit 36 items', function(done) {
var parser = getParser();
var items = 0;
parser.on('item', function() {
items++;
});
parser.on('m3u', function() {
items.should.equal(36);
done();
});
});
it('should have proper headers', function(done) {
var parser = getParser();
parser.on('m3u', function(m3u) {
m3u.get('version').should.equal(4);
m3u.get('targetDuration').should.equal(10);
m3u.get('playlistType').should.equal('VOD');
m3u.get('mediaSequence').should.equal(0);
m3u.get('discontinuitySequence').should.equal(2);
m3u.get('iframesOnly').should.be.true;
done();
});
});
describe('first IframeStreamItem', function() {
it('should match first item in fixture', function(done) {
var parser = getParser();
parser.on('m3u', function(m3u) {
var item = m3u.items.PlaylistItem[0];
item.get('title').should.equal('');
item.get('duration').should.equal(5);
item.get('byteRange').should.equal('376@940');
item.get('uri').should.equal('hls_1500k_video.ts');
done();
});
});
});
});
function getParser() {
var parser = require('../../parser').createStream();
var variantFile = fs.createReadStream(
__dirname + '/../fixtures/iframe.m3u8'
);
variantFile.pipe(parser);
return parser;
}