Итак, мне удалось успешно отправить видеопоток 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, выполнив следующие шаги:
- Создайте файл конфигурации для сервера RTSP, вызываемый
rtsp-simple-server.yml
с помощью этой единственной строки:protocols: [tcp]
- Запустите RTSP-сервер как Docker-контейнер:
$ docker run --rm -it -v $PWD/rtsp-simple-server.yml:/rtsp-simple-server.yml -p 8554:8554 aler9/rtsp-simple-server
- Используйте 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.