我正在尝试解决 avconv/FFmpeg 中的端口绑定问题。我有两个测试命令;一个通过 UDP 发送音频流:
avconv -i test.wav "udp://localhost:6613?localport=6614&reuse=1&connect=0"
还有一个会倾听的人:
avconv -loglevel debug -f wav -ac 1 -i "udp://localhost:6613?reuse=1&connect=0" out.wav
如果第二个(侦听器)命令在第一个命令之前运行,它就会起作用;它只是挂在那里,直到第一个命令开始通过该端口发送数据。
但是,如果第一个命令启动第一的,并在设置侦听器之前开始发送数据,运行第二条命令会产生以下输出:
Opening an input file: udp://localhost:6613.
udp://localhost:6613: Operation not permitted
然而,这不是端口绑定错误!
如果我reuse=1
从第二个命令中删除并运行它两次 - 从而实际上尝试绑定套接字两次 - 它会生成以下消息:
Opening an input file: udp://localhost:6613.
[udp @ 0x1a77140] bind failed: Address already in use
udp://localhost:6613: Input/output error
只要reuse=1
仍在命令中,运行两次就会不是从绑定中引发错误,并且它在测试命令中,希望它能够解决问题......但它没有。
所以,我想知道为什么它在收听正在进行的流时会出现问题 - 以及如何防止这种情况。