【问题标题】:ffmpeg RTP audio multicast stream choppyffmpeg RTP 音频组播流断断续续
【发布时间】:2020-03-13 12:49:50
【问题描述】:

我正在尝试通过 RTP 多播传输 .wav 音频文件。我正在使用以下命令:

ffmpeg -re -i Melody_file.wav -f rtp rtp://224.0.1.211:5001

它成功启动了流。但是,音频输出非常不稳定。有什么想法可以使音频流干净吗?我根本不需要任何视频。下面是我的输出截图:

【问题讨论】:

  • 你用什么软件播放流?您可以尝试增加 a) 在数据包被操作系统丢弃的情况下增加 UDP 套接字接收器缓冲区 b) RTP 抖动缓冲区或应用程序播放缓冲区以平滑播放。
  • 我有一部 yealink VoIP 电话正在监听组播地址。当我多播相同的音频文件时,从一个电话到另一个电话没有问题。但是当我使用 ffmpeg 进行多播时,它会不断地切碎。我尝试了 pkt_size,我注意到的一件事是 300 或更低的数字会产生很多波动,但我尝试了一个非常高的数字,它不会变得完美。
  • 我想我会尝试使用 tcpdump 或 wireshark 来捕获流量,看看电话到电话和 ffmpeg 到电话之间有什么区别。您确定手机在传输文件时正在发送 pcm mulaw 吗?当您发送压缩音频(我确定 VOIP 电话有多个内置编解码器)或您需要发送 pcm 时会发生什么?
  • 我认为可能是编解码器问题。 VoIP 电话设置为 G722 的多播编解码器,但 wav 文件是 PCM MULAW。所以也许我需要更改 voip 电话上的编解码器设置,我看到 PCMU 的编解码器选项也许我需要选择它?我会在星期一试试
  • @Ralf 我尝试在 voip 电话上将多播编解码器更改为 PCMU,但仍然存在完全相同的问题。我在手机上有抖动设置,我试着玩弄它,但没有任何区别。有什么想法吗?

标签: ffmpeg


【解决方案1】:

只需在 @Ralf 和 @Ahmed 之间的 cmets 中总结关于设置 asetnsamplesaresample 的有用答案 - 使用在 G711/mulaw 音频的 Snom wiki 中也提到的这些方法获得更流畅的多播传输/播放:

ffmpeg -re -i Melody_file.wav -filter_complex 'aresample=8000,asetnsamples=n=160' -acodec pcm_mulaw -ac 1 -f rtp rtp://224.0.1.211:5001

或使用更高质量的 G722 音频编解码器:

ffmpeg -re -i Melody_file.wav -filter_complex 'aresample=16000,asetnsamples=n=160' -acodec g722 -ac 1 -f rtp rtp://224.0.1.211:5001

【讨论】:

    猜你喜欢
    • 2016-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-15
    • 1970-01-01
    • 2017-11-21
    相关资源
    最近更新 更多