Jump to content
  • 0

html5 video autoplay


vfp7
 Share

Question

Добрый день

Вы меня можете помнить по теме видеонаблюдение ... :) (© Симсоны)

Не могу победить маленькую для профи, но неразрешимую для ламеров, то есть для меня проблемку:

нужно добиться автопроигрывания видеопотока с сервера видеонаблюдения, в коде ниже поток запустится только после правого клика на картинке "contlol" и выборе пункта "открыть видео", а надо чтобы сразу автоматически пошло отображение видеопотока.

Код:

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="content-type" content="text/html; charset=utf-8">

<title>Видеонаблюдение в HTML5</title>

</head>

<body onload="java script:video.play()"> ### здесь я пытался при загрузке страницы включить отображение видеопотока ###

<p><video class="video-stream" autoplay="autoplay" controls="controls"

preload="none" src="http://security:8081/stream.mjpg"

type="video/mjpg; codecs=mjpg">

Смените Вашего осла на рыжика!</video></p>

</body>

</html>

Link to comment
Share on other sites

11 answers to this question

Recommended Posts

  • 0

код, конечно, не мешало бы и подчистить.

И onload="java script:video.play()" привести в порядок, убрав лишний пробел.

Но почему не начинает сразу проигрывать при autoplay="autoplay", неясно. Всё должно быть верно.

А есть ли возможность показать страницу хотя бы с тестовыми данными?

Link to comment
Share on other sites

  • 0
лишний пробел

Это медвежья услуга форумного движка (как бы перестраховка от XSS). Другое дело, что метка "javаscript:" в обработчиках событий вида onчто-то вообще ни к селу ни к городу не пристала :)

Link to comment
Share on other sites

  • 0
код, конечно, не мешало бы и подчистить.

И onload="java script:video.play()" привести в порядок, убрав лишний пробел.

Но почему не начинает сразу проигрывать при autoplay="autoplay", неясно. Всё должно быть верно.

А есть ли возможность показать страницу хотя бы с тестовыми данными?

Вот код с реальными данными, это поток с сервера видеонаблюдения аквапарка (найдено в google), все совершено аналогично - нет автопроигрывания:

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="content-type" content="text/html; charset=utf-8">

<title>Видеонаблюдение в HTML5</title>

</head>

<body onload="java script:video.play()">

<p><video class="video-stream" autoplay="autoplay" controls="controls"

preload="none" src="http://video.kva-kva.ru:8081/stream.mjpg"

type="video/mjpg; codecs=mjpg">

Смените Вашего осла на рыжика!</video></p>

</body>

</html>

Link to comment
Share on other sites

  • 0
Ответ лежал на поверхности.

<img src="http://video.kva-kva.ru:8081" />

:)

Почти, только используя img src мы будем использовать отображение потока в виде перегружаемых картинок, а при использовании video мы используем установленный в ОС проигрыватель, с поддержкой 2D и 3D ускорений ...

Тег img src используется в текущей версии системы видеонаблюдения, и при 8 камерах начинаются затычки рендеринга, HTML5 с тэгом video как раз и должен исправить эту проблему, если удастся победить автопроигрывание :)

Link to comment
Share on other sites

  • 0

Прилагаю один из текущих кодов системы видеонаблюдения, он то и ступорится на слабой машине из за использования img src :

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html dir="ltr" lang="ru"><head>

<meta content="text/html;charset=UTF-8" http-equiv="Content-Type">

<title>Видеонаблюдение СМК</title>

<script>

window.onbeforeunload = function (oEvent) {

document.getElementById('close').src = 'close.php';

oEvent.returnValue = " ";

}

</script><!--[if IE]>

<script>

window.onbeforeunload = function () {

document.getElementById('close').src = 'close.php';

window.event.returnValue = " ";

}

</script>

<![endif]-->

<meta content="motion GUI" name="description">

</head><body style="overflow: visible; color: white; background-color: black;">

<div style="width: 100%; height: 100%;">

<table style="border: 1px solid ; width: 100%; height: 100%;" border="1" cellpadding="1" cellspacing="1">

<caption style="caption-side: right;"><br>

</caption> <tbody>

<tr>

<td style="text-align: left; vertical-align: top;"> <a href="view.html?port=8083" target="newtab"> <img style="border: 1px solid ; width: 99%; height: 99%;" alt="Периметр 2" src="http://security:8083/stream.mjpg" align="middle" hspace="1" vspace="1"> </a> </td>

<td style="text-align: left; vertical-align: top;"> <a href="view.html?port=8084" target="newtab"> <img style="border: 1px solid ; width: 99%; height: 99%;" alt="Периметр 3" src="http://security:8084/stream.mjpg" align="middle" hspace="1" vspace="1"> </a> </td>

<td style="text-align: left; vertical-align: top;"> <a href="view.html?port=8081" target="newtab"> <img style="border: 1px solid ; width: 99%; height: 99%;" alt="Отгрузка" src="http://security:8081/stream.mjpg" align="middle" hspace="1" vspace="1"> </a> </td>

</tr>

<tr>

<td style="text-align: left; vertical-align: top;"> <a href="view.html?port=8085" target="newtab"> <img style="border: 1px solid ; width: 99%; height: 99%;" alt="Периметр 4" src="http://security:8085/stream.mjpg" align="middle" hspace="1" vspace="1"> </a> </td>

<td style="text-align: left; vertical-align: top;"> <a href="view.html?port=8086" target="newtab"> <img style="border: 1px solid ; width: 99%; height: 99%;" alt="Периметр 5" src="http://security:8086/stream.mjpg" align="middle" hspace="1" vspace="1"> </a> </td>

<td style="text-align: left; vertical-align: top;"> <a href="view.html?port=8082" target="newtab"> <img style="border: 1px solid ; width: 99%; height: 99%;" alt="Проходная" src="http://security:8082/stream.mjpg" align="middle" hspace="1" vspace="1"> </a> </td>

</tr>

<tr>

<td style="text-align: center; vertical-align: middle;"> <a href="ftp://security/" target="newtab"> архив записей </a> </td>

<td style="text-align: center; vertical-align: middle;"> <a rel="contact" href="mailto:info@info.ru?subject=%D0%9E%D1%82+%D0%BE%D1%85%D1%80%D0%B0%D0%BD%D1%8B+%D0%A1%D0%9C%D0%9A">сообщение

по эл. почте </a> </td>

</tr>

</tbody>

</table>

</div>

<iframe src="blank.html" id="close" style="border: 0pt none ; height: 0pt; width: 0pt;">&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;

amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;a

mp;amp;amp;amp;amp;amp;amp;amp;lt;/body&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;

amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;a

mp;amp;amp;amp;amp;amp;amp;amp;gt;

&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;

amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;a

mp;amp;amp;amp;amp;amp;amp;amp;lt;/html&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;

amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;a

mp;amp;amp;amp;amp;amp;amp;amp;gt;

</iframe>

</body></html>

Link to comment
Share on other sites

  • 0

Код надо оформлять в специально предусмотренные для того теги.

Что касается воспроизведения видео, то тут вариантов просто масса. Я когда-то использовал ffserver и выводил поток в файл swf. Ну и на сайте его воспроизводил обчной флэшкой.

Link to comment
Share on other sites

  • 0
Код надо оформлять в специально предуспотренные для того теги.

Что касается воспроизведения видео, то тут вариантов просто масса. Я когда-то использовал ffserver и выводил поток в файл swf. Ну и на сайте его воспроизводил обчной флэшкой.

Такие варианты я тоже продумывал, но в том то и дело, что теоретически HTML5 через тэг video позволяет легко и красиво решить эту проблему.

По спецификации тэга video autoplay должно АВТОМАТИЧЕСКИ начаться воспроизведение видеопотока, а в действительности - этого не происходит.

Вручную все отрабатывает, autoplay - не работает, значит надо искать хитрый болт на 16 - java кодом с имитировать ручной запуск воспроизведения.

А вот здесь моих знаний явно не хватает.

Я думаю лучший вариант - по событию "завершение загрузки страницы" вызвать как то обработку video.play()

Описание метода play с ресурса http://w3pro.ru/article/vvedenie-v-html5-video :

Элементы <video> и <audio> являются экземплярами новых медиа-элементов HTML5 DOM, которые предоставляют мощный API, позволяя разработчикам управлять воспроизведением видео с помощью целого ряда новых методов и свойств JavaScript. Давайте взглянем на некоторые наиболее интересные из них, позволяющие создать собственный простой контроллер:

play() и pause()

Совершенно очевидно, эти методы начинают и останавливают воспроизведение видео. play() начнёт показ видео с текущей позиции воспроизведения. Когда фильм впервые загружен, этой позицией будет первый кадр ролика. Обратите внимание, что нет метода stop() — если вы хотите остановить воспроизведение и "перемотать" на начало ролика, вы должны использовать pause() и самостоятельно программно изменить текущую позицию воспроизведения.

Edited by vfp7
Link to comment
Share on other sites

  • 0
Почти, только используя img src мы будем использовать отображение потока в виде перегружаемых картинок, а при использовании video мы используем установленный в ОС проигрыватель, с поддержкой 2D и 3D ускорений ...
Такие варианты я тоже продумывал, но в том то и дело, что теоретически HTML5 через тэг video позволяет легко и красиво решить эту проблему.

По спецификации тэга video autoplay должно АВТОМАТИЧЕСКИ начаться воспроизведение видеопотока, а в действительности - этого не происходит.

Вручную все отрабатывает, autoplay - не работает, значит надо искать хитрый болт на 16

Камера возвращает картинки вот в чем ответ, это не видео.

Link to comment
Share on other sites

  • 0
Камера возвращает картинки вот в чем ответ, это не видео.

Это не камера, это сервер видеонаблюдения на motion под FreeBSD,

он выдает видеопоток используя ffmpeg в своем коде.

Принцип работы motion в общем случае ( можно настроить как угодно ) - собираем потоки и ( или ) картинки с камер видеонаблюдения, обрабатываем на предмет движения, если есть движение - то запись на диск, а так же одновременно выдаем в видеопотоке обработанные данные, все это использует ffmpeg.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy