Skip to content

Commit

Permalink
fix ExpReg compatibility on ios
Browse files Browse the repository at this point in the history
  • Loading branch information
ying_123 committed Jan 25, 2024
1 parent 6125462 commit ad49782
Show file tree
Hide file tree
Showing 7 changed files with 66 additions and 46 deletions.
22 changes: 13 additions & 9 deletions dist/hls2mp4.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -1058,7 +1058,7 @@ var Hls2Mp4 = /** @class */ (function () {
Hls2Mp4.prototype.downloadM3u8 = function (url) {
var _a, _b, _c;
return __awaiter(this, void 0, void 0, function () {
var m3u8Parsed, _d, content, parsedUrl, keyTagMatchRegExp, matchReg, matches, segments, i, matched, matchedKey, matchedIV, batch, treatedSegments, segments_1, segments_1_1, group, total, keyBuffer, keyUrl, _loop_1, this_1, i, e_1_1, m3u8;
var m3u8Parsed, _d, content, parsedUrl, keyTagMatchRegExp, extMatchRegExp, matchReg, matches, segments, i, matched, matchedKey, matchedIV, segment, batch, treatedSegments, segments_1, segments_1_1, group, total, keyBuffer, keyUrl, _loop_1, this_1, i, e_1_1, m3u8;
var e_1, _e;
return __generator(this, function (_f) {
switch (_f.label) {
Expand All @@ -1067,7 +1067,8 @@ var Hls2Mp4 = /** @class */ (function () {
m3u8Parsed = _f.sent();
_d = m3u8Parsed, content = _d.content, parsedUrl = _d.url;
keyTagMatchRegExp = new RegExp('#EXT-X-KEY:METHOD=(AES-128|NONE)(,URI="[^"]+"(,IV=\\w+)?)?', 'gi');
matchReg = new RegExp(keyTagMatchRegExp.source + '|(?<=#EXTINF:\\d+(\\.\\d+)?,\\n).+', 'gim');
extMatchRegExp = new RegExp('#EXTINF:\\d+(\\.\\d+)?,\\n');
matchReg = new RegExp(keyTagMatchRegExp.source + '|' + extMatchRegExp.source + '.+', 'gim');
matches = content.match(matchReg);
if (!matches) {
throw new Error('Invalid m3u8 file, no ts file found');
Expand All @@ -1084,13 +1085,16 @@ var Hls2Mp4 = /** @class */ (function () {
segments: []
});
}
else if (i === 0) {
segments.push({
segments: [matched]
});
}
else {
segments[segments.length - 1].segments.push(matched);
segment = matched.replace(extMatchRegExp, '');
if (i === 0) {
segments.push({
segments: [segment]
});
}
else {
segments[segments.length - 1].segments.push(segment);
}
}
}
this.totalSegments = segments.reduce(function (prev, current) { return prev + current.segments.length; }, 0);
Expand Down Expand Up @@ -1291,7 +1295,7 @@ var Hls2Mp4 = /** @class */ (function () {
anchor.click();
setTimeout(function () { return URL.revokeObjectURL(objectUrl); }, 100);
};
Hls2Mp4.version = '1.2.5';
Hls2Mp4.version = '1.2.7';
Hls2Mp4.TaskType = exports.TaskType;
return Hls2Mp4;
}());
Expand Down
22 changes: 13 additions & 9 deletions dist/hls2mp4.js
Original file line number Diff line number Diff line change
Expand Up @@ -1054,7 +1054,7 @@ var Hls2Mp4 = (function (exports, ffmpeg, util) {
Hls2Mp4.prototype.downloadM3u8 = function (url) {
var _a, _b, _c;
return __awaiter(this, void 0, void 0, function () {
var m3u8Parsed, _d, content, parsedUrl, keyTagMatchRegExp, matchReg, matches, segments, i, matched, matchedKey, matchedIV, batch, treatedSegments, segments_1, segments_1_1, group, total, keyBuffer, keyUrl, _loop_1, this_1, i, e_1_1, m3u8;
var m3u8Parsed, _d, content, parsedUrl, keyTagMatchRegExp, extMatchRegExp, matchReg, matches, segments, i, matched, matchedKey, matchedIV, segment, batch, treatedSegments, segments_1, segments_1_1, group, total, keyBuffer, keyUrl, _loop_1, this_1, i, e_1_1, m3u8;
var e_1, _e;
return __generator(this, function (_f) {
switch (_f.label) {
Expand All @@ -1063,7 +1063,8 @@ var Hls2Mp4 = (function (exports, ffmpeg, util) {
m3u8Parsed = _f.sent();
_d = m3u8Parsed, content = _d.content, parsedUrl = _d.url;
keyTagMatchRegExp = new RegExp('#EXT-X-KEY:METHOD=(AES-128|NONE)(,URI="[^"]+"(,IV=\\w+)?)?', 'gi');
matchReg = new RegExp(keyTagMatchRegExp.source + '|(?<=#EXTINF:\\d+(\\.\\d+)?,\\n).+', 'gim');
extMatchRegExp = new RegExp('#EXTINF:\\d+(\\.\\d+)?,\\n');
matchReg = new RegExp(keyTagMatchRegExp.source + '|' + extMatchRegExp.source + '.+', 'gim');
matches = content.match(matchReg);
if (!matches) {
throw new Error('Invalid m3u8 file, no ts file found');
Expand All @@ -1080,13 +1081,16 @@ var Hls2Mp4 = (function (exports, ffmpeg, util) {
segments: []
});
}
else if (i === 0) {
segments.push({
segments: [matched]
});
}
else {
segments[segments.length - 1].segments.push(matched);
segment = matched.replace(extMatchRegExp, '');
if (i === 0) {
segments.push({
segments: [segment]
});
}
else {
segments[segments.length - 1].segments.push(segment);
}
}
}
this.totalSegments = segments.reduce(function (prev, current) { return prev + current.segments.length; }, 0);
Expand Down Expand Up @@ -1287,7 +1291,7 @@ var Hls2Mp4 = (function (exports, ffmpeg, util) {
anchor.click();
setTimeout(function () { return URL.revokeObjectURL(objectUrl); }, 100);
};
Hls2Mp4.version = '1.2.5';
Hls2Mp4.version = '1.2.7';
Hls2Mp4.TaskType = exports.TaskType;
return Hls2Mp4;
}());
Expand Down
22 changes: 13 additions & 9 deletions dist/hls2mp4.umd.js
Original file line number Diff line number Diff line change
Expand Up @@ -1057,7 +1057,7 @@
Hls2Mp4.prototype.downloadM3u8 = function (url) {
var _a, _b, _c;
return __awaiter(this, void 0, void 0, function () {
var m3u8Parsed, _d, content, parsedUrl, keyTagMatchRegExp, matchReg, matches, segments, i, matched, matchedKey, matchedIV, batch, treatedSegments, segments_1, segments_1_1, group, total, keyBuffer, keyUrl, _loop_1, this_1, i, e_1_1, m3u8;
var m3u8Parsed, _d, content, parsedUrl, keyTagMatchRegExp, extMatchRegExp, matchReg, matches, segments, i, matched, matchedKey, matchedIV, segment, batch, treatedSegments, segments_1, segments_1_1, group, total, keyBuffer, keyUrl, _loop_1, this_1, i, e_1_1, m3u8;
var e_1, _e;
return __generator(this, function (_f) {
switch (_f.label) {
Expand All @@ -1066,7 +1066,8 @@
m3u8Parsed = _f.sent();
_d = m3u8Parsed, content = _d.content, parsedUrl = _d.url;
keyTagMatchRegExp = new RegExp('#EXT-X-KEY:METHOD=(AES-128|NONE)(,URI="[^"]+"(,IV=\\w+)?)?', 'gi');
matchReg = new RegExp(keyTagMatchRegExp.source + '|(?<=#EXTINF:\\d+(\\.\\d+)?,\\n).+', 'gim');
extMatchRegExp = new RegExp('#EXTINF:\\d+(\\.\\d+)?,\\n');
matchReg = new RegExp(keyTagMatchRegExp.source + '|' + extMatchRegExp.source + '.+', 'gim');
matches = content.match(matchReg);
if (!matches) {
throw new Error('Invalid m3u8 file, no ts file found');
Expand All @@ -1083,13 +1084,16 @@
segments: []
});
}
else if (i === 0) {
segments.push({
segments: [matched]
});
}
else {
segments[segments.length - 1].segments.push(matched);
segment = matched.replace(extMatchRegExp, '');
if (i === 0) {
segments.push({
segments: [segment]
});
}
else {
segments[segments.length - 1].segments.push(segment);
}
}
}
this.totalSegments = segments.reduce(function (prev, current) { return prev + current.segments.length; }, 0);
Expand Down Expand Up @@ -1290,7 +1294,7 @@
anchor.click();
setTimeout(function () { return URL.revokeObjectURL(objectUrl); }, 100);
};
Hls2Mp4.version = '1.2.5';
Hls2Mp4.version = '1.2.7';
Hls2Mp4.TaskType = exports.TaskType;
return Hls2Mp4;
}());
Expand Down
22 changes: 13 additions & 9 deletions dist/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -1054,7 +1054,7 @@ var Hls2Mp4 = /** @class */ (function () {
Hls2Mp4.prototype.downloadM3u8 = function (url) {
var _a, _b, _c;
return __awaiter(this, void 0, void 0, function () {
var m3u8Parsed, _d, content, parsedUrl, keyTagMatchRegExp, matchReg, matches, segments, i, matched, matchedKey, matchedIV, batch, treatedSegments, segments_1, segments_1_1, group, total, keyBuffer, keyUrl, _loop_1, this_1, i, e_1_1, m3u8;
var m3u8Parsed, _d, content, parsedUrl, keyTagMatchRegExp, extMatchRegExp, matchReg, matches, segments, i, matched, matchedKey, matchedIV, segment, batch, treatedSegments, segments_1, segments_1_1, group, total, keyBuffer, keyUrl, _loop_1, this_1, i, e_1_1, m3u8;
var e_1, _e;
return __generator(this, function (_f) {
switch (_f.label) {
Expand All @@ -1063,7 +1063,8 @@ var Hls2Mp4 = /** @class */ (function () {
m3u8Parsed = _f.sent();
_d = m3u8Parsed, content = _d.content, parsedUrl = _d.url;
keyTagMatchRegExp = new RegExp('#EXT-X-KEY:METHOD=(AES-128|NONE)(,URI="[^"]+"(,IV=\\w+)?)?', 'gi');
matchReg = new RegExp(keyTagMatchRegExp.source + '|(?<=#EXTINF:\\d+(\\.\\d+)?,\\n).+', 'gim');
extMatchRegExp = new RegExp('#EXTINF:\\d+(\\.\\d+)?,\\n');
matchReg = new RegExp(keyTagMatchRegExp.source + '|' + extMatchRegExp.source + '.+', 'gim');
matches = content.match(matchReg);
if (!matches) {
throw new Error('Invalid m3u8 file, no ts file found');
Expand All @@ -1080,13 +1081,16 @@ var Hls2Mp4 = /** @class */ (function () {
segments: []
});
}
else if (i === 0) {
segments.push({
segments: [matched]
});
}
else {
segments[segments.length - 1].segments.push(matched);
segment = matched.replace(extMatchRegExp, '');
if (i === 0) {
segments.push({
segments: [segment]
});
}
else {
segments[segments.length - 1].segments.push(segment);
}
}
}
this.totalSegments = segments.reduce(function (prev, current) { return prev + current.segments.length; }, 0);
Expand Down Expand Up @@ -1287,7 +1291,7 @@ var Hls2Mp4 = /** @class */ (function () {
anchor.click();
setTimeout(function () { return URL.revokeObjectURL(objectUrl); }, 100);
};
Hls2Mp4.version = '1.2.5';
Hls2Mp4.version = '1.2.7';
Hls2Mp4.TaskType = TaskType;
return Hls2Mp4;
}());
Expand Down
2 changes: 1 addition & 1 deletion dist/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "hls2mp4",
"version": "1.2.6",
"version": "1.2.7",
"description": "a tool for download hls/m3u8 to mp4",
"main": "index.js",
"types": "index.d.ts",
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "hls2mp4",
"version": "1.2.6",
"version": "1.2.7",
"description": "a tool for download hls/m3u8 to mp4",
"main": "index.js",
"types": "index.d.ts",
Expand Down
20 changes: 12 additions & 8 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ class Hls2Mp4 {
private tsDownloadConcurrency: number;
private totalSegments = 0;
private savedSegments = 0;
public static version = '1.2.5';
public static version = '1.2.7';
public static TaskType = TaskType;

constructor(
Expand Down Expand Up @@ -230,8 +230,9 @@ class Hls2Mp4 {
'#EXT-X-KEY:METHOD=(AES-128|NONE)(,URI="[^"]+"(,IV=\\w+)?)?',
'gi'
)
const extMatchRegExp = new RegExp('#EXTINF:\\d+(\\.\\d+)?,\\n')
const matchReg = new RegExp(
keyTagMatchRegExp.source + '|(?<=#EXTINF:\\d+(\\.\\d+)?,\\n).+',
keyTagMatchRegExp.source + '|' + extMatchRegExp.source + '.+',
'gim'
)
const matches = content.match(matchReg)
Expand All @@ -250,13 +251,16 @@ class Hls2Mp4 {
segments: []
})
}
else if (i === 0) {
segments.push({
segments: [matched]
})
}
else {
segments[segments.length - 1].segments.push(matched)
const segment = matched.replace(extMatchRegExp, '')
if (i === 0) {
segments.push({
segments: [segment]
})
}
else {
segments[segments.length - 1].segments.push(segment)
}
}
}

Expand Down

0 comments on commit ad49782

Please sign in to comment.