Skip to content
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 ファイルを生成するには、以下の手順でデータ変換を行う必要があります

  1. fetch M3U8 file
  2. parse M3U8 file (M3U.js)
  3. fetch *.ts file
  4. parse TSPacket (MPEG2TS.parse)
  5. parse PESPacket (MPEG2TS.convertTSPacketToPESPacket)
  6. parse ByteStream (MPEG2TS.convertPESPacketToByteStream)
  7. parse NAL file format
  8. parse AUD, SPS, PPS, SEI, IDR, ...
  9. build AccessUnit
  10. Mux
  11. 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);
    });
}
Clone this wiki locally