Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 提取原始名称&;m2ts(mpeg2 ts)文件的日期_Node.js_Video Processing_Mpeg2 Ts - Fatal编程技术网

Node.js 提取原始名称&;m2ts(mpeg2 ts)文件的日期

Node.js 提取原始名称&;m2ts(mpeg2 ts)文件的日期,node.js,video-processing,mpeg2-ts,Node.js,Video Processing,Mpeg2 Ts,我想从节点中的m2ts文件中提取原始名称和日期。 我发现一些使用包“packet”的死代码(m2ts解析器)。虽然我是个新手,不太懂。但我想学习:-) 那么,有谁能告诉我如何提取m2ts文件的原始文件名和原始创建日期(在节点中,但任何伪代码都可以:-) 谢谢 更新 根据@aergistal的答案,我发现了一个部分解决方案。 我能够从m2ts文件中提取原始日期/时间。仅在佳能和松下文件上测试: var fs = require('fs'); fs.open('C:/temp/286853384

我想从节点中的m2ts文件中提取原始名称和日期。 我发现一些使用包“packet”的死代码(m2ts解析器)。虽然我是个新手,不太懂。但我想学习:-)

那么,有谁能告诉我如何提取m2ts文件的原始文件名和原始创建日期(在节点中,但任何伪代码都可以:-)

谢谢

更新

根据@aergistal的答案,我发现了一个部分解决方案。 我能够从m2ts文件中提取原始日期/时间。仅在佳能和松下文件上测试:

var fs = require('fs');


fs.open('C:/temp/28685338476.mts', 'r', function (status, fd) {
    if (status) {
        console.log(status.message);
        return;
    }
    var chunk = new Buffer(10000);
    var syncFound = false;
    var i, l;
    fs.read(fd, chunk, 0, 10000, 0, function (err, num) {

        for (i = 0, l = chunk.length; i < l; i++) {

            if (chunk[i] === 0x47) {
                syncFound = true;
            }

            if (syncFound) {
                if (chunk[i] === 0x66 && chunk[i + 1] === 0x4D && chunk[i + 2] === 0x44 && chunk[i + 3] === 0x50 && chunk[i + 4] === 0x4D) {
                    console.log("GOT 'MDPM' at byte ", i);
                    var yy = chunk[i + 8].toString(16) + chunk[i + 9].toString(16);
                    var MM = chunk[i + 10].toString(16);
                    var dd = chunk[i + 12].toString(16);
                    var hh = chunk[i + 13].toString(16);
                    var mm = chunk[i + 14].toString(16);
                    var ss = chunk[i + 15].toString(16);
                    var timeStamp = yy + "/" + MM + "/" + dd + " " + hh + ":" + mm + ":" + ss;
                    console.log("TimeStamp: "+  timeStamp);
                    return timeStamp;
                }

            }


        }
    });
});
var fs=require('fs');
fs.打开('C:/temp/28685338476.mts','r',功能(状态,fd){
如果(状态){
console.log(status.message);
返回;
}
var chunk=新缓冲区(10000);
var-syncFound=false;
变量i,l;
读取(fd,块,0,10000,0,函数(err,num){
对于(i=0,l=chunk.length;i
MPEG-TS容器中没有此类信息

这种元数据可能包含在一个基本流中,在这种情况下,它的位置对于每个流类型都是不同的。更糟糕的是,即使是同一种类型,也没有通用的标准

例如,如果您的
m2ts
文件包含
H.264
视频流,则可以在补充增强信息中找到此类元数据(
SEI
)。该结构在H.264标准中描述

一旦你知道数据在哪里,你就需要知道它使用什么格式。一个示例是修改的数字视频包元数据(
MDPM
),该元数据受支持,可能包含
DateTimeOriginal
标记


当然,元数据可能根本不存在或存储在辅助文件中。

MPEG-TS容器中没有此类信息

这种元数据可能包含在一个基本流中,在这种情况下,它的位置对于每个流类型都是不同的。更糟糕的是,即使是同一种类型,也没有通用的标准

例如,如果您的
m2ts
文件包含
H.264
视频流,则可以在补充增强信息中找到此类元数据(
SEI
)。该结构在H.264标准中描述

一旦你知道数据在哪里,你就需要知道它使用什么格式。一个示例是修改的数字视频包元数据(
MDPM
),该元数据受支持,可能包含
DateTimeOriginal
标记

当然,元数据可能根本不存在或存储在辅助文件中