2016-10-27 5 views
0

노드의 m2ts 파일에서 가져온 원래 이름과 날짜를 추출하고 싶습니다. "packet"패키지를 사용하여 일부 죽은 코드 (m2ts-parser)를 발견했습니다. 나는 정말로 이해 하기엔 너무 초보자이지만. 하지만m2ts (mpeg2-ts) 파일에서 원래 이름과 날짜를 추출하십시오.

그래서 사람이 어떻게 원래의 파일 이름과 노드의 M2TS 파일 (원본 작성 날짜를 추출하는 말해 줄 수 :-) 배우고 싶은, 그러나 어떤 의사 코드는 할 것

감사

:-)

갱신

내가 찾은 - @aergistal 부분적인 해결책의 답변에 따라. m2ts 파일에서 Date/Time 원본을 추출 할 수 있습니다. Canon 및 Panasonic 파일에서만 테스트되었습니다.

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; 
       } 

      } 


     } 
    }); 
}); 

답변

2

MPEG-TS 컨테이너에는 이러한 정보가 없습니다.

메타 데이터 은 기본 스트림 중 하나에 포함될 수 있으며이 경우 해당 스트림의 위치는 모든 스트림 유형에 따라 다릅니다. 상황을 악화 시키려면 동일한 유형조차도 공통된 표준이 없습니다.

예를 들어

당신의 m2ts 파일이 H.264 비디오 스트림과 같은 메타 데이터 가 포함되어있는 경우는보충 개선 정보 제공되는 경우 (SEI)에서 찾을 수 있습니다. 이 구조는 H.264 표준에 설명되어 있습니다.

데이터의 위치를 ​​알았 으면 사용하는 형식을 알아야합니다. 예를 들어 수정 된 디지털 비디오 팩 메타 데이터 (MDPM)은 exiftool일 수도 있고 일 수 있으며 DateTimeOriginal 태그를 포함 할 수 있습니다. Example.

물론 메타 데이터가 전혀 표시되지 않았거나 보조 파일에 저장되었을 수 있습니다.