|
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 13
|
|
Алгоритм разбора rtp трафика18.12.2013, 08:09. Показов 7743. Ответов 12
Метки нет (Все метки)
Всем привет !
Есть задача : разобрать rtp пакеты с аудиоданными, собрать аудиоданные сессии в аудиофайл, раскодировать и воспроизвести на плеере. Можно использовать готовые библиотеки. Для образца rtp трафика я скачал файл с сайта wireshark (http://wiki.wireshark.org/Samp... IP_and_RTP). Создал проект (kdevelop) который будет разбирать rtp трафик, и возникли вопросы с алгоритмом решения задачи : 1. как мне имитировать поток rtp для разбора - открывать скачаный файл функцией open() и считывать байты оттуда или как то по другому ? 2. Каков алгоритм разбора трафика - ведь до rtp еще надо добраться. Я понимаю что вначале надо считать кадр ethernet и уже оттуда разбирать согласно rfc ? Но как узнать где начало и где конец кадра ? Буду признателен за направление в нужное русло
0
|
|
| 18.12.2013, 08:09 | |
|
Ответы с готовыми решениями:
12
Алгоритм шаблонного или полного разбора Программа, считывающая диапазон и выдающая «OK» в случае успешного разбора или «FAIL» в случае неуспешного разбора Построение решающих LR разбора и LL разбора |
|
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
|
|
| 19.12.2013, 03:46 | |
|
Давайте поначалу определимся, что Вам нужно:
1. Вам нужно разобрать rtp пакет? В данном случае под разбором подразумевается определение header'a (версии, src идентификаторов и т.д) и payload'a (тип, длина и прочее), на составляющие? Тогда читайте rfc - структура rtp пакета. 2. Просто записать аудио файл и потом воспроизвести? Тогда используйте ffmpeg или аналог. Стримить можете тем же ffmpeg'ом, к примеру: Кликните здесь для просмотра всего текста
FFmpeg can stream a single stream using the RTP protocol. In order to avoid buffering problems on the other hand, the streaming should be done through the -re option, which means that the stream will be streamed in real-time (i.e. it slows it down to simulate a live streaming source. For example the following command will generate a signal, and will stream it to the port 1234 on localhost: ffmpeg -re -f lavfi -i aevalsrc="sin(400*2*PI*t)" -ar 8000 -f mulaw -f rtp rtp://127.0.0.1:1234 To play the stream with ffplay, run the command: ffplay rtp://127.0.0.1:1234 Note that rtp by default uses UDP, which, for large streams, can cause packet loss. See the "point to point" section in this document for hints if this ever happens to you. https://trac.ffmpeg.org/wiki/StreamingGuide В своем приложении открываете поток делаете demux и decode (если надо) пишете в файл. п.с. Все выше следующие имеет смысл если Вы представляете как работать с udp трафиком.
0
|
|
|
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 13
|
|
| 19.12.2013, 14:05 [ТС] | |
|
Спасибо за информацию.
Я направил с помощью команды ffmpeg -re -f mp3 -i sender.mp3 -ar 8000 -f mulaw -f rtp rtp://10.14.35.23:1234 аудиофайл на другой хост, на котором отслеживал прием потока в wireshark. Но почему в wireshark показываются только udp пакеты, а rtp не распознаны. Почему так происходит ?
0
|
|
|
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
|
|
| 19.12.2013, 14:27 | |
|
потому что епу нужно указать как трактовать пакеты (Decode As: RTP).
0
|
|
|
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 13
|
|
| 19.12.2013, 15:49 [ТС] | |
|
Спасибо
0
|
|
|
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 13
|
|
| 25.12.2013, 07:17 [ТС] | |
|
Теперь у меня другая проблема. Трафик я научился имитировать. Через ffmpeg (ffmpeg -re -f mp3 -i sender.mp3 -ar 8000 -f mulaw -f rtp rtp://10.14.35.23:1234) я посылаю rtp пакеты на другой компьютер, где ловлю трафик через wireshark.
Вопрос: как мне теперь сохранить этот трафик в mp3 или wav формате ? Wireshark позволяет сохранить только в raw формат ?
0
|
|
|
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
|
|
| 25.12.2013, 13:09 | |
|
Вы не правильно ставите задачу. Я так понял у вас она такая: "Перача аудио файла постредством готовых приложений".
Ответ используйте ffmpeg как на стороне отправителя так и на стороне получателя.
0
|
|
|
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 13
|
|
| 25.12.2013, 15:55 [ТС] | |
|
Вообще задача у меня такая: мне подают трафик, а я должен из него найти пакеты содержащие голос, собрать из пакетов сессии и записать данные в файл чтобы в дальнейшем их можно было воcпроизводить.
Пока через wireshark в трафике нахожу rtp пакеты, выделяю группу пакетов по ssid, но дальше не понимаю как сохранить данные в аудиофайл. Wireshark мои rtp пакеты не проигрывает или сохраняет только в raw, я подозреваю что плеер wireshark поддерживает не все аудиокодеки. В rtp пакетах кодек обозначен как dynamicrtp-type-96 (payload type=dynamicrtp-type-96). Этот тип пайлоада соответствует кодеку mpa-robust (http://en.wikipedia.org/wiki/R... eo_profile) Как мне теперь из пакетов сохранить голос в аудиофайл ? Добавлено через 7 минут Пробовал так через ffmpeg декодировать - FFmpeg -f mpa-robust -i in.raw out.wav - в итоге ffmpeg не знает что такое mpa-robust
0
|
|
|
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
|
|
| 25.12.2013, 16:16 | |
|
Ну вопервых не mpa-robust а mp3, во вторых Вы ffmpeg должны собрать с поддержкой mp3.
https://trac.ffmpeg.org/wiki/H... and%20x264 п.с. Вообщето "пакеты содержащие голос" понятие не техническое. п.с.с. Но на самом деле ffmpeg может сам разобратся что есть что, просто ffmpeg -i path/to/imput -acodec copy -f mp3 path/to/out.mp3 Также: http://ffmpeg.org/ffmpeg.html#Stream-copy
0
|
|
|
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 13
|
|
| 25.12.2013, 16:51 [ТС] | |
|
Спасибо попробую
0
|
|
|
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 13
|
|
| 28.12.2013, 15:37 [ТС] | |
|
Проиграть направляемый на хост rtp поток получилось (ffplay -i /path/file.sdp) , а вот сохранить поток в аудиофайл не получается.
ffmpeg собрал с поддержкой mp3. Команда ffmpeg -i path/to/input.raw -acodec copy -f mp3 path/to/out.mp3 выдает ошибку : Invalid data found when processing input. input.raw файл я получаю через wireshark путем копирования в файл payload всех пакетов rtp сессии потока, направляемого на хост через команду ffmpeg -re -f mp3 -i sender.mp3 -ar 8000 -f mulaw -f rtp rtp://10.14.35.23:1234. Подскажите как из rtp пакетов собрать аудиофайл wav?
0
|
|
|
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
|
||
| 28.12.2013, 16:32 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 13
|
|
| 28.12.2013, 17:15 [ТС] | |
|
0
|
|
| 28.12.2013, 17:15 | |
|
Помогаю со студенческими работами здесь
13
Поведенческие факторы. Влияние накрученного Трафика., Управление ПФ с помощью трафика. На примере we Контроль трафика приложения, получение текущего трафика в переменную RTP нагрузка Разбор RTP RTP. Пакеты в секунду. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|