gstreamer 与 x264enc 的复用

Posted

技术标签:

【中文标题】gstreamer 与 x264enc 的复用【英文标题】:gstreamer muxing with x264enc 【发布时间】:2012-10-24 20:25:00 【问题描述】:

我正在尝试使用 gstreamer 将 DVD 转换为 mkv 文件。我使用的管道是:

gst-launch -evv multifilesrc location="VTS_01_%d.VOB" index=1 ! dvddemux 名称=解复用器\ matroskamux 名称=多路复用器!文件接收器位置=test.mkv \ demuxer.current_video !队列 ! mpeg2dec ! x264enc !多路复用器。 \ demuxer.current_audio !队列 ! ffdec_ac3 ! lamemp3enc !多路复用器。

不幸的是,管道并没有超出预滚动。当我用例如 ffenc_mpeg4 替换 x264enc 时,一切正常..

【问题讨论】:

【参考方案1】:

这可能有效:

gst-launch filesrc location=file.vob \
  ! queue \
  ! dvddemux name=demuxer matroskamux name=mux \
  ! queue \
  ! filesink location=test.mkv demuxer.current_video\
  ! queue \
  ! ffdec_mpeg2video \
  ! ffdeinterlace  \
  ! x264enc \
  ! 'video/x-h264, width=720, height=576, framerate=25/1' \
  ! mux.  demuxer.current_audio \
  ! queue max-size-bytes=0 max-size-buffers=0 max-size-time=10000000000 \
  ! ffdec_ac3 \
  ! audioconvert \
  ! lamemp3enc \
  ! mux.

字节流应该是 0 - 对不起,早点

您需要在 x264enc 之后提供视频的大写字母 并且您需要增加音频队列的限制以处理 x264enc 中的延迟

这两个更改使管道在我的末端运行。

去隔行器是可选的,但对于隔行扫描的内容是可取的。

【讨论】:

av501,这似乎有效。非常感谢,伙计!现在,我的问题是,你是怎么想出来的?你如何调试这些东西?您如何分析管道不启动的原因...?顺便说一句:我看到你还添加了 audioconvert。有必要吗? 在 gst-launch 之前的管道命令之前添加 "GST_DEBUG=" 将打印调试语句并告诉您很多事情。然后您需要扫描错误、警告、“不能...”或“不兼容”等句子如果 ac3 解码器的输出与 lame 编码器兼容,则可能不需要音频转换,但对于格式为不兼容。

以上是关于gstreamer 与 x264enc 的复用的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 OpenCV Python 和 GStreamer 后端创建 x264 RTSP 服务器

如何等待 x264enc 在流尾编码缓冲帧

如何使用 Gstreamer 通过 RTMP 流式传输?

将 GStreamer 管道编码并复用为 MPEG-TS

在 WINDOWS 中使用 gstreamer 进行桌面 GPU 编码

什么是ffmpeg、avcodec、x264? [关闭]