Я пытаюсь устранить проблему привязки порта в 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
все еще находится в команде, его повторное выполнение не вызовет ошибку привязки, и оно находится в тестовых командах в надежде, что это решит проблему ... а это не так.
Итак, я хотел бы знать, почему возникает проблема с прослушиванием текущего потока и, более того, как это предотвратить.