【问题标题】:Not able to pipe gstreamer output into ffmpeg无法将 gstreamer 输出通过管道传输到 ffmpeg
【发布时间】:2015-03-30 17:37:42
【问题描述】:

有没有人让 gstreamer 成功地将其视频输出通过管道传输到 ffmpeg?

我尝试过使用 /dev/stdout,但我不断收到错误:

gst-launch -e v4l2src device=/dev/video0 ! 'video/x-raw-yuv,width=1920,height=1080,framerate=5/1' ! nv_omx_h264enc 质量级别=2 ! mp4 多路复用器!文件接收器位置=/dev/stdout \ | ffmpeg -y -i - -codec copy -f flv test.flv

... [aac @ 0xebc4c0] 找不到流 0 的编解码器参数(音频:aac(主),7.1,fltp,1351 kb/s):未指定的采样率 考虑增加“analyzeduration”和“probesize”选项的值 pipe:: 找不到编解码器参数 输入 #0,aac,来自“管道:”: 持续时间:不适用,比特率:1351 kb/s 流 #0:0:音频:aac(主)、7.1、fltp、1351 kb/s [flv @ 0xec9280] 未设置采样率 输出#0,flv,到“test.flv”: 流 #0:0:音频:aac,7.1,1351 kb/s 流映射: 流 #0:0 -> #0:0(复制) 无法为输出文件 #0 写入标头(编解码器参数不正确?):参数无效 ubuntu@tegra-ubuntu:~$

单独运行命令(用文件替换 /dev/stdout)工作正常。

如果你让它工作并且可以分享你是如何做到的,那就太好了。

谢谢。

【问题讨论】:

  • 里面有音频流吗?请完整的命令行和未剪切的控制台输出?

标签: ffmpeg streaming gstreamer


【解决方案1】:

您不能将 MP4 用作流格式,因为它不能被线性解析,例如没有随机访问。因此它适用于文件,但不能通过管道。

用可以流式传输的格式替换容器格式应该可以解决问题:

gst-launch -e v4l2src device=/dev/video0 \
! 'video/x-raw-yuv,width=1920,height=1080,framerate=5/1' \
! nv_omx_h264enc quality-level=2 ! matroskamux \
! filesink location=/dev/stdout \
 | ffmpeg -y -i - -codec copy -f flv test.flv

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-13
    • 1970-01-01
    • 1970-01-01
    • 2011-05-03
    • 1970-01-01
    • 2011-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多