← Форум / Документация / Стриминг
Стриминг (или правильнее псевдостриминг — возможность смотреть видео с любого момента времени без предварительной загрузки) можно включить в стилях, начиная с версии плеера 0.46 в версии.
Работоспособность этой опции зависит от сервера, на котором лежит видео. Он должен поддерживать выдачу потока с заданного ключевого кадра (на это способны nginx, lighttpd, red 5 и т.д.) Если сервер это поддерживает, то в ответ на запрос video.flv?start=X начнется загрузка c заданного кадра. В редакторе стилей можно указать, какие данные будут отправляться на сервер (если это байты, то ролик должен содержать информацию о ключевых кадрах в метаданных).
Есть решение Xmoov (нужен только PHP).
Переменную для запроса можно также указать в стилях (по умолчанию start).
uppod | Ссылка на пост (Смотрели 61039) | 17.01.09 05:00 Ответить |
MMS майкрософтовский протокол
при этом другими плеерами перематывается нормально. с flv файлами все ок. может подскажите куда копать и/или гляните на файл? спасибо
С flv работает, а с МР4 не хотит. Плеер даже не пытается передать запрос с переменной start,
и сразу же выдает ошибку о кадрах (
Подскажите плиз, какой модуль нужен для nginx (стандартный для flv нормально отдает файл с заданного байта, но плеер говорит, что ключевых кадров нет, а на другом сервере, откуда этот файл, все нормально перематывается)
Думаю гиморойно:
Читать FLV файл с нужного байта, монтировать всякими извращёнными методами MetaData в кусок видео для корректной работы, делать спаренный сервер типа Apache + Lighttpd для снятия нагрузки с Apache, шифровать прямой путь к файлу который всёравно можно скачать грабером стрим-видео например Sothink Web Video Downloader.
Можно же обсалютно на хляву использовать Red5 server передавать FLV видео по RTMP протаколу. Нет нагрузки на Apache, ненужно заставлять сервак читать файл с опредилённого места и обрабатывать, ненужно ничего шифровать, скачать традиционными граберами видео нереально + никакого кеширования на стороне клиента. Возможность связывать воспроизведение FLV с любой CMS с любым HTTP сервером.
Мы же всё чето разбиваем ковыряем делаем через ж. а потом говорим что это круто.))
Возможности RED5 не ограничиваются в FLV стриминге точно также он может поступать и с MP4 и кучей других форматов видео. Так же можно организовать видео чаты и прочее. Есть куча примеров.
Если RED5 это сложно то есть альтернатива WOWZA2 но уже за недорогие бабки. Разница тока в том что WOWZA более проста в настройке. Flash Media Server это намного дороже и муторней чем WOWZA2.
Вот пример RTMP воспроизведения
Всем спасибо!
Удачи!
512 Kb\s или даже 256 Kb\s вполне достаточно для просмотра, почитай характиристики передачи по RTMP. Там одним из самых главных плюсов то что он может быстро передать видео с нужной позиции при малых скоросях интернета. Единственный большой минус в том что нужен очень серьёзный интернет канал для RTMP сервера. Поэтому организовывать крупные видео сервисы на RTMP очень накладно. А так это намного лучше чем псевдо-стриминг.
Даже демку можно поюзать. oflaDemo как раз оно и есть.
Непонял вопрос! Windows + Red5 + Adobe Flash ( ActionScript2 ) это?
Win7 + WebServer( Apache2+php5+Mysql5+CMS ) + Wowza2 + Flash(As2)
Всё круто! Только вот один единственный вопрос как в RED5 в oflaDemo назначить свою директорию для видео? Не oflaDemo/streams/ а например F:/my_stereams или D:/my_stereams
Моя почта если что admin@tarantinov.ru
admin
Как создаются директории для сервера WOWZA.
Поясняю…
Допустим у нас WOWZA установлен на диске C://
файлы для SimpleVideoStreaming на D:// и на F:// дисках,так вот как будет выглядеть ссылка на файл F://clips/simple.mp4 и D://clips/simple.mp4.
Заранее благодарен,с уважением Арнак Меликян !!!
но эта информация не проверена
В контейнере mp4 нужно, чтобы индекс кадров был записан в начале, а не в конце файла, как происходит при пользовании многими средствами создания mp4-видео. Чтобы исправить это (так называемый moov-atom), нужно воспользоваться бесплатными утилитами mp4box (консольная) и Yamb (gui к ней). Там такой режим записи mp4 уже включен по умолчанию.
Я имею ввиду, поддерживает ли это плеер, на PHP я реализацию и сам написать могу.
Справедливости ради надо заметить, что и Quicktime этим похвастаться в настольных версиях плееров не может, но в iphone это (то есть проигрывание mp4-файла с любого сервера) уже реализовано и прекрасно работает.
\"Атомные\" подробности
Потом с помощью Range все таки не обязательным будет использование скриптов. Что даёт возможность перематывать видео хоть хостинга на народе.
Файл у меня уже в кеше (Squid). Запускаю на проигрывание. И тут же перематываю на нужный кусок. Squid не успевает отдать до того места а поскольку получил ссылку другого вида думает что это другой файл и грузит его заново с хостинга.
Апач Range поддерживает он прописаны в RFC2616 поэтому скрипты для этого не нужны.
if(String(_root.start_seek)==\"undefined\")
{
_root.start_seek=0;
}//end if
//Создаем объект NetConnection:
var netConn:NetConnection = new NetConnection();
// Активируем соединение, которое позволит проигрывать FLV файлы с HTTP и локальных адресов:
netConn.connect(null);
// Создаем объект NetStream (ради него мы создали объект NetConnection и открыли соединение):
var netStreamX:NetStream = new NetStream(netConn);
// Привязываем объект NetStream к нашему видео объекту:
my_video.attachVideo(netStreamX);
// Устанавливаем вместимость буфера - сколько секунд видео загрузится до того, как оно запустится на экране:
netStreamX.setBufferTime(5);
// Загружаем и проигрываем внешний FLV файл:
var file_path=_root.file_name+\"?start=\"+_root.start_seek;
trace(file_path);
netStreamX.play(file_path);
//_________________________________________________________
Код html:
<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">
<head>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=WINDOWS-1251\" />
<title>my_html</title>
<style type=\"text/css\">
</style>
<script type=\"text/javascript\" src=\"swfobject.js\"></script>
</head>
<body bgcolor=\"#c0c0c0\" >
<div id=\"flashcontent1\" style=\"position:relative;width:100%;height:600\">
</div>
<script type=\"text/javascript\">
var so = new SWFObject(\"flash/psevdo_1.swf\", \"movie\", \"100%\", \"100%\", \"9\", \"#ffffff\");//Мой плеер)))
so.addParam(\"allowFullScreen\", \"true\");
so.addVariable(\"start_seek\", \"1\");//Стартовый параметр
so.addVariable(\'autostart\',\'true\');//Тоже откуда-то возможно нужно
so.addVariable(\"file_name\", \"http://flowplayer.org/video/Extremists.flv\");//Беру с http://flowplayer.org
so.addVariable(\"streamscript\", \"lighttpd\");//Это я вычитал с форумов всяких
so.write(\"flashcontent1\");
</script>
</body>
</html>
Так вот когда я отсылаю с параметром start_seek=0 — все окейно работает. В моем плеере переменная start_seek прибавляется к переменной file_name и получается запрос типа «
В строке so.addVariable(\"streamscript\", \"lighttpd\"); я передаю переменную как ее должен обработать плеер? Может в этом дело, что я никак эту переменную не обрабатываю во флеше? Спасибо за ответы.
про оплачивал только из-за него.. что не так… с сервака с которого грузится видео этот самый стриминг есть!…в их плеере всё рабоатет на ура, что я сделал не так…? помогите….
данные хз какие… отправляет через двоеточие типа так :58690842 (походу байты)
Server: nginx/0.6.28 выдала программа HTTP Analyzer Stand-Alone Edition v5.0 (надеюсь Вы этот сервер имели ввиду)
Насчёт того что динамическая ссылка можете мне не писать эту проблему побороли))
теперь вопрос как сделать перемотку… помогите… я плохо разбираюсь в эти стримингах и прочей лабуде… =(
когда плеер НЕ проигрывает! видео тогда отправка запроса на сервер происходит нормально
когда идёт просмотр видео и двигаеш/переставляеш ползунок на отрезок ещё не загруженный ничего не отправляет, и следовательно не перематывает!!
для того чтобы перемотать приходится осталнавливать видео и тыкать в нужное место.
Как бороться ???
Ссылка для проверки : __
Плеер последней версии 0.50
Косяк исправился принудительной передачей размера видео файла.
ибо у меня все с дефолтными настройками работает и мотаеться и вперед и назад.
не понимаем в чем проблема, объясните пожалуйста.
собственно, ради стриминга и покупалась у Вас лицензия.
Если у вас стоит lighttpd, то отправлять нужно время, а не байты.
Наш плейер играет как положено стриминг работает. Может кто подскажет, что нужно, чтоб с xmoove uppod работал?
У меня почему то не работает псевдостримминг. Что я только не делал. передачу данных менял на секунды, милисекунды, байты, пременные старт, и позитион, но ВСЕГДА когда выбираю позицию выдео, показывает что играет с нужного времени, но все равно видео идет с нуля
вот сайт:
Я в растераности, я спецом купил ПРО, вроде работает, а как писал выше, показывает что играет с нужного отрезка времени, НО сначала.
Я буду очень рад если Вы мне поможете.
Там америкосы, как стримминг правильно пишется? что конкретно мне нужно узнать?
перевод легко можно сделать в гугле
Мы используем Apache2 как наш веб-сервер. К сожалению, он не поддерживает указанием ключевых кадров для Flash. Если ваша заявка обойти или вариант для Apache это может делать то, что вы хотели бы, чтобы Однако я не считаю, что это действительно так. Мы приносим извинения за причиненные неудобства. Если у Вас возникли дополнительные вопросы, пожалуйста, дайте нам знать.
это означает что невозможно использовать эту функцию?
Операционная система: CentOS 5.3
Я использую Lighttpd и mod_h264 последней версии под Win2003.
Конвертирую видео 512(видео)+96(аудио)= 608 kbit.
В Lighttpd ограничу поток на подключение до 1024 kbit. По идее хватает с запасом. Закачка почти в 2 раза опережает просмотр.
Так от, видео , любого размера, в форматах flv (FL1 & VP6) перематываются без проблем, быстро, почти мгновенно, а от видео H.264 / AAC очень медленно. Маленькие фалы длительностью около 10 мин перематываются где-то за 12 сек, а большие (около 100 минут) стартуют ~15 секунд и перематываются в перед 57 сек а назад 1525 сек. Если ограничения в Lighttpd поставить около 56 мегабит то перемотка работает быстрее. Так и должно быть?
модуль на сервер с Apache:
пока нашел 2 решения
1) модуль
2) переброс из Mp4 контейнера в flv контейнер (не путайте кодеки, т.е кодек остается H264, но контейнер flv)
ffmpeg -i inputvideo.mp4 -vcodec copy -acodec copy outputvideo.flv
если есть какие-то менее извращенные способы подскажите плз
Seems stream 0 codec frame rate differs from container frame rate: 47.95 (5000000/104271) -> 24.00 (24/1)
Input #0, flv, from \test4.flv\:
Duration: 00:43:17.46, start: 0.000000, bitrate: 566 kb/s
Stream #0.0: Video: h264, yuv420p, 624x352 [PAR 1:1 DAR 39:22], 502 kb/s, 24 tbr, 1k tbn, 47.95 tbc
Stream #0.1: Audio: mp3, 44100 Hz, stereo, s16, 64 kb/s
купил uppod про ради стриминга прежде, протестил на трёх других плеерах перемотка работает отлично
сегодня поставил pro на вашем плеере перемотка неработает :( (верней нажимаю на нужное место оно типа как перемотало и грузиться грузиться грузиться но непоказывает) помогите разобраться пожалуйсто
сервер Lighttpd страничка с видео
подскажите готовый сервер.
Подскажите, а как можно воспроизводить видео в определённое время?
То-есть например чтоб трёх-часовое видео воспроизводилось с 7 утра, а в 10 воспроизводилось уже другое видео и все кто будет заходить на страничку, смотрели видео не с самого начала а исходя из текущего времени.
Заранее спасибо!
P.S. Сразу приношу извинение за нубский вопрос))
поставил nginx-0.7.61 , поставил модуль flv и МР4
МР4 перематывает без проблем а flv при перемотке показывает с начала .
Это не вина плеера потому что гет запросом делает тоже самое .
Вот
wget tes2t.flv хттп://домаин/test.mp4?start=1000
mp4 качает с середины а flv всегда с начала .
Пожалуйста стукните в аську кто нить для решения проблемы. 619851842
вроде бы все сделал, но стриминг не работает.
поставил на сервер nginx. в списке процессов он отображается.
в стилях выставил переменную для запроса "start". передаю запрос в байтах. ссылка, соответственно, вида
что еще можно проверить?
У меня такая проблема скачал плеер uppod установил как указано в инструкции но перемотка не работает! Я читал что в бесплатных версиях эта функция не доступна это так?
что делать или как поставить конфиг
поставил в файл мета данные с помошю flvmeta и flvtool2
не работает даже подтармажывает
#user nobody;
worker_processes 2;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location ~ \.flv$ {
flv;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443;
# server_name localhost;
# ssl on;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_timeout 5m;
# ssl_protocols SSLv2 SSLv3 TLSv1;
# ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
я ставил версию nginx 0.9.7 но на данный момент оно не доработано потом поставил nginx 0.8.54 которая на данный момент уже работоспособная…
есть маленький нюанс при перемотке немножко притормаживает немножко
если у кого то есть идеи как повысить быстродействие прошу написать на форуме
Как создать такой файл?? ВОТ ПИШУТ-
Для начала создаем файл например: stream1.sh и помешаем в него след. содержимое:
#!/bin/sh
vlc -vv rtsp://пользователь:пароль@ip_камеры/axis-media/media.amp --rtsp-caching=100000 --loop --http-caching=10000 --sout \
#transcode{vcodec=FLV1,vb=512,fps=15}:std{access=http{mime=video/x-flv},dst=ip_сервера:8080/view01.flv,mux=ffmpeg{mux=flv}}
Если вы например используете в качестве шела bash, то можно прописать #!/bin/bash
Исполнить его можно командой:
root# sh stream1.sh
root# bash stream1.sh
либо сделать его исполняемым и просто
root# stream1.sh
Все выше написанное относится только к *nix системам Unix/Linux/FreeeBSD и т.д.
Для справки:
Вижу что здесь у многих возникли проблемы с настройкой псевдостримминга с mp4, поэтому решил кратко описать наш конфиг.
uname: 2.6.3221-server #32-Ubuntu SMP Fri Apr 16 09:17:34 UTC 2010 x86_64 GNU/Linux
1. Скачиваем nginx 1.0.4
cd ~
wget http://sysoev.ru/nginx/nginx-1.0.4.tar.gz
tar -zxvf nginx-1.0.4.tar.gz
2. Скачиваем H264 Streaming Module for Nginx (version 2)
wget http://h264.code-shop.com/download/nginx_mod_h264_streaming-2.2.7.tar.gz
tar -zxvf nginx_mod_h264_streaming-2.2.7.tar.gz
3. Для nginx версии 0.8.38 нужно будет чуть чуть поправить сорсы модуля, подробности тут
4. Собираем nginx с модулем
./configure --тут_ваши_опции --add-module=$HOME/nginx_mod_h264_streaming-2.2.7
make
make install
5. Конфигурируем location в nginx
location ~ \.mp4$ {
mp4;
}
Либо вы можете прописать эту опцию в свой location
6. Подготовка видео. Мы используем mencoder для конвертации видео, и MP4Box для ремукса в mp4 контейнер. Последний так же переносит метаданные в начало файла, и приводит видео в соответствие стандарту H.264.
6a. Установка необходимых библиотек и утилит. Мы используем AVC/AAC кодеки, но можно использовать и AVC/MP3 например.
sudo apt-get install x264 libx264-dev gpac faac libfaac-dev
6b. Установка mencoder. Если x264 и faac установились корректно, mencoder должен их сам подцепить при конфиге
svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer
cd mplayer
./configure --тут_ваши_опции
make
make install
6c. Транскодирование видео
mencoder -af volnorm=2 -oac faac -faacopts br=96:mpeg=4:object=2 -channels 2 -srate 44100 -ovc x264 -x264encopts bitrate=500:subq=2:frameref=2:cabac:threads=auto:bframes=3:b_pyramid=normal:weight_b -ofps @FPS оригинала@ -vf pp=hb/vb/lb,dsize=640x360:0,scale=-8:-8,harddup input.avi -o tmp.avi
mencoder tmp.avi -ovc copy -oac copy -of rawvideo -o tmp.h264 -nosound 2>&1
mencoder tmp.avi -ovc copy -oac copy -of rawaudio -o tmp.aac 2>&1
MP4Box -add tmp.h264 -fps @FPS оригинала@ -add tmp.aac output.mp4 2>&1
У нас разрешение, битрейт и опции выбираются в зависимости от оригинала и некоторых других параметров. Здесь я привел средние настройки x264, на выходе видео уменьшится/увеличится примерно до 640x360 с сохранением соотношения сторон.
7. Настройка плеера. Если вы используете конфигуратор то необходимо перейти во вкладку Опции и включить галку Стримминг. В настройках стримминга надо поставить "Отправлять: секунды".
Все! :)
Ссылки:
mencoder:
mencoder x264 опции:
MP4Box:
faac:
nginx:
nginx H264 module:
uppod:
Писал по памяти, возможны неточности с установкой, так что правки, добавления и критика велкам.
У меня ползунок хоть и меняет свое положение, но видео все равно с начала проигрывается.
Прошу помочь с вопросом.
Что я делаю не так?
Никак не работает стриминг.
Установили nginx с http_flv_module.
Установили flvtool2, потом еще и yamdi.
Загружаем на сайт, через ffmpeg конвектируем, прописываем метаданные.
В итоге:
e3b1a357da7b620247376362ca4055e4-hd2.flv 400 мб
e3b1a357da7b620247376362ca4055e4-hd2.flv?start=100000000 теже 400 мб.
что делать, хотя бы намекните? (
Купил PRO исключительно для работы с перемоткой. На сервере стоит nginx + ngx_http_flv_module. При указании смещения, файл скачивается с нужной позиции. А перемотка в uppod не работает, как только не пробовал. Переменная start, отправлять байты.
Пример работы стриминга на моём сервере: test.flv?start=1200000." rel="nofollow">ссылка</a>
Эта же ссылка без стриминга, то есть файл целиком, чтобы убедиться, что размер меняется: test.flv?start=0" rel="nofollow">ссылка</a>
Со смещением:
Без смещения, то есть файл целиком, чтобы убедиться, что размер файла меняется:
то есть вот с этого
все нормально а вот на этом забуксовал
make
make install
то есть как я понимаю нужно перейти в папку с Nginx но там нет файла configure .
У меня стоит nginx-1.1.19 как установить данный модуль на мою версию nginx,буду очень признателен за помощь.
mp4;
mp4_buffer_size 2m;
mp4_max_buffer_size 5m;