使用Lighttpd和FlowPlayer构建自己的视频社区(Ubuntu 9.10)

使用Lighttpd和FlowPlayer构建您自己的视频社区(Ubuntu 9.10)

本文介绍如何使用lighttpd及其mod_flv_streaming模块(用于流媒体.flv视频,大多数主要视频社区(如YouTube )使用的格式)及其mod_secdownload模块(用于防止视频的热链接)在Ubuntu上构建自己的视频社区9.10。 我将使用FlowPlayer作为视频播放器,一个免费的Flash视频播放器,支持lighttpd的mod_flv_streaming模块。 我还将展示如何将视频( .mp4 .mov .mpg .3gp .mpeg .wmv .avi )编码为Adobe Flash支持的FLV格式。

本文档不附带任何形式的保证! 我想说,这不是设立这样一个制度的唯一办法。 实现这一目标有很多方法,但这是我所采取的方式。 我不会保证这将为您工作!

1初步说明

在本教程中,我使用IP地址为192.168.0.100的hostname server1.example.com 。 这些设置可能会有所不同,因此您必须在适当的情况下更换它们。

我们需要一个带有PHP支持的lighttpd安装,如本教程所示: 在Ubuntu 9.10上安装带有PHP5和MySQL支持的Lighttpd 。 我不会在这里覆盖,所以请参考本教程,如果您还没有设置lighttpd与PHP支持。

因为我们必须使用root权限运行本教程的所有步骤,所以我们可以使用字符串sudo在本教程中添加所有命令,也可以通过键入来成为root

sudo su

2安装ffmpeg

我们将使用ffmpeg将我们的视频文件转换为FLV格式。 官方Ubuntu ffmpeg软件包的问题是MP3编码不支持,这意味着我们的FLV视频在转换后会失去声音。 因此,我们将Debian-Multimedia存储库添加到sources.list ,并从该存储库安装ffmpeg软件包 - 默认情况下,它支持MP3。 (您可能想知道为什么我们使用Debian-Multimedia存储库而不是Medibuntu存储库,但是Medibuntu存储库根本没有ffmpeg软件包。)

vi /etc/apt/sources.list

添加Debian - 多媒体库(您可以在这里找到一个靠近你的镜像),例如:

[...]
deb http://ftp-stud.hs-esslingen.de/pub/Mirrors/debian-multimedia/ stable main
deb-src http://ftp-stud.hs-esslingen.de/pub/Mirrors/debian-multimedia/ stable main

然后下载debian-multimedia-keyring软件包并安装它:

wget http://www.debian-multimedia.org/pool/main/d/debian-multimedia-keyring/debian-multimedia-keyring_2008.10.16_all.deb
dpkg -i debian-multimedia-keyring_2008.10.16_all.deb

接下来,我们使用以下内容创建文件/ etc / apt / preferences ,以使Debian-Multimedia软件包比Ubuntu Karmic资源库中的软件包更高优先级(以确保ffmpeg软件包及其依赖项由Debian安装) - 多媒体存储库,不是从Karmic资源库):

vi /etc/apt/preferences
Package: *
Pin: release a=karmic
Pin-Priority: 650

Package: *
Pin: release a=stable
Pin-Priority: 700

(您可能需要查看Apt-Pinning的简短介绍 ,以了解为什么/ etc / apt / preferences看起来像这样。)

最后更新你的软件包列表:

aptitude update

我们现在可以安装ffmpeg,如下所示:

aptitude install ffmpeg

3安装flvtool2

当我们将视频转换为FLV格式时,我们需要添加一些元数据,例如视频的持续时间到FLV文件,以便FlowPlayer可以正确显示视频的长度。 我们可以使用flvtool2添加这个元数据。 我们可以安装flvtool2如下:

aptitude install flvtool2

4创建视频目录

在本教程中,我假设您的视频网站的lighttpd文档根目录是/ var / www (Ubuntu上lighttpd的默认文件根目录)。 当然,我们不想将原始视频和FLV视频存储在文档根目录(或子目录)中,以防止任何人直接下载它们(如果他知道链接)。 因此,我们为原始视频(例如/ var / videos / incoming )和文档根目录的FLV视频目录 (例如/ var / videos / flv )创建一个目录:

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

您(或您的用户)可以将其原始视频上传到/ var / videos / incoming (例如通过FTP或某些您编程的网络界面),然后您可以将视频编码为FLV(手动或通过某些脚本)如下一章所示。

5将视频编码为FLV

假设我们在/ var / videos / incoming中有一个名为video.avi视频 (适用于扩展名.mp4 .mov .mpg .3gp .mpeg .wmv )。 我们要将其转换为文件video.flv ,并将其存储在目录/ var / videos / flv中 。 我想要video.flv的尺寸为320x240像素,音频采样频率为44100 Hz,两个音频通道(立体声)和12 fps的帧速率。 这是我们的做法:

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

(有关更多选项,请查看

man ffmpeg

这可能需要一些时间,输出应该是这样的:

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:~#

请确保在输出部分中看到两个流,一个用于视频,一个用于音频。 如果您只看视频,这意味着声音会丢失。

转换完成后,我们现在可以使用flvtool2添加元数据到video.flv:

cat /var/videos/flv/video.flv | flvtool2 -U stdin /var/videos/flv/video.flv
赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏