【问题标题】:In GStreamer how do I simultaneously playback and record an h264 AVI file of a v4l2src?在 GStreamer 中,我如何同时播放和录制 v4l2src 的 h264 AVI 文件?
【发布时间】:2016-08-22 22:48:52
【问题描述】:

使用 gstreamer-0.10 和 FPS25 和 FourCIF_Format 录制的文件以快进模式播放。任何解决方案将不胜感激。有时会在录制的文件中跳过 3-4 秒。

我尝试使用的管道是:

gst-launch v4l2src device=/dev/video2 ! 'video/x-raw-yuv,width=704,height=576, framerate=25/1' !球座 名称=liveTee!队列 ! mfw_isink liveTee。 !队列 ! vpuenc! ! 文件接收位置=/home/Recording.avi

【问题讨论】:

  • 欢迎来到 Stack Overflow。通常我们会提供更多细节,如果我们想对我们的问题得到一些好的回应。这个问题看起来不错,只需添加一些细节,比如:你使用了什么管道,一些调试输出(使用 evn var GST_DEBUG=3 运行),你怎么样播放那个文件等等。
  • 嗨 otopolsky,我的工作管道是:gst-launch v4l2src device=/dev/video2! 'video/x-raw-yuv,width=704,height=576, framerate=25/1' !三通名称=liveTee!队列 ! mfw_isink liveTee。 !队列 ! vpuenc! ! filesink location=/home/Recording.avi 这个管道实时流并记录它。但是,录制的文件以快进模式播放。
  • 我找到了解决方案,但它仅适用于 1 个摄像头。在上述管道中添加“videorate”可以解决问题。录制的文件以正常模式播放。但是,它会影响直播。实时流式传输结构。
  • "drop-only" 解决了实时流式传输的问题,但它再次使录制的文件播放得更快。任何建议将不胜感激。
  • @mpr 我的 CPU 使用率平均值。是 60%。在我的管道中,同步和异步都是错误的。我通过 gstreamer-0.10 录制的文件仍然比正常播放速度更快。

标签: gstreamer


【解决方案1】:

我将对其进行粗略的尝试,并稍微重新格式化您的问题。这主要是 GStreamer 和飞思卡尔的问题,而不是 QT。

gst-launch-1.0 -e videotestsrc pattern=ball do-timestamp=true 是活=真!时间叠加! 'video/x-raw,width=704,height=576,framerate=25/1' !三通名称=liveTee! 队列泄漏=下游!视频转换! ximagesink 异步=false 现场直播。 !队列泄漏=下游!视频转换!队列 ! x264enc ! !文件接收位置=/tmp/test.avi

要记住的是,您的编码器必须跟上实时回放。因此,您的管道需要处理编码器不同步的情况。在 tee 后面的 queue 元素上,使用 leaky 属性。

那么您还需要注意您的视频源及其提供的内容。在您的情况下,您似乎需要实时视频,但如果您的源是现有视频文件,则管道可能需要进行更多调整。

注意:可能比这更简单,只需将async=false 添加到视频接收器似乎非常重要。

【讨论】:

  • 谢谢,但是,leaky 没有在正常模式下播放录制的文件。 斜体 哪个元素可能导致我录制的文件以快进模式播放?
  • @ManojSahu 嗨,我有一个关于如何同时播放和录制 h264 AVI 文件的问题,请问有解决方案吗?只是想知道播放是在播放 h264 文件吗?
猜你喜欢
  • 1970-01-01
  • 2020-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-19
  • 1970-01-01
相关资源
最近更新 更多