FastNetMon

Showing posts with label flv. Show all posts
Showing posts with label flv. Show all posts

Saturday, 27 November 2010

Конфиг для JW Player для приема RTMP потока

Вот такой вот:

s1.addVariable('streamer','rtmp://xx.xx.xx.xx/oflaDemo');
s1.addVariable('file', 'stream129088sadasd');

Может ли JW Player транслировать поток RTMP?

Progressive Download, HTTP Psuedo-streaming, & RTMP Streaming
Flash Media Server (FMS) and Wowza Media Server
Bitrate switching and DVR support
Native support for CDNs: Akamai, Amazon CloudFront, BitGravity, CDNetworks, Highwinds, and Limelight

Источник: http://www.longtailvideo.com/players/jw-player/features/

Установка lighttpd на Debian 5 Lenny с поддержкой трансляции flv видео

Ставим lighttpd:
apt-get install -y lighttpd

После установки он автоматически запустится и будет слушать 80й порт:
netstat -lnpt | grep light
tcp6 0 0 :::80 :::* LISTEN 9941/lighttpd

Далее в качестве теста попробуем открыть страничку: http://ip_address_вашего_сервера/, в ответ нас должно поприветствовать веселым "Placeholder page".

Подключаем поддержку flv (более подробно тут):
vi /etc/lighttpd/lighttpd.conf

Ищем внизу файла строку:
# "mod_flv_streaming",
И убираем в ее начале знак комментария.

Также чуть ниже блока server.modules следом за его закрывающейся скобкой добавляем:
flv-streaming.extensions = ( ".flv" )

После этого применяем изменения посредством перезапуска lighttpd:
/etc/init.d/lighttpd restart

Стриминг flv видео посредством lighttpd

Итак, у нас есть готовый видео файл в формате flv: http://phpsuxx.blogspot.com/2010/11/dvd-video-flv-debian-5-linux.html и теперь стоит задача настроить трансляцию этого видео с работающей перемоткой в браузер с поддержкой flash.

Для работоспособности перемотки нужно добавить мета информацию (http://kovyrin.net/2006/10/08/lighttpd-memcoder-flvtool-for-streaming/),
более конкретно, что именно за информацию я пока сказать не могу, не
изучал вопрос настолько хорошо.

Для этого ставим flvtool2:
apt-get install -y flvtool2

Итак, сначала наш файл не содержит никакой мета-информации:
flvtool2 -P outputfile.flv
---
/opt/ssau_film/outputfile.flv:
duration: 723.52
audiosamplerate: 22050
framerate: 25
audiosamplesize: 16
stereo: true
videocodecid: 2
filesize: 40900644
height: 576
audiocodecid: 2
videodatarate: 0
width: 720
...


Далее добавляем метаданные к созданному нами файлику (но лучше, конечно, выдавать результат в другой файл, чтобы не перезаписывать оригинал):
flvtool2 -PU outputfile.flv

Теперь повторно запросим информацию о мета-данных:
flvtool2 -P outputfile.flv
---
/opt/ssau_film/outputfile.flv:
duration: 723.52
hasMetadata: true
hasKeyframes: true
framerate: 25
datasize: 40724054
audiodatarate: 35.1694144965998
audiosamplerate: 22000
cuePoints:
audiosamplesize: 16
hasVideo: true
lasttimestamp: 723.48
videocodecid: 2
canSeekToEnd: false
stereo: true
audiosize: 3484883
lastkeyframetimestamp: 715.32
videosize: 37232469
audiodelay: 0
hasAudio: true
filesize: 40907095
height: 576
keyframes:
filepositions:
- 6727
- 29382
- 40182
- 51024
тут еще очень много циферок
- 40052758
- 40120879
- 40216540
- 40257801
- 40330333
- 40585739
times:
- 0
- 0.08
- 0.12
- 0.16
- 0.2
тут еще много циферок
- 217.6
- 221.6
- 221.64
- 221.68
- 221.72
- 221.76
- 221.8
- 221.84
- 225.52
- 226.96
- 228.16
- 229.56
- 233.28
- 238.32
- 240.88
- 242.16
тут также много-много циферок
- 709.8
- 712.04
- 715.32
videodatarate: 409.50407474982
audiocodecid: 2
metadatacreator: inlet media FLVTool2 v1.0.6 - http://www.inlet-media.de/flvtool2
metadatadate: Sat Nov 27 13:16:56 GMT+0300 2010
width: 720
hasCuePoints: false
...


Все, прекрасно, есть файл в нужном формате с данными для перемотки.

Теперь нужен веб-сервер чтобы все это выдать в браузер. Мы будем использовать lighttpd, вот инструкция по его установке и настройке для трансляции flv видео.

Теперь копируем в папку веб-сервера наш flv файл:
cp /opt/film/outputfile.flv /var/www/

Далее, для проигрывания всей этой радости нам нужен flash (swf) плейер, я предлагаю использовать FLV-Scrubber 3.x, вот его офсайт http://www.topfstedt.de/weblog/?page_id=208

Итак, качаем плейер:
cd /var/www
wget http://topfstedt.de/FLVScrubber3/FLVScrubber.swf

Далее нужно создать html файлик, в который будет встроен флеш плейер, назовем его, допустим, player.html:
<html>
<body>
<object
classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0"
width="336"
height="297">
<param name="movie" value="scrubber.swf?file=/movie.flv" />
<param name="quality" value="high" />
<embed src="FLVScrubber.swf?file=/outputfile.flv"
quality="high"
pluginspage="http://www.macromedia.com/go/getflashplayer"
type="application/x-shockwave-flash"
width="336"
height="297"></embed>
</object>
</body>
</html>

Далее открываем http://..../player.html и наслаждаемся :) Итого, у меня все отлично заработало (и даже с прокруткой!) на FireFox 3.6, Opera 10, Chrome.

Либо можно поставить JW Player, который по впечатлениям намного круче и аккуратнее.

Скачиваем дистрибутив (нам из него нужны лишь файлы player.swf, swfobject.js, yt.swf и, вроде, jwplayer.js):
cd /var/www
wget http://www.longtailvideo.com/jw/upload/mediaplayer.zip
unzip mediaplayer.zip
mv mediaplayer-5.3/* ./
rm -r mediaplayer-5.3
mkdir swf
mkdir js
mv *.js js
mv *.swf swf

Далее составляем файлик player.html следующего вида:
<html>
<body>
<p id='preview'>
The player will show in this paragraph
</p>
<script type='text/javascript' src='js/swfobject.js'></script>
<script type='text/javascript'>
var s1 = new SWFObject('swf/player.swf','player','400','300','9');
s1.addParam('allowfullscreen','true');
s1.addParam('allowscriptaccess','always');
s1.addVariable('file','http://46.4.187.234/outputfile.flv');
s1.write('preview');
</script>
</body>
</html>

И все выглядит и работает намного круче :) Разве что перемотка не работает :(

Источник: http://www.longtailvideo.com/support/jw-player/jw-player-for-flash-v5/12/install-the-jw-player-for-flash-v5

Конвертирование DVD Video в формат flv на Debian 5 Linux

Ствим mencoder: http://phpsuxx.blogspot.com/2009/11/mencoder-debian5-lenny.html

Далее открываем наш DVD в файловом менеджере и идем в папку VIDEO_TS и ищем там файлик с расширением VOB большого размера, например:
ls -la
total 1711056
dr-xr-xr-x 8 nrg staff 272 24 июн 2008 .
drwxr-xr-x 4 nrg staff 136 16 ноя 13:08 ..
-r-xr-xr-x 1 nrg staff 14336 24 июн 2008 VIDEO_TS.BUP
-r-xr-xr-x 1 nrg staff 14336 24 июн 2008 VIDEO_TS.IFO
-r-xr-xr-x 1 nrg staff 294912 24 июн 2008 VIDEO_TS.VOB
-r-xr-xr-x 1 nrg staff 22528 24 июн 2008 VTS_01_0.BUP
-r-xr-xr-x 1 nrg staff 22528 24 июн 2008 VTS_01_0.IFO
-r-xr-xr-x 1 nrg staff 875681792 24 июн 2008 VTS_01_1.VOB

В этом случае это файл VTS_01_1.VOB, он нам и нужен. В общем случае таких файлов может быть несколько штук, но как быть в этом случае - я не знаю, возможно, придется склеивать. Итак, если работаете не на локальной машинке, как я, грузите файлик на сервер для последующей обработки.

Запускаем конвертацию:
mencoder VTS_01_1.VOB -of lavf -ovc lavc -lavcopts vcodec=flv:vbitrate=150 -ofps 25 -oac mp3lame -lameopts abr:br=32 -srate 22050 -vf scale=720 -o outputfile.flv

В процессе конвертации видим вот такие красоты:
MEncoder dev-SVN-r26940 (C) 2000-2008 MPlayer Team
CPU: Intel(R) Core(TM) i7 CPU X 980 @ 3.33GHz (Family: 6, Model: 44, Stepping: 2)
CPUflags: Type: 6 MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 1
Compiled with runtime CPU detection.
success: format: 0 data: 0x0 - 0x3431d800
MPEG-PS file format detected.
VIDEO: MPEG2 720x576 (aspect 2) 25.000 fps 9610.0 kbps (1201.2 kbyte/s)
[V] filefmt:2 fourcc:0x10000002 size:720x576 fps:25.000 ftime:=0.0400
==========================================================================
Opening audio decoder: [dvdpcm] Uncompressed DVD/VOB LPCM audio decoder
AUDIO: 48000 Hz, 2 ch, s16be, 1536.0 kbit/100.00% (ratio: 192000->192000)
Selected audio codec: [dvdpcm] afm: dvdpcm (Uncompressed DVD/VOB LPCM)
==========================================================================
** MUXER_LAVF *****************************************************************
REMEMBER: MEncoder's libavformat muxing is presently broken and can generate
INCORRECT files in the presence of B-frames. Moreover, due to bugs MPlayer
will play these INCORRECT files as if nothing were wrong!
*******************************************************************************
OK, exit.
Opening video filter: [expand osd=1]
Expand: -1 x -1, -1 ; -1, osd: 1, aspect: 0.000000, round: 1
Opening video filter: [scale w=720]
==========================================================================
Opening video decoder: [mpegpes] MPEG 1/2 Video passthrough
VDec: vo config request - 720 x 576 (preferred colorspace: Mpeg PES)
The selected video_out device is incompatible with this codec.
Try appending the scale filter to your filter list,
e.g. -vf spp,scale instead of -vf spp.
VDecoder init failed :(
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
Selected video codec: [ffmpeg2] vfm: ffmpeg (FFmpeg MPEG-2)
==========================================================================
MP3 audio selected.
VDec: vo config request - 720 x 576 (preferred colorspace: Planar YV12)
VDec: using Planar YV12 as output csp (no 0)
Movie-Aspect is 1.33:1 - prescaling to correct movie aspect.
[swscaler @ 0xa1e8d0]using unscaled yuv420p -> yuv420p special converter
videocodec: libavcodec (720x576 fourcc=31564c46 [FLV1])
New_Face failed. Maybe the font path is wrong.n 0mb A-V:0.000 [0:0]
Please supply the text font file (~/.mplayer/subfont.ttf).
subtitle font: load_sub_face failed.
New_Face failed. Maybe the font path is wrong.
Please supply the text font file (~/.mplayer/subfont.ttf).
subtitle font: load_sub_face failed.
VIDEO CODEC ID: 22
AUDIO CODEC ID: 15001, TAG: 0
Writing header...

1 duplicate frame(s)!
Pos: 0.9s 22f ( 0%) 0.00fps Trem: 1min 201mb A-V:0.084 [0:7]
Skipping frame!
Pos: 1.2s 32f ( 0%) 0.00fps Trem: 1min 279mb A-V:0.084 [2085:7]
Skipping frame!
Pos: 1.6s 42f ( 0%) 0.00fps Trem: 2min 363mb A-V:0.084 [2099:7]
Skipping frame!
Pos: 720.0s 18002f (99%) 194.66fps Trem: 0min 39mb A-V:0.081 [410:34]
Skipping frame!
Pos: 720.3s 18012f (99%) 194.70fps Trem: 0min 39mb A-V:0.081 [410:34]
Skipping frame!
Pos: 720.7s 18022f (99%) 194.75fps Trem: 0min 38mb A-V:0.081 [410:34]
Skipping frame!
Pos: 721.0s 18032f (99%) 194.81fps Trem: 0min 38mb A-V:0.081 [410:34]
Skipping frame!
Pos: 721.4s 18042f (99%) 194.85fps Trem: 0min 38mb A-V:0.081 [410:34]
Skipping frame!
Pos: 721.8s 18052f (99%) 194.91fps Trem: 0min 38mb A-V:0.081 [410:34]
Skipping frame!
Pos: 722.1s 18062f (99%) 194.96fps Trem: 0min 38mb A-V:0.081 [409:34]
Skipping frame!
Pos: 722.5s 18072f (100%) 195.00fps Trem: 0min 38mb A-V:0.081 [409:34]
Skipping frame!
Pos: 722.8s 18082f (100%) 195.07fps Trem: 0min 39mb A-V:0.081 [409:34]
Skipping frame!
Pos: 723.2s 18092f (100%) 195.13fps Trem: 0min 39mb A-V:0.081 [409:34]
Skipping frame!
Pos: 723.6s 18102f (100%) 195.20fps Trem: 0min 39mb A-V:0.081 [409:34]
Flushing video frames.
Writing index...

Video stream: 409.259 kbit/s (51157 B/s) size: 37015413 bytes 723.560 secs 18102 frames

Audio stream: 34.900 kbit/s (4362 B/s) size: 3152879 bytes 722.730 secs

И в итоге наш огромный 800 мегабайтный файл DVD Video превращается в аккуратные 40 мегабайт flv:
ls -lah outputfile.flv
-rw-r--r-- 1 root root 40M Nov 27 12:54 outputfile.fldvd

Но, к слову, полученный мною файл не читался даже плейером VLC, что странно. Но при заливке на YouTube все хорошо смотрелось и слушалось :)

Источник: http://wiki.soslug.org/wiki/vob_to_flv