2

我在 Ubuntu 操作系统上使用 g streamer-0.10 将网络摄像头视频流式传输到 rtmp 服务器上,我得到了视频输出,但它们在音频方面存在问题。下面的命令用于流式传输

gst-launch-0.10 v4l2src !视频缩放方法=0!视频/x-raw-yuv,width=852,height=480,framerate=(fraction)24/1 !ffmpeg色彩空间!x264enc pass=pass1 threads=0 bitrate=900 tune=zerolatency !flvmux 名称=多路复用器!rtmpsink location='rtmp://..../live/testing' 解复用器。alsasrc device="hw:0,0" !音频重采样!音频/x-raw-int,rate=48000,channels=2,depth=16 !pulseaudiosink 块引用

通过运行上面的命令,我得到了一个错误

gstbaseaudiosrc.c(840): gst_base_audio_src_create (): /GstPipeline:pipeline0/GstAlsaSrc:alsasrc0: 丢弃 13920 个样本。这很可能是因为下游无法跟上并且消耗样本太慢。块引用

所以音频是听不见的。

帮我解决这个问题。提前致谢

4

2 回答 2

1

我不明白你的管道。什么是“解复用器”。在中间?您面临的问题是因为您没有使用队列分隔元素。在接收器之前和源之后保留一个队列,以便让其余所有单独的线程运行。它应该允许摆脱这个问题。

由于我的系统中没有脉冲音频或 rtmp 接收器,我已经测试了以下内容并且它可以工作。

gst-launch-0.10 v4l2src ! ffmpegcolorspace ! queue ! x264enc pass=pass1 threads=0 bitrate=900000 tune=zerolatency ! queue ! flvmux name=mux ! fakesink  alsasrc ! queue ! audioresample !  audioconvert !  queue ! autoaudiosink

您可以相应地更改并使用它。为了使它工作并消除您面临的错误,我唯一要做的就是添加队列。

于 2012-10-02T00:18:11.457 回答
0

audioresample对我来说(带有 GStreamer 1.4.4 的 Raspberry Pi3 上的 Logitech c920)我能够通过将采样率设置为喜欢的alsasrc东西来摆脱“丢弃样本”警告。flvmuxgst-inspect-1.0 flvmux看来,它似乎flvmux只支持x-raw 和mp45512, 11025, 22050, 44100的采样率。5512, 8000, 11025, 16000, 22050, 44100这是我的工作管道

gst-launch-1.0 -v -e \
    uvch264src initial-bitrate=800000 average-bitrate=800000 iframe-period=2000 device=/dev/video0 name=src auto-start=true \
    src.vidsrc ! video/x-h264,width=864,height=480,framerate=30/1 ! h264parse ! mux. \
    alsasrc device=hw:1 ! 'audio/x-raw, rate=32000, format=S16LE, channels=2' ! queue ! audioresample ! "audio/x-raw,rate=44100" ! queue ! voaacenc bitrate=96000 ! mux. \
    flvmux name=mux ! rtmpsink location="rtmp://live-sea.twitch.tv/app/MYSTREAMKEY"

我很惊讶flvmux没有抱怨获得不支持的采样率的音频源。不确定这是否是预期的行为。

于 2016-11-27T07:01:08.867 回答