【问题标题】:Audio stream from a file using ffmpeg使用 ffmpeg 来自文件的音频流
【发布时间】:2013-09-23 10:50:47
【问题描述】:

我需要将使用 ffmpeg 不断更新的音频文件的内容流式传输到同一 LAN 上的另一台计算机。我已经下载了适用于 Windows 的 ffmpeg 静态版本。我了解在“ffmpeg”命令中指定目标 IP 地址和端口号的方法。但我无法弄清楚如何指定要流式传输的文件名。该怎么办?

音频文件的格式没有条件。它可以是任何格式。

【问题讨论】:

  • 您能解释一下您是如何使用 FFMPEG 进行流式传输的吗?向我们展示您目前拥有的命令?
  • 我使用了命令“ffmpeg -re -f lavfi -i aevalsrc="sin(400*2*PI*t)” -ar 8000 -f mulaw -f rtp rtp://10.14。 35.23:1234" 用于在发送方进行流式传输。为了播放接收到的数据,我使用了“ffplay rtp://10.14.35.24:1234”。这是为了生成音频然后发送。如果我已经有一个音频文件(不一定是 WAV 文件)怎么办?如何流式传输?

标签: c++ ffmpeg audio-streaming


【解决方案1】:

WAV 文件不是缓冲编码数据以供进一步流式传输的最佳工具。

我更喜欢使用 ffserver。这个想法是ffmpeg对流进行编码并将其上传到ffserver的“提要文件”,客户端(例如您的“远程计算机”)通过http或rtsp(rtp)从ffserver获取流(它可能是不同格式的相同流) )。

只需在此处添加音频流,将 ffmpeg 连接到它的源并将远程计算机连接到流:

  • 在 ffserver.conf 中定义单个流:

    <Stream audio.sdp>
    Feed feed1.ffm
    Format rtp
    
    NoVideo
    AudioCodec libmp3lame
    AudioBitRate 64
    AudioSampleRate 22050
    </Stream>
    

或 AVI(MPEGTS、FLV 等)

    <Stream audio.avi>
    Feed feed1.ffm
    Format avi
    ...
  • 开始音频编码/上传到服务器:

    ffmpeg -i [Your source] http://localhost:[ffserver's port]/feed1.ffm
    
  • 开始在“远程计算机”上获取 rtp(avi 等)流。

【讨论】:

  • 感谢您提供代码 sn-p。我不能使用 ffmpeg 静态构建流式传输它吗?所以这里的 audio.avi 是文件名,我需要在 ffserver.conf 中添加这个片段并让音频文件的流工作正常吗?
猜你喜欢
  • 2013-09-29
  • 2021-04-21
  • 2013-04-14
  • 2016-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-13
相关资源
最近更新 更多