Difference between revisions of "Membuat Sendiri TV Internet"

From OnnoWiki
Jump to navigation Jump to search
Line 18: Line 18:
  
 
  sudo su
 
  sudo su
 
  
  
Line 26: Line 25:
  
 
  apt-get install ffmpeg flvtool2
 
  apt-get install ffmpeg flvtool2
 +
  
 
==Buat Directory untuk menyimpan video==
 
==Buat Directory untuk menyimpan video==
Line 36: Line 36:
  
 
==Encode Video menjadi FLV==
 
==Encode Video menjadi FLV==
 
  
Berikut akan di contohkan konversi video.avi di /var/videos/incoming (cara yang sama sebetulnya dapat juga dilakukan untuk extension .mp4 .mov .mpg .3gp .mpeg .wmv).  
+
Berikut akan di contohkan konversi video.avi di /var/videos/incoming (cara yang sama sebetulnya dapat juga dilakukan untuk extension .mp4 .mov .mpg .3gp .mpeg .wmv). Kita kan mengkonversikan file tersebut menjadi video.flv dan menyimpannya di directory /var/videos/flv. File video.flv dibuat untuk pixel 320x240 dengan frekuensi audio sampling 44100 Hz, dua kanal audio (stereo), dengan frame rate 12 fps. Caranya adalah sebagai berikut:
 
 
 
 
We want to convert it to the file video.flv and store it in the directory /var/videos/flv. I want video.flv to have a size of 320x240 pixels with an audio sampling frequency of 44100 Hz, two audio channels (stereo), and a frame rate of 12 fps. This is how we do it:
 
  
 
  ffmpeg -i /var/videos/incoming/video.avi -s 320x240 -ar 44100 -r 12 -ac 2 /var/videos/flv/video.flv
 
  ffmpeg -i /var/videos/incoming/video.avi -s 320x240 -ar 44100 -r 12 -ac 2 /var/videos/flv/video.flv
Line 49: Line 45:
 
  man ffmpeg
 
  man ffmpeg
  
This can take some time, and the output should look something like this:
+
Proses ini akan memerlukan beberapa waktu, keluaran / outputnya adalah sebagai berikut:
  
 
  root@server1:~# ffmpeg -i /var/videos/incoming/video.avi -s 320x240 -ar 44100 -r 12 -ac 2 /var/videos/flv/video.flv
 
  root@server1:~# ffmpeg -i /var/videos/incoming/video.avi -s 320x240 -ar 44100 -r 12 -ac 2 /var/videos/flv/video.flv
Line 76: Line 72:
 
  root@server1:~#
 
  root@server1:~#
  
Please make sure that in the Output section, you see two streams, one for video, one for audio. If you see video only, this means that the sound gets lost.
+
Pastikan pada bagian output, kita melihat dua stream, satu untuk video, satu untuk audio. Jika kita hanya melihat video saja, maka artinya suaranya hilang.
  
 
Setelah melalukan konversi kita dapat menambahkan metadata ke video.flv menggunakan flvtool2:
 
Setelah melalukan konversi kita dapat menambahkan metadata ke video.flv menggunakan flvtool2:
  
 
  cat /var/videos/flv/video.flv | flvtool2 -U stdin /var/videos/flv/video.flv
 
  cat /var/videos/flv/video.flv | flvtool2 -U stdin /var/videos/flv/video.flv
 +
  
 
==Konfigurasi Lighttpd==  
 
==Konfigurasi Lighttpd==  
  
Now we have to open lighttpd's main configuration file, /etc/lighttpd/lighttpd.conf, and add/enable the modules mod_secdownload and mod_flv_streaming in it. It is very important that mod_secdownload is listed before mod_flv_streaming in the server.modules stanza. When I did it the other way round, I found that fast-forwarding the video in FlowPlayer didn't work!
+
Selanjutnya kita perlu membuka file konfigurasi /etc/lighttpd/lighttpd.conf, dan add/enable module mod_secdownload dan modul mod_flv_streaming. Penting untuk di perhatikan agar mod_secdownload di tulis sebelum mod_flv_streaming dalam urutan server.modules. Jika kita melakukannya terbalik, tampaknya akan menyebabkan video fast-forwarding di FlowPlayer tidak jalan.
  
 
  vi /etc/lighttpd/lighttpd.conf
 
  vi /etc/lighttpd/lighttpd.conf
Line 107: Line 104:
 
  [...]
 
  [...]
  
In the same file, we add also add the following configuration (you can add it right at the end of /etc/lighttpd/lighttpd.conf):
+
Di file yang sama, kita dapat menambahkan konfigurasi berikut (you can add it right at the end of /etc/lighttpd/lighttpd.conf):
  
 
  [...]
 
  [...]

Revision as of 11:19, 5 April 2011

Sumber: http://www.howtoforge.com/build-your-own-video-community-with-lighttpd-and-flowplayer-ubuntu-9.10

Tulisan ini menjelaskan bagaimana kita dapat membuat sendiri streaming video komunitas menggunakan lighttpd menggunakan modul streaming mod_flv_streaming (untuk streaming video .flv, format yang digunakan oleh banyak video streaming komunitas seperti YouTube) dan modul mod_secdownload (untuk menghalangi hotlinking dari video) di Ubuntu. Kita akan menggunakan FlowPlayer video player, sebuah Flash video player yang mendukung modul lighttpd mod_flv_streaming. Kita juga akan memperlihatkan bagaimana meng-encode video (.mp4 .mov .mpg .3gp .mpeg .wmv .avi) ke format FLV yang di dukung oleh Adobe Flash.


Beberapa Catatan Awal

Dalam tutorial ini akan digunakan

hostname  server1.example.com
IP Address 192.168.0.9

Cara instalasi lighttpd di terangkan di

Kita menjalankan semua perintah di bawah sebagai root. Pastikan anda login sebagai root melalui perintah

sudo su


Instalasi

Instalasi menggunakan perintah

apt-get install ffmpeg flvtool2


Buat Directory untuk menyimpan video

Misalnya

mkdir -p /var/videos/incoming
mkdir -p /var/videos/flv


Encode Video menjadi FLV

Berikut akan di contohkan konversi video.avi di /var/videos/incoming (cara yang sama sebetulnya dapat juga dilakukan untuk extension .mp4 .mov .mpg .3gp .mpeg .wmv). Kita kan mengkonversikan file tersebut menjadi video.flv dan menyimpannya di directory /var/videos/flv. File video.flv dibuat untuk pixel 320x240 dengan frekuensi audio sampling 44100 Hz, dua kanal audio (stereo), dengan frame rate 12 fps. Caranya adalah sebagai berikut:

ffmpeg -i /var/videos/incoming/video.avi -s 320x240 -ar 44100 -r 12 -ac 2 /var/videos/flv/video.flv

Untuk melihat pilihan yang lain ada baiknya melihat perintah

man ffmpeg

Proses ini akan memerlukan beberapa waktu, keluaran / outputnya adalah sebagai berikut:

root@server1:~# ffmpeg -i /var/videos/incoming/video.avi -s 320x240 -ar 44100 -r 12 -ac 2 /var/videos/flv/video.flv
FFmpeg version SVN-r13582, Copyright (c) 2000-2008 Fabrice Bellard, et al.
  configuration: --prefix=/usr --libdir=${prefix}/lib --shlibdir=${prefix}/lib --bindir=${prefix}/bin --incdir=${prefix}/include /ffmpeg --enable-shared --enable-libmp3lame --enable-gpl --enable-libfaad --mandir=${prefix}/share/man --enable-libvorbis --enable-pthreads --enable-libfaac --enable-libxvid --enable-postproc --enable-libamr-nb --enable-libamr-wb --enable-x11grab --enable-libgsm --enable-libx264 --enable-liba52 --enable-libtheora --extra-cflags=-Wall -g -fPIC -DPIC --cc=ccache cc --enable-swscale --enable-libdc1394 --enable-nonfree --disable-mmx --disable-stripping --enable-avfilter --enable-libdirac --disable-decoder=libdirac --enable-libschroedinger --disable-encoder=libschroedinger --disable-altivec --disable-armv5te --disable-armv6 --disable-vis
  libavutil version: 49.7.0
  libavcodec version: 51.58.0
  libavformat version: 52.16.0
  libavdevice version: 52.0.0
  libavfilter version: 0.0.0
  built on May  3 2009 12:07:18, gcc: 4.3.2
Input #0, avi, from '/var/videos/incoming/video.avi':
  Duration: 00:10:53.82, start: 0.000000, bitrate: 5455 kb/s
    Stream #0.0: Video: mpeg4, yuv420p, 1024x576 [PAR 1:1 DAR 16:9], 24.00 tb(r)
    Stream #0.1: Audio: ac3, 48000 Hz, 5:1, 448 kb/s
Output #0, flv, to '/var/videos/flv/video.flv':
    Stream #0.0: Video: flv, yuv420p, 320x240 [PAR 4:3 DAR 16:9], q=2-31, 200 kb/s, 12.00 tb(c)
    Stream #0.1: Audio: libmp3lame, 44100 Hz, stereo, 64 kb/s
Stream mapping:
  Stream #0.0 -> #0.0
  Stream #0.1 -> #0.1
Press [q] to stop encoding
[libmp3lame @ 0x7f983556f6c0]lame: output buffer too small (buffer index: 8359, free bytes: 281)
frame= 7847 fps= 13 q=2.0 Lsize=   21696kB time=653.92 bitrate= 271.8kbits/s
video:16067kB audio:5114kB global headers:0kB muxing overhead 2.428783%
root@server1:~#

Pastikan pada bagian output, kita melihat dua stream, satu untuk video, satu untuk audio. Jika kita hanya melihat video saja, maka artinya suaranya hilang.

Setelah melalukan konversi kita dapat menambahkan metadata ke video.flv menggunakan flvtool2:

cat /var/videos/flv/video.flv | flvtool2 -U stdin /var/videos/flv/video.flv


Konfigurasi Lighttpd

Selanjutnya kita perlu membuka file konfigurasi /etc/lighttpd/lighttpd.conf, dan add/enable module mod_secdownload dan modul mod_flv_streaming. Penting untuk di perhatikan agar mod_secdownload di tulis sebelum mod_flv_streaming dalam urutan server.modules. Jika kita melakukannya terbalik, tampaknya akan menyebabkan video fast-forwarding di FlowPlayer tidak jalan.

vi /etc/lighttpd/lighttpd.conf
[...]
server.modules              = (
            "mod_access",
            "mod_alias",
            "mod_accesslog",
            "mod_compress",
#           "mod_rewrite",
#           "mod_redirect",
#           "mod_evhost",
#           "mod_usertrack",
#           "mod_rrdtool",
#           "mod_webdav",
#           "mod_expire",
            "mod_secdownload",
            "mod_flv_streaming",
#           "mod_evasive"
)
[...]

Di file yang sama, kita dapat menambahkan konfigurasi berikut (you can add it right at the end of /etc/lighttpd/lighttpd.conf):

[...]
flv-streaming.extensions = ( ".flv" )
secdownload.secret          = "somesecret"
secdownload.document-root   = "/var/videos/flv/"
secdownload.uri-prefix      = "/dl/"
secdownload.timeout         = 120 

Please replace somesecret with your own secret string (you can choose one).

What mod_secdownload does is this: a web application (e.g. a PHP script) can have a link in it of the following form:

<uri-prefix>/<token>/<timestamp-in-hex>/<rel-path>

e.g.

/dl/d8a8cb150f7e5962f6a8443b0b6c6cc2/46c1d9f6/video.flv

where <token> is an MD5 of

1. a secret string (user supplied) 2. <rel-path> (starts with /) 3. <timestamp-in-hex>

mod_secdownload will then map this link to the appropriate file in the secdownload.document-root (which is outside the document root of the web site) and allow access to that file for secdownload.timeout seconds. After secdownload.timeout seconds, the link isn't valid anymore, and access is denied.

After we have installed FlowPlayer, we will use a PHP script to generate the appropriate video links for mod_secdownload.

You can find more information about mod_secdownload here: http://trac.lighttpd.net/trac/wiki/Docs%3AModSecDownload

Don't forget to restart lighttpd after your changes to /etc/lighttpd/lighttpd.conf:

/etc/init.d/lighttpd restart


7 Installing FlowPlayer

Go to http://flowplayer.org/download and download the latest FlowPlayer version to your /tmp directory, e.g. like this:

cd /tmp wget http://releases.flowplayer.org/flowplayer/flowplayer-3.1.5.zip

FlowPlayer comes in .zip format, so we must install unzip to uncompress it:

aptitude install unzip

Afterwards we can uncompress it:

unzip flowplayer-3.1.5.zip

This creates a directory called flowplayer in the /tmp directory. I'd like to have that directory in the document root of my video web site (/var/www), so I move it there:

mv flowplayer /var/www/


8 Configuring FlowPlayer

FlowPlayer is now installed, so all that is left to do is create an HTML file that lets us watch our video. I will create a PHP file for this called /var/www/flowplayertest.php which contains all parameters to start FlowPlayer in the user's browser and which also creates valid video links for mod_secdownload:

vi /var/www/flowplayertest.php
<?php

$secret = "somesecret";
$uri_prefix = "/dl/";

# filename
$f = "/video.flv";

# current timestamp
$t = time();

$t_hex = sprintf("%08x", $t);
$m = md5($secret.$f.$t_hex);

?>
<html>
<head>
<title>Flowplayer Test</title>

<script src="/flowplayer/example/flowplayer-3.1.4.min.js"></script> 

</head>
<body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">

<a
    href="<?php printf('%s%s/%s%s', $uri_prefix, $m, $t_hex, $f, $f); ?>"
    style="display:block;width:320px;height:256px;"
    id="player">
</a> 

<script language="JavaScript">
flowplayer("player", "/flowplayer/flowplayer-3.1.5.swf");
</script>

</body>
</html>

It's very important that $secret has the same value than secdownload.secret in /etc/lighttpd/lighttpd.conf. Also, $uri_prefix and secdownload.uri-prefix must match. If this is fulfilled, the above script will generate valid links. $f must hold the filename of the FLV video, beginning with a slash (/). (The filename is hard-coded in the above example, but of course you can program whatever you like to dynamically generate the filename.)

The important parts that call FlowPlayer are <script src="/flowplayer/example/flowplayer-3.1.4.min.js"></script> (which refers to the flowplayer-3.1.4.min.js script in the /var/www/flowplayer/example directory) in the <head></head> section and the following two parts in the <body></body> section:

<a
    href="<?php printf('%s%s/%s%s', $uri_prefix, $m, $t_hex, $f, $f); ?>"
    style="display:block;width:320px;height:256px;"
    id="player">
</a>

(The most important setting is the href parameter (which is set by PHP in the above script) which specifies the path to the FLV video. In the style parameter, we can specify the width and height of our video player.)

and

<script language="JavaScript">
flowplayer("player", "/flowplayer/flowplayer-3.1.5.swf");
</script>

(Here we specify the path to our FlowPlayer .swf file.)

This FlowPlayer configuration is taken from http://flowplayer.org/demos/installation/index.html.

To learn more about other ways of calling FlowPlayer and how to call it with specific settings, take a look at the examples on http://flowplayer.org/demos/index.html.

Now it's time to test our setup. Direct your browser to http://192.168.0.100/flowplayertest.php or http://server1.example.com/flowplayertest.php, and your video should start to play in your browser (including sound):

Click to enlarge

This is how the native Flash 9 full screen mode looks:

Click to enlarge


Referensi

Referensi

Pranala Menarik