Gstreamer splitmuxsink 在拆分时重置时间戳

问题描述 投票:0回答:1

我一直在使用 splitmuxsink 按长度或“立即分割”命令分割实时视频流的录制。生成的视频文件均带有管道启动时的“全球时间”时间戳。

文件1 00:00 - 05:00

文件2 05:00 - 10:00

文件3 10:00 - 15:00

这会导致在某些视频播放器中播放文件时出现问题,这些视频播放器的时间戳预计从 0 开始。

我想做的是每次分割录音并启动新文件时重置时间戳。

文件1 00:00 - 05:00

文件2 00:00 - 05:00

文件3 00:00 - 05:00

performance timestamp gstreamer
1个回答
0
投票

我也有同样的问题!我的原管是:

gst-launch-1.0.exe rtspsrc location=rtsp://192.168.0.100:554/axis-media/media.amp is-live=true latency=0 drop-on-latency=true name=rtp_source ! queue ! rtpjitterbuffer mode=0 name=jitter ! application/x-rtp,payload=96 ! rtph264depay ! tee name=tvid \
    rtp_source. ! queue ! decodebin ! audioconvert ! audioresample ! voaacenc ! queue ! aacparse ! tee name=tau \
    tau. ! queue ! muxstream. \
    tvid. ! queue ! flvmux streamable=true name=muxstream ! tcpserversink name=tcpserversink_dls port=12349 host=localhost recover-policy=keyframe sync-method=latest-keyframe sync=false \
    tau. ! queue ! muxfile.audio_0 \
    tvid. ! queue ! splitmuxsink max-size-time=10000000000  muxer=flvmux name=muxfile location=video%02d.flv

当我使用 async-finalize=true 时,

gst-launch-1.0.exe rtspsrc location=rtsp://192.168.0.100:554/axis-media/media.amp is-live=true latency=0 drop-on-latency=true name=rtp_source ! queue ! rtpjitterbuffer mode=0 name=jitter ! application/x-rtp,payload=96 ! rtph264depay ! tee name=tvid \
rtp_source. ! queue ! decodebin ! audioconvert ! audioresample ! voaacenc ! queue ! aacparse ! tee name=tau \
tau. ! queue ! muxstream. \
tvid. ! queue ! flvmux streamable=true name=muxstream ! tcpserversink name=tcpserversink_dls port=12349 host=localhost recover-policy=keyframe sync-method=latest-keyframe sync=false \
tau. ! queue ! muxfile.audio_0 \
tvid. ! queue ! splitmuxsink max-size-time=10000000000 async-finalize=true muxer-factory=flvmux name=muxfile location=video%02d.flv

我遇到错误崩溃:

0:00:12.3 / 99:99:99。 (gst-launch-1.0:9128): GStreamer-关键 **: 09:43:04.934:gst_object_unref:断言“object!= NULL”失败

(gst-launch-1.0:9128): GStreamer-关键 **: 09:43:04.934: _gst_element_request_pad:断言'gst_element_is_valid_request_template_name(templ->name_template, 名称)'失败

(gst-launch-1.0:9128): GStreamer-关键 **: 09:43:04.938: gst_pad_link_full:断言“GST_IS_PAD(sinkpad)”失败

(gst-launch-1.0:9128): GStreamer-关键 **: 09:43:04.939: gst_element_release_request_pad:断言“GST_IS_PAD(垫)”失败

(gst-launch-1.0:9128): GStreamer-关键 **: 09:43:04.940: gst_object_unref:断言“object!= NULL”失败错误:来自 元素 /GstPipeline:pipeline0/GstSplitMuxSink:muxfile: 无法 创建新的复用器/接收器附加调试信息: ../gst/multifile/gstsplitmuxsink.c(1948): relink_context (): /GstPipeline:pipeline0/GstSplitMuxSink:muxfile 执行结束后 0:00:12.490982300

(gst-launch-1.0:9128): GStreamer-关键 **: 09:43:04.943: _gst_element_request_pad:断言'gst_element_is_valid_request_template_name(templ->name_template, name)' 失败 将管道设置为 NULL ...

(gst-launch-1.0:9128): GStreamer-关键 **: 09:43:04.945: gst_pad_link_full:断言“GST_IS_PAD(sinkpad)”失败

(gst-launch-1.0:9128): GStreamer-关键 **: 09:43:04.946: gst_element_release_request_pad:断言“GST_IS_PAD(垫)”失败

(gst-launch-1.0:9128): GStreamer-关键 **: 09:43:04.947: gst_object_unref:断言“object!= NULL”失败错误:来自 元素 /GstPipeline:pipeline0/GstSplitMuxSink:muxfile: 无法 创建新的复用器/接收器附加调试信息: ../gst/multifile/gstsplitmuxsink.c(1948): relink_context (): /GstPipeline:pipeline0/GstSplitMuxSink:muxfile

(gst-launch-1.0:9128): GStreamer-关键 **: 09:43:04.951: gst_pad_send_event:断言“GST_IS_PAD(垫)”失败

(gst-launch-1.0:9128): GStreamer-关键 **: 09:43:04.952: gst_object_unref:断言“object!= NULL”失败

(gst-launch-1.0:9128): GStreamer-关键 **: 09:43:04.953: gst_pad_send_event:断言“GST_IS_PAD(垫)”失败

(gst-launch-1.0:9128): GStreamer-关键 **: 09:43:04.954: gst_object_unref:断言“object!= NULL”失败释放管道 ...

© www.soinside.com 2019 - 2024. All rights reserved.