невозможно транслировать RTMP на веб-страницу - PullRequest
0 голосов
/ 03 мая 2019

Я пытаюсь транслировать видео с локального диска в браузер с использованием RTMP. Я следую этому учебнику .

Это часть кода cpp:

std::string video_fname;
video_fname = std::string(argv[1]);
cv::VideoCapture video_capture;
bool from_camera = false;
if(video_fname == "0") {
    video_capture = cv::VideoCapture(0);
    from_camera = true;
} else {
    video_capture=  cv::VideoCapture(video_fname);
}

if(!video_capture.isOpened()) {
    fprintf(stderr, "could not open video %s\n", video_fname.c_str());
    video_capture.release();
    return 1;
}

int cap_frame_width = video_capture.get(CV_CAP_PROP_FRAME_WIDTH);
int cap_frame_height = video_capture.get(CV_CAP_PROP_FRAME_HEIGHT);

int cap_fps = video_capture.get(CV_CAP_PROP_FPS);
printf("video info w = %d, h = %d, fps = %d\n", cap_frame_width, cap_frame_height, cap_fps);

int stream_fps = cap_fps;

int bitrate = 500000;
Streamer streamer;
StreamerConfig streamer_config(cap_frame_width, cap_frame_height,
                               1920, 1080,
                               stream_fps, bitrate, "high444", "rtmp://127.0.0.1/live/mystream");

streamer.enable_av_debug_log();
streamer.init(streamer_config);

size_t streamed_frames = 0;

Так что, как вы видите, ссылка RTMP равна rtmp://127.0.0.1/live/mystream, после запуска моего Nginx я могу просто вставить эту ссылку в поле URL в моем браузере и воспроизвести ее без каких-либо проблем. Однако теперь мне нужно вместо этого транслировать его на веб-странице HTML, и я не смог этого сделать.

HTML-код:

<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>videojs-contrib-hls embed</title>

  <!--

  Uses the latest versions of video.js and videojs-http-streaming.

  To use specific versions, please change the URLs to the form:

  <link href="https://unpkg.com/video.js@6.7.1/dist/video-js.css" rel="stylesheet">
  <script src="https://unpkg.com/video.js@6.7.1/dist/video.js"></script>
  <script src="https://unpkg.com/@videojs/http-streaming@0.9.0/dist/videojs-http-streaming.js"></script>

  -->

  <link href="https://unpkg.com/video.js/dist/video-js.css" rel="stylesheet">
</head>
<body>
  <h1>Video.js Example Embed</h1>

  <video-js id="my_video_1" class="vjs-default-skin" controls preload="auto" width="640" height="268">
    <source src="rtmp://127.0.0.1/live/mystream" type="rtmp/flv">
  </video-js>

  <script src="https://unpkg.com/video.js/dist/video.js"></script>
  <script src="https://unpkg.com/@videojs/http-streaming/dist/videojs-http-streaming.js"></script>

  <script>
    var player = videojs('my_video_1');
  </script>

</body>
</html>

У меня постоянно появляется сообщение о том, что формат видео не поддерживается. Пожалуйста, покажите, как это сделать. Я просмотрел все руководства онлайн (на самом деле они все одинаковые), и ни одно из них не работает. Спасибо

1 Ответ

2 голосов
/ 03 мая 2019

У меня постоянно появляется сообщение о том, что формат видео не поддерживается

Это связано с тем, что rtmp не поддерживается.Ни один браузер не поддерживает RTMP.Вы должны преобразовать сторону сервера во что-то, что поддерживается, например, HLS или DASH.

...