ffprobe를 사용하여 자막 타임스탬프를 추출하는 방법(예상대로 작동하지 않음)

ffprobe를 사용하여 자막 타임스탬프를 추출하는 방법(예상대로 작동하지 않음)

.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. 동일한 방식으로 추출한 오디오 및 비디오 타임스탬프는 모두 정확합니다. 문제를 일으키는 것은 자막 타임스탬프일 뿐입니다.

관련 정보