1

我正在 NVIDIA Jetson Nano 上开发视频录制应用程序。我的应用程序在 200 多台 Jetson Nano 设备上运行,每台设备每天录制 3-10 个视频。单个设备通常记录 40-45 分钟,中间间隔 5 分钟。问题是:有时(< 5%)视频已损坏,无法进行后处理。

管道(添加换行符以提高可读性):

v4l2src name=video_source 
! videorate ! video/x-raw, height=720, width=1280, framerate=30/1 
! nvvidconv 
! omxh264enc 
! queue 
! mux.

pulsesrc device=alsa_input.usb-046d_Logitech_BRIO_FC1248A5-03.analog-stereo name=audio_source 
! audio/x-raw, rate=44100, channels=2, width=32, depth=32 
! queue max-size-buffers=0 max-size-time=0 max-size-bytes=0 
! lamemp3enc bitrate=256 
! queue 
! mux. 

qtmux name=mux 
! filesink location=filename.mp4

Gst.parse_launch我尝试使用 Python 绑定 ( )运行此管道,但gst-launch-1.0两者都有问题。

  • 使用 Python 绑定,我在管道的时钟对象上设置了一个时钟事件。当它触发时,我将 EOS 事件发送到管道。我的日志表明pipeline.send_event总是调用,但有时无法返回。
  • 使用gst-launch-1.0,我添加了-e标志(强制 EOS)并使用 Pythonsubprocess来启动该过程。然后主 Python 进程简单地休眠 40-45 分钟,然后向子进程发送一个 SIGINT 事件。日志gst-launch-1.0有时会停在EOS on shutdown enabled -- Forcing EOS on the pipeline.

在任何一种情况下,相机都不会被释放,需要手动终止。生成的视频已损坏(缺少 moov 原子),无法使用 OpenCV 播放或读取以进行进一步处理。

这是我的管道问题、设备特定问题还是 Gstreamer 错误?我该如何解决?

4

0 回答 0