ffmpeg - потоковое аудио с кодеком vorbis по RTP

417
apdevelop

Я пытаюсь настроить потоковое аудио с использованием 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по любой из сторон?

0

1 ответ на вопрос

0
apdevelop

Выглядит как создание файла 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.