본문 바로가기

gstreamer

[gstreamer] PTS_TIME 중복시

# QTmux  error 발생시
If your system is possible to have sudden shutdown, please use mpegtsmux or matroskamux. qtmux for generating mp4/mov requires EoS(End of Stream) event to output a valid file. mpegtsmux and matroskamux are streaming-based container, and more suitable for sudden shutdown.

 

https://forums.developer.nvidia.com/t/gstreamer-video-output-file-corrupted-when-suddenly-shutdown-device/110727

 

## 현상

1. HDpro cam에서만 recording 하다가 정지되는 애들이 있음.

2. 그 근방에서 WARN 발생하는데,

qtmux gstqtmux.c:4832:gst_qt_mux_add_buffer:<qtmux16> error :  Buffer has no PTS. 

이거 뜬 이후로 녹화안됨. 

3. hdpro cam은 동일한 timestamp를 가진 여러 버퍼(?)가 들어온다. 

 

CAMERA-STATUS : CONNECTED 발생 후 , buffer has no PTS 발생, 그 후 녹화 안됨.  

 

관련내용과 다른원인인 동일 현상을 발견했다. 

https://stackoverflow.com/questions/68534236/gstreamer-mp4mux-gives-buffer-has-no-pts-error-using-custom-appsrc

이쪽에서도 같은 timestamp를가진 N개의 버퍼를 h264parse가 보게 된다. 

->  In this case, h264parse sees this as N different buffers with identical timestamps. 

 

 

# 위에 내용을 반영했을때, 녹화가 정상적으로 동작하는것으로 보여진다. 위 코드가 수정해 주는 부분은 buffer의 pts를 running time으로 갱신해주는 것으로 보여진다. 강제 수정하는 것보단 있는걸 활용하는게 항상 좋으니까...buffer의 pts를 보정해주는 함수는 없나?-> 있다. https://stackoverflow.com/questions/42874691/gstreamer-for-android-buffer-has-no-pts위 내용을 보니까. BaseParse.set_pts_interpolation(h264parse, true) h264parse에서 set_pts_interpolation을  true로 설정해야함. 

 

 전임자가 record_parse에 저셋팅을 했는데, 혹시 h264parse에 저 셋팅을 하면 효과가 있을까? 

 

pts(presentation timestamp): 개념관련 좋은글 : https://gamz.tistory.com/1

미디어 관련 좋은글 : https://github.com/leandromoreira/ffmpeg-libav-tutorial/blob/master/README-ko.md

 

 

'gstreamer' 카테고리의 다른 글

동영상 포맷이해  (0) 2022.11.29
[명령어 정리] live stream 상태 체크 방법 (w. ffprobe 간단!)  (0) 2022.11.10
gstreamer : muxer  (0) 2022.11.10
gstreamer : muxer  (0) 2022.11.03
미디어 관련내용 정리  (0) 2022.11.03