ffmpeg - 无法将 gstreamer 输出通过管道传输到 ffmpeg

标签 ffmpeg streaming gstreamer

有没有人让 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! mp4mux!文件接收器位置=/dev/stdout\ | ffmpeg -y -i - -codec copy -f flv test.flv

... [aac @ 0xebc4c0] 找不到流 0 的编解码器参数(音频:aac(主要)、7.1、fltp、1351 kb/s):未指定的采样率 考虑增加 'analyzeduration' 和 'probesize' 选项的值 管道::找不到编解码器参数 输入 #0,aac,来自“管道:”: 持续时间:N/A,比特率: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 写入 header (编解码器参数不正确?):参数无效 ubuntu@tegra-ubuntu:~$

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

如果您让它发挥作用并且可以分享您是如何做到的,那就太好了。

谢谢。

最佳答案

您不能将 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

关于ffmpeg - 无法将 gstreamer 输出通过管道传输到 ffmpeg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28249540/

相关文章:

python - Discord.py Musicbot 跳过命令权限错误

javascript - MPEG-DASH 跨浏览器播放

javascript - 用户事件后 Soundcloud 自定义播放器不在移动 safari 上播放

ffmpeg - Gstreamer 基础教程给出黑屏

android - 使用 NDK 和 openssl 静态编译 FFmpeg

video - android ffmpeg 设置帧率

c# - WCF 中的异步流

python - 如何在 Gstreamer 中检索流统计信息?

java - gstreamer 快速转码

node.js - Node ffmpeg模块卡住了多个文件