
Я пытаюсь настроить потоковое аудио с использованием 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 с использованием -sdp_file
параметра работает неправильно. Вот рабочая командная строка для отправителя, где файл 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.