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=
行更大;最后两者ffmpeg
都ffplayer
可以使用该 SDP 文件接收流。