Потоковое RTSP с помощью ffmpeg?

Потоковое RTSP с помощью ffmpeg?

Итак, мне удалось успешно отправить видеопоток RTP со своего сервера на клиент на другой системе в локальной сети и воспроизвести его с помощью ffplay. Теперь я хочу отправить видео в ту же сеть с помощью RTSP, чтобы клиент мог получить видео и иметь дополнительные опции, такие как приостановка видео и т. д. Может ли кто-нибудь дать мне общее руководство или указать на ресурс, который может помочь мне в выполнении моей задачи?

ОБНОВЛЯТЬ:

Я попробовал эти команды:

ffmpeg -re -i input -f rtsp -rtsp_transport tcp rtsp://localhost:8888/live.sdp

ffplay -rtsp_flags listen rtsp://localhost:8888/live.sdp

Он начинает потоковую передачу видео в режиме реального времени, но я не вижу никаких опций для управления потоком мультимедиа, таких как воспроизведение, запись и т. д.!

Примечание: Файл .sdp, который я сейчас использую для RTSP, тот же самый, что я использовал для потоковой передачи RTP.

решение1

Кстати, мне удалось настроить локальный RTSP-сервер для тестирования с помощьюпростой-rtsp-сервери ffmpeg, выполнив следующие шаги:

  1. Создайте файл конфигурации для сервера RTSP, вызываемый rtsp-simple-server.ymlс помощью этой единственной строки:
    protocols: [tcp]
    
  2. Запустите RTSP-сервер как Docker-контейнер:
    $ docker run --rm -it -v $PWD/rtsp-simple-server.yml:/rtsp-simple-server.yml -p 8554:8554 aler9/rtsp-simple-server
    
  3. Используйте ffmpeg для потоковой передачи видеофайла (циклически) на сервер:
    $ ffmpeg -re -stream_loop -1 -i test.mp4 -f rtsp -rtsp_transport tcp rtsp://localhost:8554/live.stream
    

После этого вы сможете просматривать трансляцию с помощью ffplay:

$ ffplay -rtsp_transport tcp rtsp://localhost:8554/live.stream

Обратите внимание, чтопростой-rtsp-сервертакже может обрабатывать потоки UDP (iso TCP), но это сложно, поскольку сервер запускается как контейнер Docker.

Связанный контент