Потоковое HTTP-вещание с помощью ffmpeg

Вопрос или проблема

Я хочу транслировать видеопоток по HTTP, но ffmpeg выдает сообщение об ошибке:

[tcp @ 0x5636b74e4740] Не удалось подключиться к tcp://127.0.0.1:4000:
Соединение отклонено http://127.0.0.1:4000/: Соединение отклонено

Моя команда:

ffmpeg -i rtsp://username:[email protected]:554 -vsync 0 -vcodec copy -movflags frag_keyframe+empty_moov -f mp4 http://127.0.0.1:4000/

Я просто пытаюсь конвертировать RTSP-видео, чтобы оно могло воспроизводиться в браузерах с использованием HTTP. Очевидно, что мне нужен HTTP-сервер для этого, но у меня нет идей, как это сделать. Буду признателен за помощь.

Спасибо

Чтобы запустить ffmpeg, вам сначала нужно установить ffmpeg на ваш компьютер… и убедиться, что он находится в той же папке, что и html файл. Затем выполните команду:

ffmpeg -i rtsp://username:[email protected]:554/Streaming/Channels/101 -fflags flush_packets -max_delay 5 -flags -global_header -hls_time 5 -hls_list_size 2 -hls_flags delete_segments -vcodec copy -y video1.m3u8

Это конвертирует поток в видеофайл с расширением m3u8.

После выполнения команды сделайте отображение на веб-странице с использованием html:

<html>
  <head>
    <link href="https://vjs.zencdn.net/7.17.0/video-js.css" rel="stylesheet" />
    <style>
      .cctvplay
      {
        float: left;
        margin-left: 5px;
        margin-top: 5px;
      }
    </style>
  </head>
  <body>
    <div class="cctvplay" >
      <video id="my-video" style="text-decoration: none" class="video-js" controls poster="" preload="auto" width="520" height="440" data-setup=" {}" >
        <source src="video1.m3u8" />
      
    </div>
         <script src="https://vjs.zencdn.net/7.17.0/video.min.js"></script>
  </body>
</html>

Удачи…

Ответ или решение

Для стриминга видео через HTTP с помощью FFmpeg необходимо учитывать несколько важных аспектов, в том числе наличие HTTP-сервера и правильное выполнение команды FFmpeg для трансляции потока.

Установка HTTP-сервера

Для того чтобы вы могли организовать стриминг через HTTP на локальном хосте (127.0.0.1:4000), вам требуется установить и запустить HTTP-сервер. Одним из простых способов это сделать является использование сервера Nginx или Python HTTP-сервера.

  1. Используя Python:

    Убедитесь, что у вас установлен Python. Затем выполните следующую команду в терминале (в директории, где будет храниться ваш проект):

    python -m http.server 4000
  2. Используя Nginx:

    Понадобится установить Nginx и настроить его на прослушивание порта 4000. Пример конфигурации:

    server {
       listen 4000;
       server_name localhost;
    
       location / {
           root /path/to/your/video/files;  # Укажите путь, где будут находиться ваши файлы
           index index.html;
       }
    }

Команда FFmpeg

Теперь, когда сервер запущен, вы можете использовать FFmpeg для преобразования потока RTSP в формат, который можно будет использовать для потоковой передачи по HTTP. Попробуйте следующую команду для создания файла video1.m3u8:

ffmpeg -i rtsp://username:[email protected]:554/Streaming/Channels/101 -fflags flush_packets -max_delay 5 -flags -global_header -hls_time 5 -hls_list_size 0 -hls_flags delete_segments -vcodec copy -y /path/to/your/video/files/video1.m3u8

HTML для воспроизведения видео

После выполнения команды и создания файла плейлиста video1.m3u8 создайте HTML-страницу для воспроизведения стрима:

<html>
  <head>
    <link href="https://vjs.zencdn.net/7.17.0/video-js.css" rel="stylesheet" />
    <style>
      .cctvplay {
        float: left;
        margin-left: 5px;
        margin-top: 5px;
      }
    </style>
  </head>
  <body>
    <div class="cctvplay">
      <video id="my-video" class="video-js" controls preload="auto" width="520" height="440" data-setup="{}">
        <source src="http://127.0.0.1:4000/video1.m3u8" />
      </video>
    </div>
    <script src="https://vjs.zencdn.net/7.17.0/video.min.js"></script>
  </body>
</html>

Проверка

После того как вы написали HTML и запустили HTTP-сервер, откройте браузер и перейдите по адресу http://127.0.0.1:4000/, чтобы просмотреть вашу HTML-страницу и воспроизвести видео.

Заключение

Эта последовательность шагов позволит вам успешно стримить видео через HTTP, используя FFmpeg для преобразования потока и простой HTTP-сервер для обслуживания файла. Убедитесь, что все компоненты работают корректно и каждый шаг выполнен без ошибок. Если возникнут проблемы, стоит проверить логи и сообщения об ошибках для дальнейшего устранения неполадок. Удачи!

Оцените материал
Добавить комментарий

Капча загружается...