使用 PHP 搭建自己的视频点播网站,第 1 部分:基础工作-(1)

在线视频付费点播网站怎么搭建? 视频点播是二十世纪90年代在国外发展起来的,英文称为“Video on Demand”,所以也称为“VOD”。会员“付费超前点播”已经成为了各视频网站平台大力推行的观剧新方式。 视频点播网站建设分为域名的注册、服务器的准备、视频资源的准备和网站的搭建几个部分,本文将以京东云的产品和服务为基础,进行小型视频点播网站的搭建,为小型企业或个人用户提供帮助。 网站搭建 网站需要web服务器来架构,网页设计美工人员(使用flash、dreamweaver、firework、photoshop等设计工具),网页开发人 阅读详情

 

Duane O'Brien (d@duaneobrien.com), PHP 开发人员 , 自由撰稿人
Katie Horn (K4@engineering.phenomenauts.com),
开发人员 , 自由职业
Will Robot (willrobot@gmail.com), PHP Developer, Freelance Writer
2008 年 5 月 12 日
创建您自己的视频点播网站并不复杂。上传一些视频,然后供人们观看。就这么简单。但是如果您想要做很多视频,则必须将它们组织起来。这个 “使用 PHP 创建自己的视频点播网站” 教程系列包括三部分,将带您了解如何创建针对 Web 优化的视频,以及创建用于组织视频和使视频可访问的 PHP 应用程序。第 1 主要介绍基本工作,包括装配和安装必须的组件以及收集和转换视频。
开始之前
本系列是为开发人员编写的。您应该可以轻松使用 PHP 和 Web 应用程序。完成这个系列并不要求您是一名专家,但是不会花费太多的时间解释 PHP 语法和 Web 应用程序概念。如果两者您都不熟悉,但是渴望学习这些内容,也可以深入钻研。了解一些基本的数字视频知识也有帮助,但是我们会主要解释您需要了解的知识。
第一部分包含组件的装配和安装、处理视频转换以及应用程序准备。我们在这里进行了很多基础工作。需要学习很多数字视频知识,并且我们需要为第二部分中的编码做好准备。
在第二部分,您会构建一个基本的应用程序,管理上传的文件和标记。您会使用一个 PHP 框架 — 具体指 CakePHP — 来开始这个过程。这个应用程序并不是一个视频共享网站,而是关注于管理您自己的文件并供人们观看。
在第三部分,您会添加一些高级功能,并创建一个漂亮的用户界面。我们将对 UI 进行优化并使用流行视频共享网站的 API 来传播您的视频。如果说第一部分为创建做准备,第二部分是使其能够工作,那么第三部分就是不断完善应用程序。
 
在这个分三个部分的系列 “ 使用 PHP 创建自己的视频点播网站 ” 的第一部分,我们将首先介绍数字视频的各种类型以及它们独特的特性。当为 Web 创建视频时,您需要考虑的最重要的问题是,您是希望您的视频尽可能保持较小的体积以方便下载,还是希望您的视频尽可能保持较好的质量。我们也会介绍如何将视频转换为 Flash Video (FLV) 格式,并查看一些实现流视频的选项。在这个阶段还没有很多编码工作,但是我们必须安装好这个框架并设置好数据库。
要在此系列中使用数字视频,您需要进行一些设置(这里不介绍基本组件的安装):
  • 一些数字视频内容 — 可以是您创建、拍摄或从其它媒体导入的视频。
  • 一个 Microsoft® Windows® XP 盒 — 提供的这些例子使用一些针对 Windows XP 编写的软件。
  • FFmpeg,一个开源的命令行视频转换工具。
  • Riva FLV Encoder V2.0 for Windows,一个可免费使用 30 天的视频转换工具。
  • 用于其它平台的 FLV 转换程序的 Wikipedia。
  • Red5,一个基于 Java™ 的开源 Flash 服务器。
  • JW FLV MEDIA PLAYER V3.15,一个小巧的嵌入式 Flash 媒体播放器。
对于 Web 应用程序,您还需要:
  • 一个支持会话的 HTTP 服务器(最好是 mod_rewrite)。这个系列是使用启用了 mod_rewrite 的 Apache V1.3 写的。
  • 下载 CakePHP 的 1.2 beta 版本。
  • PHP V5.1.4 或更高版本。并不是检测的所有框架都需要这个级别的 PHP 版本,但是所有的框架将使用同样的 PHP 安装。这个系列使用的是 PHP V5.2.3。
  • 比较新的 MySQL 版本。可以使用并支持一些其他的数据库选项,但是这个系列和示例应用程序都使用的是 MySQL V5.0.37。
如果您对编写代码、 PHP 、数据库等完全不了解,那么您将会发现很难理解这个系列教程。您应该首先学习一些关于使用 PHP 编写 Web 应用程序的知识(关于各个项目的链接,请参阅 参考资料 )。
数字视频知识
如果您已经下载了数字视频内容,那么各种视频格式一定让您很费解,其中一些尤其难懂。在开始共享视频之前,您需要了解一些可能遇到的格式的知识,以及将视频从一种格式转换为另一种时需要考虑的注意事项。
学习数字视频是一个让人畏惧的话题。有令人眼花缭乱的视频格式,以及数不清的用于编辑、转换、打包( fold )、 spindle 、销毁( mutilate )它们的工具。更糟糕的是,很多信息非常混乱甚至明显是自相矛盾的,使您面对海量的信息茫然不知所措。但是,既然我们的目标是通过我们的网站流式播放视频,而不是提供 DVD 品质的视频,我们可以忽略很多太深奥的概念,集中解决实际问题。

 
如果您要从记录在磁带上的老式模拟摄像机中获得视频,则您需要一个视频采集卡或者外置的 USB 或 Firewire 视频采集设备。如果您拥有支持模拟数字信号转换的数码摄像机,则您可以通过您的摄像机运行旧的视频,将其传输到计算机中,就像视频来自于数码摄像机一样。
如果您使用数码摄像机,则信息本身就已经是数字的,您所要做的,就是将摄像机插入计算机。在手册中找到如何将视频传输到系统中的说明。
如果您没有数码摄像机,则您可以使用一些现有资源,比如 Internet Archive (请参阅 Resources )或其他免费或廉价的影片素材网站。您甚至可以使用很多编辑工具,使用照片制作视频幻灯片,包括与系统绑定的软件。

 
视频文件格式种类繁多,并且每种格式都提供了大量的详细信息。让我们把范围缩小到最常使用的视频格式。最常见的格式包括:
  • DV 和 HDV 是摄像机最典型的格式,得到了很多平台上广泛的软件支持。HDV 实际上是一种高分辨率的 DV 文件。
  • AVI 是一种常见的 Microsoft 格式,并且在其他平台上也受支持,但是这种格式被认为有些过时,因为出现了文件体积更小、视频质量相当的其他格式(包括 Microsoft 最新的 WMV)。
  • MOV 是一种 Apple Quicktime 格式,在大多数平台上都得到了广泛支持,使它成为一个流行的选择。在 FLV 出现之前,它是 Web 流媒体格式的事实标准。
  • MP4 是一种高于一般品质的精简的文件格式。这种格式在移动设备上使用非常广泛,并且在很多平台上都受支持,但是如果在比较老的系统上使用可能会遇到问题。
最后提到的一种格式是 Flash Video (FLV) 。我们将把我们的视频转换为 FLV 格式,以便从我们的网站上进行流式传输。现在,在大多数连接到 Web 的系统上都安装了 Flash 播放器, FLV 是得到最多支持的格式之一,这意味着更多的人将可以观看您的视频。 FLV 也使您可以访问大量基于 Flash 的媒体播放器,您迟早会用到这个特性的。

 
大小 vs. 品质
使用流式数字视频需要进行权衡。最理想的情况是,可以提供全屏的高分辨率视频,无需压缩或只进行少量压缩,获得与 DVD 相当的品质。当然,在现实世界中,这意味着漫长的下载时间,所以让我们来看看涉及到的所有重要因素。
当您把视频文件从原始格式转换为适合流式传输的 FLV 格式时,您可以控制三个因素:时间、帧大小和压缩。其中每个因素都与包含信息的文件有关,可通过调节这些因素减小文件的大小。
时间是最直接的。如果您有一个视频,其体积是您期望大小的两倍,那么可以将它剪掉一半。当然,这样可能会使视频变得不可用,但是在您拍摄素材的时候这是可以控制的,因此并不一定要完全删减。在时间方面还有一个方法,就是不用剪掉一部分视频,而是较少地显示整个视频。一个视频文件实际上是由一系列静止的图像按顺序显示,所以可以通过降低帧速率来做到这一点,在一个较长的时间段内显示较少的图像。这里需要权衡的是,每秒钟显示的帧越少,则视频起伏和抖动得越厉害。超过一定限度,就成了幻灯片了。
下一个要考虑的是帧大小。如上面提到的,视频是一系列的帧,每个帧都是占用空间和内存的像素栅格。如果您删除其中一些像素,应该不会产生特别明显的变化,而您可以显著地减小文件的大小。每删除一个像素,将释放每个像素占用空间乘以文件帧数得到的总空间。只要记住,当您减小视频大小时,需要在高度和宽度上减去同样的大小,以保持画面比例。您可能记得将邮票大小的视频投影到巨大的空白银幕的年代。我们并不需要达到那个水平。现在大约 640x480 像素大小就可以用于 Web 了,所以您不需要牺牲太多。当然,在这里也有一个权衡。当您处理这些像素时,您并不是简单地将它们从边上剪掉(当然,您也可以这么做,但这样会导致视频变得很古怪):您获得很多信息,对信息进行平均,使同样的图像变小一点。该图像不会包含相同程度的细节,如果您让很庞大的一个文件变得非常小,那么结果可能不会很好。另外,也可以将比较小的视频变大,但是结果通常比保持原始大小要糟得多。
最后一个元素是压缩。我们将忽略很多此主题的内容,直接探讨最相关的要点。在数字图像中,压缩是通过删除我们不会察觉到的信息来实现的。重复信息的区域 — 相同或相似的像素 — 这些内容使用一种描述来代替,所以当我们打开这个图像的时候,可以向我们显示一个近似的图像。比如一片蓝天。组成这片蓝天的区域可能包含成千上万种蓝色,但是我们只能注意到一些。所以压缩时选取这些区域,平均化它们,去掉所有那些我们不会看到的蓝色,记下那些应该使用同一种蓝色填充的区域,然后下次我们打开这幅图片时,显示给我们的就是一个简单一些的天空。
对于一系列图片,也可以在时间维度上压缩。使用和平均平面区域同样的方式,对信息流进行平均。既然一个像素在帧与帧之间没有太多变化,那为什么不使用一个说明来代替 1,000 个类似的蓝色像素的流,从而不需要改变后面的 999 帧?当然,如果使用了太多的压缩,则会使您的视频变得很古怪。您可能看到过有些视频上有大片静止的平面区域,直到某种块状物体在上面经过。这可能就是由于应用了太多压缩引起的。
了解了这些概念后,我们将把您的文件从原始格式转换为 .flv ,以便在网站上使用。

 
转换到 FLV
有很多视频转换程序可以使用。开源的命令行工具 FFmpeg (请参阅 系统要求 )可以直接使用,但是这个项目的一项策略就是,为了展示该项目源代码的最新更新,从来不会删减它的发行版。因此,除非您时间充裕,愿意下载和操作扩展名为 .tar.bz 之类的文件并且手边有 C 编译器,否则我们不推荐使用 FFmpeg 。
幸好已经有免费的程序,可以使用 FFmpeg 完成所有的实际工作,并且使用一个友好的安装程序将其打包为比较适合的 GUI 中。出于本文的目的,我们将使用一个这样的程序: Riva FLV Encoder V2.0 for Windows (请参阅 系统要求 )。对于非 Windows 用户的人,会发现查看 Wikipedia 对可用的 FLV 转换程序的介绍会很有用。
Riva 比较简单,积极的初学者可以在安装的片刻内将较短的视频转换为合适的 FLV 文件。启动程序后,只需要使用它浏览到您想要编码的视频,单击屏幕底部的 Encode 按钮。当完成对视频的处理后(可能需要一段时间, — 视频越长,所需时间就越长),您就可以通过单击屏幕底端刚激活的 Preview 按钮,预览您刚刚创建的 FLV 文件。既然您已经验证了它确实非常简单,我们就可以放松一下,做一些别的事情。

图 1. Riva FLV 编码器
(
图片未显示详见ibm上述引用网址)

首先要注意的是, Riva FLV Encoder 是和视频编码预设置一起提供的,是根据不同连接速度的期望带宽提供的。由于我们的目标是制作适合流式传输到大量不同设置的视频,您完全可以忽略它们的 “ 离线 ” 预设,而关注一些更实际的东西。
Riva 的 ISDN 预设为 240x180 , 15 帧 / 秒,比特率为 96 Kbps 。相反,其 DSL 预设为 640x480 , 25 帧 / 秒,比特率为 360 Kbps 。您大概希望使用这两个极端的中间值,因此可以把这两个值作为下限和上限,而不希望超出这个范围(除非您确实需要)。比如 YouTube ,以 320x240 的分辨率、变化的帧速率和大约 310 kbps 左右的比特率编码视频。
不幸的是,不存在始终产生理想结果、普遍适用的 “ 正确 ” 数字集。只有花费时间根据实际情况调节编码过程,才能获得最好的视频编码。模仿流行的设置通常情况下会让您满意,但是失去人为参与的编码过程无法监视以后的视频,因而不能保证它仍然传达期望的内容。除非设法编写一个自动化的编码器,可以执行类似检验计时等事情,否则编码过程将保持不变:这是一个不断变化的复杂权衡过程。
 
一般而言,总体移动较少的视频可以拥有较高的帧速率,而不需要过度降低画面质量,因此更容易以比较满意的方式进行编码。不幸的是,也存在相反的情况:具有大量动画的视频很容易出现问题,比如画面突然从非常清晰的状态变为大量彩色斑点,而此时正是应该执行操作的时候。
您选择要转换的画面大小应该和源视频具有同样的高宽比,否则结构会发生错误。通常,美国使用 NTSC 视频,其高宽比为 4:3 ,而欧洲的 PAL 制式视频高宽比为 5:4 。大多数的 HD 视频本身的高宽比为 16:9 。同样,您会发现对于简单的计算,画面会更加清晰。例如:您想要缩小一个视频的显示大小。如果您通过将原始画面的宽和高除以 2 得到目标大小,则编码器将可以通过每隔一行删除一行像素、每隔一列删除一列像素来获得所需的大小。这非常容易。如果您要将原始画面的大小除以(比如) 3/2 ,则编码器必须计算出它如何去掉您要保留的每一整行的半行像素。这样将执行大量的平均工作,因此与更方便的计算相比,复杂计算产生的小型视频的清晰度会更低。
如果您的视频使用可直接输出到在 HDTV 之前生产的设备的摄像设备拍摄,那么源视频很可能是隔行扫描的。如果您曾经将您的图像从模拟转换为数字,则也可能是隔行扫描的。 Riva FLV Encoder 可以对视频执行 “ 去隔行( deinterlace ) ” 操作,由于隔行扫描视频本来是用于电视机的,在大多数计算机显示器上没有任何意义,因此您可能希望那么做。如果您不确定您是否是隔行扫描,那么应该尝试以两种方式编码并比较结果,这比钻研您已经丢失的硬件手册可能要容易得多。
放置视频
现在,您已经了解了视频格式,您可以将您的视频转换为 FLV ,并且您已经非常了解如何使您的视频文件保持合理的大小。现在您需要着手处理如何放置视频以供人们观看。当涉及交付视频时,有多种选择。您可以努力避免您的视频被轻易下载,或者您可以通过控制可用的内容来控制分配。两种方式都各有优缺点。只要记住一点:您不仅仅是将一个文件放在服务器上供他人下载。
不一定必须通过一个流来观看 FLV 文件。您可以允许用户下载文件并在他们的计算机上直接观看,但是该视频可能会超出您的控制并到处传播。您可以将全部内容嵌入到一个 Flash 文件内来交付您的 FLV 视频,从而添加一些控制。但是,将您的视频分别封装到各自的 SWF 文件是不可扩展的:每当有一个新视频时,您将不得不手动构建一个新的、独立的 Flash 播放器。这就好像每次您租一部电影时要买一个新 DVD 播放器一样。
因此我们有两个流式传输选择: RTMP 和渐进式下载( progressive download ) HTTP 。
Real-Time Messaging Protocol (RTMP) 是 Macromedia 自己的流式传输协议。为了能够发布成熟的 RTMP 流,您必须首先安装 RTMP 媒体服务器软件。然后您不仅可以通过该媒体服务器流式传输您的 FLV 视频文件,而且还可以传输 RTMP 实时 “ 广播 ” 流。因为 RTMP 要求安装服务器软件,所以要实现流式传输会涉及更多的开销。
HTTP 中的渐进式下载是一种新的选择,适合那些不能或不想在他们的 Web 空间安装新服务的人。很多人发现它非常方便,连接都是通过 HTTP 来生成的,因为它不需要额外的协议,并且服务器端代码很容易通过(比如) PHP 处理。但是,值得指出的是,如果您所有的视频都是通过 HTTP 托管,因此不会推断您的源文件的存放位置,并且会直接下载到播放器外部。另外,由于 HTTP 中的渐进式下载从技术上讲并不是真正的流,您将无法主持实时广播。
两种流式传输方式都需要使用 Flash 内置的视频播放器对象,您需要自己查找或者使用 Flash 制作工具进行创建。
 
RTMP
Macromedia 为流式传输开发了 RTMP 协议,供那些使用媒体服务器软件发布 RTMP 流的人使用。现在,要使用 RTMP 发布,我们可以使用 Red5 (请参阅 系统要求 ) — 一个基于 Java 的开源 Flash 服务器,它是从 Macromedia 媒体服务器的反向工程得到的。
当然,使用 Red5 必须在某个位置安装该服务并打开您的媒体服务器和外部世界之间的相关端口。除非您可以进行控制,否则不要使用 Red5 或任何其他 RTMP 媒体服务器。
 
 
幸运的是,对于大多数 Web 管理员来说,还有一种选择只需要安装 PHP :渐进式下载 HTTP 。但它不仅仅是那些无法使用 RTMP 的人的选择。当前 Internet 上的视频共享网站,主要参与者似乎都倾向于渐进式下载 HTTP ,而不是 RTMP 流式传输。
与其向 Macromedia 支付昂贵的媒体服务器许可证费用,或者冒着被起诉的危险,使用反向工程得到的私有协议运行媒体站点,主要参与者选择制作自己的软件并使用 HTTP 进行数据传输。 HTTP 将使数据通过防火墙而不会出现问题,而 RTMP 则无法做到这点。也许最重要的是:虽然他们放弃了 RTMP 可以发布实时流的能力,但是获得了更大的灵活性,视频呈现不会引起严重的带宽问题。渐进式 HTTP 允许客户跳到视频中的关键帧,而不会等到它进入客户机缓冲区,不需要重新开始下载。这种情况只有在假设流具有静态特性时才会发生。这种假设并不适合 RTMP 协议,因为它能够像呈现静态流那样呈现实时流。
有关 OS-FL 的信息,请参阅 Resources ,它是一个开源的渐进式 HTTP Flash 播放器的例子。因为它是由 PHP 驱动的,如果您已经很好地安装了 PHP 的话,那么丢失一些源代码也不会产生什么问题。另外,将该播放器嵌入到同一服务器中的页面也非常容易。但是,请注意:如果您使用浏览器在一个具有嵌入式视频的加载页面上查看资源(例如,他们的演示页面),则整个 FLV URL 会显示在外部,任何人都可以看见,他们应该注意查看。您应该在浏览器中直接点击那个 URL ,没有什么可以阻止您保存所有视频的直接副本。
YouTube 如何规避直接下载的问题呢?首先,他们在 Flash 中制作了自己的自定义视频播放器,它向其接受的参数中加入了某种神秘的内容。
清单 1 是一个将 YouTube 视频播放器嵌入页面的代码的片段。

清单 1. 将 YouTube 视频播放器嵌入网页的代码

                    
<object width="425" height="355">
    <param name="movie" value="http://www.youtube.com
                                 /v/3g-yrjh58ms&rel=1"></param>
    <param name="wmode" value="transparent"></param>
    <embed src="http://www.youtube.com/v/3g-yrjh58ms&rel=1" 
             type="application/x-shockwave-flash" wmode="transparent" 
                 width="425" height="355"></embed>
</object>

 
注意参数 movie (以及嵌入的资源)并不是对 FLV 文件的直接引用。根据他们的设计,我们不知道他们基于 Flash 的视频播放器对该参数传递的 URL 做了什么,但是至少我们可以推断,这是一个更加复杂的系统。将原始 URL 放到浏览器中但没有获得 .flv 证明了这一点。实际上, YouTube 花费了很多心思,确保他们的视频播放器直接接触其视频。保持这种神秘的完整性需要多个人全天候地工作。
一般来说,在大多数情况下,放弃 RTMP 而选择渐进式下载 HTTP 比较好,除非没有其他的方法来解决您的特殊问题。如果您需要发布实时流媒体,您就没有选择:您必须选择 RTMP 。如果维持相关控制的能力是妨碍您使用渐进式下载 HTTP 的惟一因素,您也许应该获取 Macromedia Flash 并编写自己的自定义视频播放器,插入尽可能多的神秘内容,并应用一些聪明的服务器端重定向。
然而您应该知道,如果某个人下定了决心,我们提到的所有技术都可以被攻破,所以将您的比较敏感的 URL 放在一个至少不会被直接找到或索引的地方,这种做法永远都是一项好的实践。
 
最后,您的内容可能会以意想不到的方式进分布或传播。这对您可能很重要,也可能不重要。对于想要控制其媒体的人和想要无限制观看传播媒体的人来说,在线媒体传播是一场恒久的战争。这场战争的副产品,就是媒体破解者和媒体限制协议之间不断升级的军备竞赛。在这方面您应该有自己的想法,但是如果您想要尽可能地控制您的媒体,您应该做好思想准备:无论您怎么做,总会有人找到方法重新传播您的媒体。这并不是说控制您自己的媒体永远都是徒劳的 — 只是说如果您要找到一种让别人永远无法破解您的媒体的方法,那么您永远都不可能找到。
 
构建管理应用程序
如果您要做很多视频,那么最后会发现,希望使用一些工具帮助更好地管理自己的文件。现在已经有很多视频共享网站了,自己去另外创建一个似乎有点傻。这样说来,您需要的并不是一个更好的视频共享网站:而需要一个可以帮助您管理视频文件的东西。我们以此为目标,将构建一个非常简单的应用程序。您现在还不能进行编码 — 这是第二部分的内容。但是我们需要安装用来构建应用程序和设置数据库表的框架。
构建另一个和其他现有视频共享网站类似的网站只是重复工作,并没有什么意义。这个应用程序将采用不同的方法来管理在线视频:
1.      您将上传视频到您自己的域中。
2.      重点在于呈现自己的视频,而不是创建一个视频共享社区。
3.      支持多用户,但不是自注册方式(只能邀请)
4.      主要使用标记来管理和查找视频。
标记现在非常普遍,但是大多数使用标记的网站还是使用分类作为管理的主要方法。就其他方面来说,最好将应用程序托管在您的网站上,这样您和您的支持人员可以发布自己的视频,而不是让很多偶然的用户上传视频到您的网站。当您检查框架安装时,在数据库设计方面要考虑这些特殊的问题。
 
为了尽可能减少我们需要编写的应用程序代码量,我们将使用一种叫做 CakePHP 的 PHP 框架获得一些重要的改进。如果您以前从未使用过框架或 CakePHP ,现在已经有很多阅读材料可以帮助您入门。对于这里介绍的内容和本系列的第二部分,您会发现阅读一些有关该主题的东西会非常有用。
请访问 CakePHP.org 并下载 1.2 beta 版(请参阅 系统要求 )。 1.2 版本拥有一些我们希望在应用程序中使用的新功能。只要您满足了先决条件,安装 CakePHP 是相当简单的。在本教程中,我们使用具有 mod_rewrite 的 Apache V1.3 、 PHP V5.2.3 和 MySQL V5 。
下载并解压缩 CakePHP ,然后配置您的 Web 服务器,以便使用 CakePHP 的 webroot 目录作为文档的根目录。例如,如果您将 CakePHP 解压缩到 /cakephp 目录,您的文档根目录将设置为 /cakephp/app/webroot 目录。您还需要对 /cakephp/app/config/database.php.default 文件进行修改。将此文件复制到 /cakephp/app/config/database.php 并输入您系统的主机、账户、密码和数据库名。另外, 在 /column/protected/cakephp/app/config/core.php 中,您应该修改 CAKE_SESSION_STRING 的定义,这样 Cake 就不会对默认值有异议。您可以将默认值替换为类似下面的内容: define('CAKE_SESSION_STRING', 'The important thing here is that no one is on fire.'); 。
安装好 Cake 后,您可以开始设置您的数据库表。那意味着可以清楚地了解应用程序的外观。
 
让我们看看这个应用程序将会做什么,并找出您需要的表。
您将上传文件到自己的域中。这意味着您将需要视频表来包含有关这些特定文件的信息。每个文件将需要一个 ID 字段以及至少一个标题。您可以将视频文件实际存储在数据库中,但是最终证明这不是个好方法。您最好将文件存储在文件系统中并记住其位置。这说明您还需要一个位置字段。为了进一步完善,您可以用一个创建的字段和一个 user_id 字段来跟踪哪些视频属于哪个人。

清单 2. 创建视频表

                    
CREATE TABLE 'videos' ( 
'id' INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , 
'title' VARCHAR( 255 ) NOT NULL , 
'location' VARCHAR( 255 ) NOT NULL , 
'user_id' INT( 10 ) NOT NULL , 
'created' DATETIME DEFAULT NULL 
) ENGINE = MYISAM ; 

 
它将支持多用户,但不是自注册的方式。这意味着您将需要一个用户表来存储用户信息。至少您将需要保存用户名、密码、电子邮件、人名、姓氏字段。

清单 3. 创建用户表

                    
CREATE TABLE 'users' ( 
'id' INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , 
'username' VARCHAR( 40 ) NOT NULL , 
'password' VARCHAR( 40 ) NOT NULL , 
'email' VARCHAR( 255 ) NOT NULL , 
'firstname' VARCHAR( 40 ) NOT NULL , 
'lastname' VARCHAR( 40 ) NOT NULL 
) ENGINE = MYISAM ; 

 
标记将是组织和发现视频的主要方法。这意味着您将需要一个 tags 表来包含特定标记,以及一个 videos_tags 表来连接二者。

清单 4. 创建 tags 表

                    
CREATE TABLE 'tags' ( 
'id' INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , 
'text' VARCHAR( 40 ) NOT NULL
) ENGINE = MYISAM ; 
 
CREATE TABLE `videos_tags` ( 
'video_id' INT( 10 ) NOT NULL, 
'tag_id' INT( 10 ) NOT NULL,
PRIMARY KEY ('video_id', 'tag_id')
) ENGINE = MYISAM ; 

 
在您的数据库中创建这些表。根据您使用的数据库,您的 SQL 可能需要更新。
 
在第二部分中,您将构建一个应用程序来帮助管理视频文件。听起来好像不太复杂,对吗?那完全取决于您想从应用程序中获得什么。简单文件管理并不复杂、新颖或有趣。如果您希望应用程序更加有用,则需要提供更多功能。
花一些时间逛一逛您最喜欢的数字视频网站。记下您喜欢和不喜欢的东西。了解这些网站是如何运作的。它们的相同之处和不同之处。
当开始使用该应用程序时,至少还需要一些东西。除了简单的文件管理,我们需要一种组织文件的方法。这将允许您和观看者能够轻松找到给定主题的文件。最好列一张您认为不错的功能清单。其中一些会在此系列中涉及到,其他的可能需要您自己解决。
您还应该花一点时间熟悉这个开源的 FLV 播放器和 PHP 库。在第二部分我们要大量使用它们。播放器本身可以很容易地嵌入 — 您只需要使用这样的一行 PHP 代码: <?php flv("YOUR_VIDEO.flv", -1, -1, "0xFF0000", "0x000000"); ?> .
但是您不需要成为一名 PHP 专家来识别出该行中的 FLV 函数不是标准的 PHP 。该函数是在 OS FLV 库中定义的。尽可能多花时间熟悉它。第二部分将会有大量编程,届时您一定会非常庆幸事先了解了这些内容。
结束语
此刻您已经为您的新视频网站布置了很多东西。在第二部分,您将构建一个应用程序,帮助您组织视频文件,包括文件管理和标记。同时,您应该花时间收集(或拍摄)一些数字视频,并尝试格式转换,以熟悉我们先前提到的压缩处理的细节。
学习

获得产品和技术
 
如何搭建小型视频点播网站 视频点播是二十世纪90年代在国外发展起来的,英文称为“Video on Demand”,所以也称为“VOD”。顾名思义,就是根据观众的要求播放节目的视频点播系统,把用户所点击或选择的视频内容,传输给所请求的用户。视频点播业务是近年来新兴的传媒方式,是计算机技术、网络通信技术、多媒体技术、电视技术和数字压缩技术等多领域融合的产物。目前,在完善的技术平台支持下,通过互联网向用户在线流畅的发布视频作... 阅读详情

相关推荐

利用云平台轻松搭建视频点播网站

一个视频点播网站包括web、视频转码、视频存储、视频播放等多个部分。视频转码很耗性能、视频存储需要大量的存储资源还要防止数据丢失、而视频播放需要耗大量的带宽还要考虑cdn、各种终端(pc、安卓、IOS等),这些不是一般的公司能够做的,即使能做也需要花大量精力和财力。如果想快速的做出网站来怎么办呢,那就是利用云视频平台,你只需要做web这部分,其他跟视频相关的都交给云视频平台。这下是不是省了不少麻烦

lighting_zhu的专栏 4718

手机视频网页点播服务器,手机视频点播系统搭建完整方案

技术选择服务器操作系统:windows 点播服务器:Nginx 转码和生成清单:ffmpeg 手机客户端:ExoPlayer SDKNginx和ffmpeg都是跨平台的,应该也可以在linux上搭建出来。 搭建视频点播和直播系统使用的协议不一样,视频点播网站多数是基于http协议,而直播协议很多,比如rtsp和rtmp,其中rtmp是Adobe的私有协议。 视频直播服务器可以使用Live555,V...

weixin_30019895的博客 2054

用wordpress搭建视频点播发布平台

通过以前的文章,我们探讨了使用nginx搭建流媒体服务器的过程,内容详见:流媒体服务器的搭建(支持hls)宝塔面板安装nginx流媒体服务器(http-flv)搭建nginx-http-flv-module直播系统利用nginx-http-flv-module实现三种直播使用宝塔面板安装nginxVOD点播系统通过nginx搭建了直播、点播平台,这时需要一个发布平台了。本着开源的精神,自然需要使用WordPress了,当然还需要给它搭配合适的插件,解决视频播放的问题。

dgnankai的专栏 726

基于Python+Django,我搭建一个视频点播平台

平台采用B/S结构,后端采用主流的Python语言进行开发,前端采用主流的Vue.js进行开发。整个平台包括前台和后台两个部分。前台功能包括:首页、视频列表页面、视频详情页、用户中心模块。后台功能包括:总览、视频管理、分类管理、标签管理、评论管理、用户管理、运营管理、日志管理、系统信息模块。

m0_59596937的博客 3237

构建高效视频点播平台的综合技术教程

在数字化时代,视频点播平台已成为娱乐、教育和企业通信不可或缺的一部分。随着互联网技术的飞速发展,用户对视频质量、播放流畅度以及交互体验的需求日益增长。视频点播平台开发不仅是构建一个允许用户自主选择观看内容的系统,它更涵盖了复杂的多媒体处理、网络传输、内容管理和用户交互设计等众多方面。本章将概述视频点播平台开发的各个方面,包括其核心组成部分和开发流程,为后续章节中深入探讨各关键技术打下基础。

weixin_36474966的博客 1050

PHP视频播放器源码 支持m3u8、mp4资源

域名/?url= 如果放在二级目录就是:域名/二级目录名/?url= 支持所有m3u8跟mp4资源,一般的采集站都是m3u8资源,播放器logo直接替换logo.png文件即可

使用 PHP 搭建自己的视频点播网站,第 1 部分:基础工作

  现在注册或者使用您的 IBM ID 和密码登录。 搭 建您自己的视频点播网站并不复杂。上传一些视频,然后供人们观看。就这么简单。但是如果

IBM技术期刊 1276

微波无源器件 功分器1 新型方波导双模无功功分器

本名证明了一种基于有着特定功能的(dedicated)T性匹配元件(散射件)的进化结点的新型波导双模两路功分器的可行性。这个散射件,有着面向三个部分的匹配部分,提供了等效功分并且朝着对应的输出端口传输矩形波导的两个TE10/TE01正交模式。所提出的设计紧凑,易于比例变化并且能够级联来获得。

qq_45245770的博客 1391

小程序使用阿里云视频点播_使用PHP建立您自己的点播视频网站,第1部分,基础

存档日期:2019年4月18日 | 首次发布:2008年4月1日 设置自己的视频点播网站不必太复杂。 上载一些视频,并准备好让人们观看-非常简单。 但是,如果您要制作很多视频,则需要一种使视频井井有条的方法。 这个由三部分组成的“ 使用PHP设置自己的点播视频网站 ”系列将带您了解创建针对Web优化的视频所需的所有知识,以及创建一个PHP应用程序,该应用程序将有助于使视频井井有条并易于访问...

cuxiong8996的博客 836

ZYNQ Linux下UIO中断配置避坑实录:从设备树修改到用户层测试(Vivado 2018.2)

本文详细解析了ZYNQ Linux下UIO中断配置的全流程,从设备树修改到用户层测试,特别针对Vivado 2018.2环境中的常见陷阱提供解决方案。内容涵盖中断号配置规则、用户空间中断处理程序编写以及性能优化技巧,帮助开发者高效实现硬件中断的用户空间控制。

weixin_31854867的博客 333

CocosCreator 面试题(十五)Cocos Creator如何内置protobuf JS版本?

接着,它创建了一个 Player 对象,并使用 protobuf.js 提供的 API 对其进行序列化和反序列化操作。其中,name 和 level 是普通的字段,items 是一个 repeated 字段,表示它可以包含多个值。在 Cocos Creator 中使用 protobuf.js,我们需要先加载 .proto 文件,然后使用 protobuf.js 提供的 API 进行序列化和反序列化操作。JSON和XML是文本格式,更易于阅读和调试,而且在对人类友好的接口和数据交换上更为常见和广泛支持。

w风雨无阻w的专栏 2628

使用 PHP 创建自己的视频点播网站,第 2 部分:基本结构

创建您自己的视频点播网站并不复杂。上传一些视频,然后供人们观看。就这么简单。但是如果您想要做很多视频,则必须将它们组织起来。这个 “使用 PHP 创建自己的视频点播网站” 教程系列包括三部分,将带您了解如何创建针对 Web 优化的视频,以及创建用于组织视频和使视频可访问的 PHP 应用程序。第 1 部分主要介绍基本工作,包括装配和安装必须的组件以及收集和转换视频。第 2 部分将使用 CakeP

IBM技术期刊 993

【100分】【等和子数组最小和】

逆序排序,这样能够使得在分组时优先选取较大的元素,以便将元素分配到较小的子集中,从而使得每个子集的和相对均衡。给定一个数组nums,将元素分为若干个组,使得每组和相等,求出满足条件的所有分组中,组内元素和的最小值。分成若干个组,使得每组的和相等,并求出满足条件的所有分组中,组内元素和的最小值。在递归的过程中,我们需要注意一个优化点,即避免将相同和的桶重复计算。4 个子集(5),(1,4),(2,3),(2,3)2 个子集(5, 1, 4),(2,3, 2,3)个子集,则返回子集和的最小值,如果不能,则将。

weixin_54707168的博客 1168

使用 PHP 搭建自己的视频点播网站

使用 PHP 搭建自己的视频点播网站   系统需求要在此系列中使用数字视频,您需要进行一些设置(这里不介绍基本组件的安装): 一些数字视频内容 — 可以是您创建、拍摄或从其它媒体导入的视频。 一个 Microsoft® Windows® XP 盒 — 提供的这些例子使用一些针对 Windows XP 编写的软件。 FFmpeg,一个开源的命令行视频转换工具。 Riva FLV Encoder V2

lwang1729的专栏 1848

机器学习算法 —— LightGBM

本次我们选择英雄联盟数据集进行LightGBM的场景体验。英雄联盟是2009年美国拳头游戏开发的MOBA竞技网游,在每局比赛中蓝队与红队在同一个地图进行作战,游戏的目标是破坏敌方队伍的防御塔,进而摧毁敌方的水晶枢纽,拿下比赛的胜利。现在共有9881场英雄联盟韩服钻石段位以上的排位比赛数据,数据提供了在十分钟时的游戏状态,包括击杀数、死亡数、金币数量、经验值、等级……参考项目:机器学习系列入门系列[七]:基于英雄联盟数据集的LightGBM的分类预测。

ZShiJ的博客 708

PNP NPN线性接近开关接线嵌入式:详细指南与示例代码

在嵌入式系统中,PNP和NPN线性接近开关是常用的传感器类型,用于检测物体的接近或离开。在嵌入式系统中,PNP和NPN线制接近开关是常用的传感器类型,用于检测物体的接近或离开。本文提供了有关PNP和NPN线性接近开关接线的详细指南,并提供了一个简单的示例代码,以帮助您在嵌入式系统中正确使用这些传感器PNP NPN 线制接近开关接线 嵌入式:详细指南与示例代码。与PNP开关不同的是,NPN线性接近开关的正极连接至系统的正极电源。与PNP开关不同的是,NPN线制接近开关的正极连接至系统的正极电源。

CyberSphinx的博客 1272

php115在线视频点播网站

因为计算机硬件的发展已经越来越快,现在PC机的性能已经可以胜任普通网站的web服务器。购买一台高性能PC机作为企业的网站对于这个营销商来说并不是问题。PHP是Java在Internet/InternetWeb上的重要应用技术,可以和各种Java技术完好的结合在一起,从而实现非常复杂的应用,因此得到了广泛的支持和承认,成为一种非常流行的网站开发技术。利用PHP技术可以建立先进、安全和跨平台的动态网站。鉴于PHP技术的成熟与广泛的使用,加以指导老师的帮助可以得到很多的技术支持。

weixin_41792788的博客 953

YOLOv13保姆级教程+AKConv模块:可变形卷积+自适应核优化,mAP提升3.23%,召回率&mAP50~95显著提升(论文涨点模块已验证)

本文介绍了一种改进的YOLOv13-AKConv模型,通过引入AKConv模块显著提升了目标检测性能。实验结果表明,优化后的模型(绿色曲线)相比原模型(蓝色曲线)在mAP指标上提升了3.23个点,同时召回率、mAP50-95等指标均有明显提升。作者详细阐述了模型移植过程,包括创建yolov13-AKConv.yaml配置文件,修改tasks.py和modules/init.py文件,以及实现AKConv模块的核心代码。该模块采用可变形卷积思想,通过动态生成采样点位置来增强特征提取能力,并集成了BN和SiLU

FJN110的博客 2611

php音视频点播,使用 PHP 搭建自己的视频点播网站

使用 PHP 搭建自己的视频点播网站系统需求要在此系列中使用数字视频,您需要进行一些设置(这里不介绍基本组件的安装): 一些数字视频内容 — 可以是您创建、拍摄或从其它媒体导入的视频。一个 Microsoft® Windows® XP 盒 — 提供的这些例子使用一些针对 Windows XP 编写的软件。FFmpeg,一个开源的命令行视频转换工具。Riva FLV Encoder V2.0 for...

weixin_36204513的博客 791

C2000ware介绍

C2000的下载安装指南C2000目录。

小柚子的博客 2796

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

SSM框架视频点播网站-视频播放网站-电影在线观看网站-电视剧在线欣赏网站 (idea开发javaweb-php-asp.netC#-j2ee-springboot)

系统管理:该模块实现的功能有公告管理、发布公告、友情链接、网站留言管理、管理员设置、后台登录日志。会员管理:对注册的用户进行管理,包括删除、修改等操作,可按日期、会员名进行搜索。视频点播管理:可对视频点播进行分类,在每个分类下,可进行视频点播的添加、删除、修改等操作。并提供多种条件的查询。视频点播资讯管理:该模块实现的功能有管理视频点播资讯、发布视频点播资讯,如标题、是否显示等。注册会员管理:该模块是对注册会员的信息管理,如会员名、注册时间、登录次数、上次登录时间等。

计算机程序开发设计 5999

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

基于PHP+Mysql网页网站在线教育视频点播系统 设计与实现 研究背景和意义、国内外现状

在技术上,国外系统注重视频编解码技术的优化和流媒体传输协议的升级,以提供更加稳定、高质量的视频服务基于PHP+Mysql网页网站在线教育视频点播系统 设计与实现 研究背景和意义、国内外现状PHP+Mysql的网页网站在线视频点播系统,能够为用户提供稳定、流畅、高质量的视频观看体验,满足用户对多元化视频内容的迫切需求。国内在线视频点播系统主要以腾讯视频、爱奇艺等为代表,它们拥有庞大的用户群体和海量的正版内容,通过自主研发的技术提供高质量的视频观看体验。

杭州.黄老师 2254

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

基于微信在线教育视频点播学习小程序系统设计与实现(PHP后台)

基于微信在线教育视频点播学习小程序系统设计与实现(PHP后台)毕业设计作品成品,黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,优快云博客专家,在线教育专家,优快云钻石讲师;专注大学生毕业设计教育和辅导。所有项目都配有从入门到精通的基础知识视频课程,免费项目配有对应开发文档、开题报告、任务书、PPT、论文模版等项目都录了发布和功能操作演示视频;项目的界面和功能都可以定制,包安装运行!!!如果需要联系我,可以在优快云网站查询黄菊华老师。

杭州.黄老师 4031

计算机毕业设计 php在线视频点播网站 毕设

因为计算机硬件的发展已经越来越快,现在PC机的性能已经可以胜任普通网站的web服务器。购买一台高性能PC机作为企业的网站对于这个营销商来说并不是问题。PHP是Java在Internet/InternetWeb上的重要应用技术,可以和各种Java技术完好的结合在一起,从而实现非常复杂的应用,因此得到了广泛的支持和承认,成为一种非常流行的网站开发技术。利用PHP技术可以建立先进、安全和跨平台的动态网站。鉴于PHP技术的成熟与广泛的使用,加以指导老师的帮助可以得到很多的技术支持。

weixin_41792788的博客 490
上一篇: 网站变灰,寄托哀思,让我们共同行动!( 图片、文字、Flash变灰)
下一篇: [Google I/O] The Android demo/presentation by Steve Horowitz
newera
博客等级 码龄20年 33粉丝 105原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值