LINUX.ORG.RU

RTSP и поток RTP c параметром ptime

 , , , ,


0

3

Привет всем! Всё работает прекрасно, запускается поток rtp в сеть с сервера rtsp с локальным адресом 127.0.0.1 и публичным адресом 192.168.0.10 этой командой:

/usr/bin/ffmpeg -re -f alsa -i plughw:0,0 -ac 1 -ar 32000 -acodec pcm_s16be -af "highpass=f='300', lowpass=f='4000'" -hide_banner -loglevel panic -nostdin -initial_pause 1 -f rtsp rtsp://127.0.0.1:5545/stream0

Но... Народ говорит, что есть некий параметр ptime для rtp потока, который фиксирует минимальный уровень фрагментации потока UDP и он должен быть 20 ms (ну т.е. в UDP пакете должно быть минимум 20 ms звука), а у меня 0.5 - 1 ms и пакеты получаются слишком маленькие, нагрузка на сеть большая.

Вопросы: Как сунуть этот параметр в ffmpeg? Или это надо сунуть в rtsp-сервер?

Узнай у народа в каком опенсурсном ПО этот параметр точно используется, найди в коде этого ПО как он используется, найди сходный код в ffmpeg. Судя по мануалу, скорее всего придётся патчить.

20ms опасно близко к тому, что умеют различать человеческие органы чувств. Т.е. потеря пакетов будет ощущаться с гораздо большей вероятностью.

Или это надо сунуть в rtsp-сервер

А разве в твоём коде rtsp сервером не является ffmpeg?

pon4ik ★★★★★ ()
Ответ на: комментарий от pon4ik

1. Параметр этот, как я понял, пользуется активно в SIP-телефонии, вот только как это связать с ffmpeg, слабо понимаю.

2. Нет, он только формирует поток rtp и отправляет на сервер rtsp, тот уже рулит потоками rtp, включает, отключает...

linuxmaster ★★★★ ()
Последнее исправление: linuxmaster (всего исправлений: 1)
Ответ на: комментарий от linuxmaster

Ну, если ты выпытаешь хотя бы на каком уровне osi этот параметр задаётся, это будет уже пол дела.

Другими словами, что бы связать это с каким либо инструментом надо понять, часть какого это протокола, и в какое поле в каком пакете записывается.

Попроси «народ» хотя бы ссылку на документацию по этому чудо параметру. Может в rfc по rtp он есть?

Я например бегло посмотрел сорцы ffmpeg и не увидел там ничего похожего, но это не значит, что в протоколе такого нет, только, что в ffmpeg это поле не используется, или просто называется по-другому.

pon4ik ★★★★★ ()
Ответ на: комментарий от linuxmaster

В контексте sip - ptime гуглится. Точнее в контексте sdp. Но не в контексте rtp.

Т.е, похоже, это просто контракт между sip клиентами, какое качество связи они собираются предоставлять в обмен на загрузку канала.

Почитай тыц и тыц. Возможно поможет.

pon4ik ★★★★★ ()