.png)
.NET을 사용하여 M2TS 파일에서 자막 타임스탬프를 추출하려고 합니다 ffprobe
. 예상대로 작동하지 않습니다. M2TS 파일의 트랙 4에는 1001개의 자막이 포함되어 있는 것으로 알려져 있지만 약 4000개의 타임스탬프가 표시됩니다. 게다가 해당 타임스탬프는 이상한 방식으로 관련되어 있으며 정렬되지 않았습니다.
내가 사용하는 명령줄:
ffprobe -show_entries packet=stream_index,pts,duration -of compact=p=0:nk=1 input.m2ts > ts.txt
ts.txt
그런 다음 다음과 같은 블록을 포함합니다(가독성을 위해 빈 줄을 삽입했습니다).
4|57795041|N/A|
4|57795000|N/A|
4|57789168|N/A|
4|57789250|N/A|
4|57789250|N/A|
4|57982728|N/A|
4|57982687|N/A|
4|57982686|N/A|
4|63380621|N/A|
4|63380580|N/A|
4|63374748|N/A|
4|63374830|N/A|
4|63374830|N/A|
... and so on
각 블록은 하나의 자막에 해당합니다. 블록의 타임스탬프는 정렬되지 않습니다. 블록의 마지막 두 타임스탬프는 동일하거나 최대 1틱만큼 다릅니다. 타임베이스는 입니다 90000 ticks / s
.
ffprobe
내 문제는 작동 방식과 자막 타임스탬프가 컨테이너에 포함되는 방식 에 대한 이해가 부족하기 때문에 발생한다고 확신합니다 . 누군가 자막 타임스탬프를 올바른 방법으로 추출하는 방법을 간단히 설명해 주시겠습니까? 나는 PTS 타임스탬프에만 관심이 있습니다.
그런 다음 출력에 프레임 정보를 추가하고 섹션과 키를 인쇄하도록 했습니다.
ffprobe -show_entries packet=stream_index,pts,duration:frame -of compact input.m2ts > ts.txt
이것은 도움이 되지 않았습니다. 다음은 출력의 샘플을 보여줍니다.
packet|stream_index=4|pts=76826553|duration=N/A|
packet|stream_index=4|pts=76826144|duration=N/A|
packet|stream_index=4|pts=76826143|duration=N/A|
subtitle|
더 장황해지는 것 외에도 이제 추가 섹션 항목이 있지만 subtitle
여기에는 데이터가 포함되어 있지 않습니다. 물론, 지금은 추가 frame
항목도 있지만, 자막과 관련된 항목이 없기 때문에 표시하지 않았습니다.
마지막으로, 일반적으로 PTS 타임스탬프를 추출하는 데 적합한 도구인 것 같다고 말하고 싶습니다 ffprobe
. 동일한 방식으로 추출한 오디오 및 비디오 타임스탬프는 모두 정확합니다. 문제를 일으키는 것은 자막 타임스탬프일 뿐입니다.