"Non-monotonous DTS in output stream 0:0; previous..."
동영상을 합치면서 이러한 오류가 몇 백개씩 뜨는 걸 자주 보았다. timestamp가 어쩌구 저쩌구 하는데 팟플레이어로 열면 잘 재생되다가 마지막 동영상 파트로 넘어가면 화면이 빨라지는 등 제대로 재생되지 않았다. 그렇다면 어떻게 해야 DTS 오류를 최소화하고 정상 재생이 되게끔 합칠 수 있는 것일까.
Stackoverflow의 한 게시물에서 이를 수정하기 위한 방안을 찾을 수 있었다. (링크)
이 방법을 정리해서 블로그에 다시 작성하자면 이렇다.
* DTS 오류 최소화 하는법
1. 합칠 동영상을 준비한다. 이때 합쳐야 할 동영상들의 비디오 코덱과 오디오 코덱은 동일해야 한다.
예를 들어서, 합칠동영상1.mp4 / 합칠동영상2.mp4 파일을 합쳐야 한다고 가정해보자.
2. FFmpeg 폴더의 탐색기 주소 창에 cmd를 치고 열린 명령 프롬프트에 다음과 같이 입력한다.
ffprobe "합칠동영상2.mp4"
합치는 영상들 중 마지막 파트의 영상 파일명을 입력해야 한다.
그럼 이런 식으로 합칠동영상2의 tbn 값을 알아낼 수 있다. 11988이다.
3. 이제 마지막 파트 영상의 tbn 값을 나머지 파트의 영상에도 적용해야 한다. 다음과 같이 입력한다.
ffmpeg -i "합칠동영상1.mp4" -video_track_timescale 11988 -vcodec copy -acodec copy "합칠동영상1_fix.mp4"
이렇게 하면 tbn 값이 11988로 바뀐 합칠동영상1_fix 영상이 생성된다.
3개 이상의 영상을 합칠때도 마지막 파트 영상을 제외한 나머지 파트 영상들에게 모두 이 작업을 해줘야 한다.
4. 다 했으면 txt 파일로 합칠 파일들을 지정하고 합치기 명령어를 실행하면 된다.
* 메모장 (merge.txt)
file './merge/합칠동영상1_fix.mp4'
file './merge/합칠동영상2.mp4'
* cmd 명령어
ffmpeg -f concat -safe 0 -i ".\merge.txt" -c copy "출력파일명.mp4"
합칠 파일을 지정할때 마지막 파트가 아닌 영상들은 원본이 아닌 tbn값을 바꾼 수정본을 지정해야 한다는 점에 유의한다.
이렇게 하고 명령을 실행하면 DTS 오류가 몇 백 개씩 나오던게 1~2개 정도로 최소화되고 팟플레이어에서 영상도 정상적으로 출력될 것이다.
그럼 이만...
'컴퓨터와 잡동사니 자료' 카테고리의 다른 글
윈도우10 1903으로 업데이트 하고 난 뒤 겪었던 문제들. (0) | 2019.10.29 |
---|---|
Smart Cutter에 대한 설명. (0) | 2019.08.04 |
크롬 F12 기능이 차단된 동영상 사이트에서 어떻게든 동영상을 추출해본다. (2) | 2019.06.13 |
FFmpeg과 youtube-dl에 대한 설명. (0) | 2019.06.08 |
네이버 블로그 분할압축 간편 다운로드 프로그램 만들었다. (13) | 2019.04.06 |