Home
uupaa edited this page Jan 12, 2016
·
3 revisions
MPEG2TS.js は、*.ts ファイルに含まれる MPEG-2 TS バイナリストリームを分解(demux)し、MPEG4-10 AVC(H.264) 用の ByteStream を取り出す機能を提供します。
Byte stream format とは MPEG4-10 AVC(H.264) の規格書の Annex B で定義されているバイトデータのフォーマットです。連続する StartCode + EBSP で構成されたバイトデータになります。
*.ts ファイルに格納されている H.264 データを取り出し、MP4 ファイルを生成するには、以下の手順でデータ変換を行う必要があります
- fetch M3U8 file
- parse M3U8 file (M3U.js)
- fetch *.ts file
- parse TSPacket (MPEG2TS.parse)
- parse PESPacket (MPEG2TS.convertTSPacketToPESPacket)
- parse ByteStream (MPEG2TS.convertPESPacketToByteStream)
- parse NAL file format
- parse AUD, SPS, PPS, SEI, IDR, ...
- build AccessUnit
- Mux
- build mp4 file
function testMPEG2TS_get_timing_and_duration(test, pass, miss) {
var fs = require("fs");
var sourceFile = "../assets/ff/png.all.mp4.00.ts";
TypedArray.toArrayBuffer(sourceFile, function(buffer) {
console.log("LOAD FROM: ", sourceFile, buffer.byteLength);
var mpeg2ts = MPEG2TS.parse(new Uint8Array(buffer));
var videoPESPacket = MPEG2TS.convertTSPacketToPESPacket(mpeg2ts["VIDEO_TS_PACKET"]);
var videoByteStream = MPEG2TS.convertPESPacketToByteStream(videoPESPacket);
//var videoNALUnitArray = ByteStream.toNALUnit(videoByteStream);
//var videoNALUnitObjectArray = NALUnit.toNALUnitObject(videoNALUnitArray);
test.done(pass());
}, function(error) {
console.error(error.message);
});
}