ffmpeg-通过 RTP 使用 Vorbis 编解码器传输音频

ffmpeg-通过 RTP 使用 Vorbis 编解码器传输音频

RTP我正在尝试使用协议和编解码器设置流式音频Vorbis。从最小示例开始 - 在同一台机器上使用发送方和接收方生成单声道样本(两个实例ffmpeg,版本 N-91266-g8c20ea8ee0):

首先运行发送方,将 SDP 保存到文件:

ffmpeg -re -f lavfi -i aevalsrc="sin(400*2*PI*t)" -acodec libvorbis -f rtp rtp://127.0.0.1:1234 -sdp_file "g:\sinwave.sdp"

然后接收者:

ffmpeg -protocol_whitelist "file,udp,rtp" -i "g:\sinwave.sdp" -v debug "g:\1.ogg"

接收数据保存到文件只是举例,实际是计划写入管道或者套接字)

ffmpeg但我在接收方遇到了错误:

[sdp @ 0000000000573580] Bad packed header lengths (30,0,2923,3219)
[vorbis @ 0000000000587940] Extradata missing.
Error while opening decoder for input stream #0:0 : Invalid data found when processing input

我错过了ffmpeg哪方面的什么选择?

答案1

看起来使用-sdp_file参数创建 SDP 文件无法正常工作,这里是发送方的工作命令行,其中使用重定向进程输出(>字符)创建的 SDP 文件:

ffmpeg -re -f lavfi -i aevalsrc="sin(400*2*PI*t)" -acodec libvorbis
-f rtp rtp://127.0.0.1:1234 > "g:\sinwave.sdp"

生成的 SDP 文件的大小为 4503 字节(而不是 4095 字节),并且configuration=行更大;最后两者ffmpegffplayer可以使用该 SDP 文件接收流。

相关内容