Повторная выборка аудиоданных RTP через сокет в виде данных PCM с использованием FFMPEG - PullRequest
0 голосов
/ 03 февраля 2020

Я хочу получить поток RTP и отправить необработанные данные, полученные в нем, через сокет TCP / UDP. Для этого я пытаюсь выполнить следующие команды.

  1. Я посылаю поток RTP, используя следующую команду.

    ffmpeg -re -i hello.wav -ar 8000 -f mulaw -f rtp rtp: //127.0.0.1: 1234

  2. Приемник для повторной передачи потока через сокет TCP / UDP.

    ffmpeg -i rtp: //127.0 .0.1: 1234 -f мулав tcp: //127.0.0.1: 5555 -hide_banner

  3. Игрок, который будет воспроизводить этот поток сокетов для проверки.

    ffplay tcp: / /127.0.0.1:5555?listen

Моя вторая команда показывает, что она получает данные и передает их по tcp через порт 5555.

Input #0, rtp, from 'rtp://127.0.0.1:1234':
  Duration: N/A, start: 0.000000, bitrate: 64 kb/s
    Stream #0:0: Audio: pcm_mulaw, 8000 Hz, mono, s16, 64 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (pcm_mulaw (native) -> pcm_mulaw (native))
Press [q] to stop, [?] for help
Output #0, mulaw, to 'tcp://127.0.0.1:5555':
  Metadata:
    encoder         : Lavf58.29.100
    Stream #0:0: Audio: pcm_mulaw, 8000 Hz, mono, s16, 64 kb/s
    Metadata:
      encoder         : Lavc58.54.100 pcm_mulaw

Но третий Команда ничего не получает, даже я попытался вывести ответ в файл, используя FFMPEG в команде три, но результаты те же.

Что я делаю не так, пожалуйста, предложите правильные команды, используя FFMPEG.

1 Ответ

0 голосов
/ 05 февраля 2020

Следующие три команды работали для меня.

ffmpeg -re -i music.wav -ar 8000 -f mulaw -f rtp rtp://127.0.0.1:1236
ffmpeg -i rtp://127.0.0.1:1236 -f wav tcp://127.0.0.1:1256
ffplay tcp://127.0.0.1:1256?listen -ar 8000

Я могу отправить файл как RTP, преобразовать его в raw wav и отправить через сокет, а затем воспроизвести его из этого сокета.

...