Logging Time : 2023-06-01 04:48:31
[mpegts @ 0x6ec1300] Non-monotonous DTS in output stream 0:1; previous: 3813156753, current: 3813150538; changing to 3813156754. This may result in incorrect timestamps in the output file.
ip camera의 rtsp 스트림을 ffmpeg로 트랜스코딩하여 재생하는 작업을 진행 중인데, 위와 같은 오류가 발생하였다.
우선 chat GPT에 간단하게 물어 보았는데,
이 오류는 일반적으로 FFmpeg에서 처리 중인 입력 스트림의 프레임 DTS 값에 불일치 또는 불일치가 있을 때 발생합니다.
이 오류의 구체적인 원인은 입력 스트림과 수행 중인 작업에 따라 달라질 수 있습니다. 몇 가지 잠재적인 원인은 다음과 같습니다:
1. 포맷이 잘못되었거나 손상된 입력 스트림
2. 부정확한 타임스탬프 또는 스트림 조작
3. FFmpeg의 버그 또는 문제
과 같은 문제로 발생하며 ffmpeg를 업데이트 하라는 조언을 해주었다.
그러나 ffmpeg는 이전의 문제들로 인해 이미 최신 버전으로 업데이트를 끝내둔 상황이었다.
좀더 검색하여
stack overflow 에서 ffmpeg 옵션에 -c copy 옵션을 제거하라 해서 해봤지만 같은 현상이 발생하였다. (코덱을 그대로 복사해서 사용하는 옵션)
ffmpeg 공식 위키에서 질문글
https://trac.ffmpeg.org/ticket/8137
을 참조하여
-ignore_editlist 1 옵션을 넣어 봤는데도
똑같은 현상이 발생하였다.
아마 이건 여러 파일을 병합하는 과정에서 생기는 오류를 잡는 옵션인 것 같다.
현재의 rtsp 스트림을 트랜스코딩하는 과정에는 적합하지 않다.
그러다 우연히 발견한 글
https://www.nemonein.xyz/2021/05/5206/
위의 글대로
ffmpeg 옵션에 -correct_ts_overflow 0 을 추가해 주었다.
this.spawnOptions = [
'-rtsp_transport',
'tcp',
'-correct_ts_overflow',
'0',
'-i',
this.url,
'-f',
'mpegts',
'-codec:v',
'mpeg1video',
'-b:v',
'1000k',
// additional ffmpeg options go here
...this.additionalFlags,
'-',
];
현재 옵션의 상태는 이러하다...
다른 글에 '-rtsp_transport', 'tcp',
이 옵션에도 문제가 있어 지웠다고 하던데 본인은 아직까지 문제 없이 동작하여 같은 오류가 발생할 때까지 더 지켜보아야 할 것 같다.
아직까지 이틀간 문제가 없어보이지만...
그러나 주말을 지내고 와서 잘 되는지 확인해 보아야겠다.