我有一个非常复杂的想法,不管怎么说,我们有以下链接
www.some_site.com/test.wmv // media player
www.some_site.com/test.mp4 // jwplayer
www.some_site.com/test.flv // jwplayer
www.some_site.com/test.rmvb // real player
www.some_site.com/test.mov // quick time
www.youtube.com/watch?v=cyvX3_3nqfc // jwplayer
看起来像媒体链接,据我所知,没有播放器支持所有扩展,因此我将根据其扩展使用其播放器中的每个链接。
示例1 (对于wmv
将嵌入Windows媒体播放器代码)
<object type="video/x-ms-wmv"
data="test.wmv"
width="400" height="350">
<param name="src" value="test.wmv" />
<param name="autostart" value="true" />
<param name="controller" value="true" />
</object>
示例2 (对于mov
将嵌入快速时间代码)
<object classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B"
codebase="http://www.apple.com/qtactivex/qtplugin.cab"
width="400" height="350">
<param name="src" value="test.mov" />
<param name="controller" value="true" />
<param name="autoplay" value="true" />
<!--[if !IE]>-->
<object type="video/quicktime"
data="test.mov"
width="400" height="350">
<param name="autoplay" value="true" />
<param name="controller" value="true" />
好的,你必须得到我的观点,所以问题是如何使用PHP获取链接的每个文件的扩展名,以便调用其正确的播放器
if ($ext === 'wmv' || $ext === 'asf') {
echo "media player";
} else if($ext === 'mov') {
echo "qick time";
} else if($ext === 'rmvb') {
echo "real player";
} else if($ext === 'youtube' || $ext === 'flv' || $ext === 'mp4') {
echo "jwplayer is good";
} else {
echo "die well";
}
为
做什么事实上,我正在尝试编写类,可以识别链接,然后将其正确的播放器嵌入代码调用到我的网页,并支持尽可能多的不同媒体扩展,所以这是真正帮助我的基本示例很多。
答案 0 :(得分:1)
这是一种方法,它应该足够灵活。
<?php
class VideoRenderer {
protected
$engines = array();
public function register(VideoRendererEngine $engine) {
array_push($this->engines, $engine);
return $this;
}
public function render($video) {
foreach ($this->engines as $engine) {
if ($engine->accepts($video)) {
return $engine->render($video);
}
}
return false;
}
}
interface VideoRendererEngine {
/**
* @return bool Whether this Engine can render the video supplied
*/
public function accepts($video);
/**
* @return string Rendered HTML
*/
public function render($video);
}
class WmvVideoEngine implements VideoRendererEngine {
public function accepts($video) {
return 'wmv' === substr($video, -3, 3);
}
public function render($video) {
return '<object type="video/x-ms-wmv"
data="' . $video . '"
width="400" height="350">
<param name="src" value="test.wmv" />
<param name="autostart" value="true" />
<param name="controller" value="true" />
</object>';
}
}
class AsfVideoEngine implements VideoRendererEngine {
public function accepts($video) {
return 'wmv' === substr($video, -3, 3);
}
public function render($video) {
return '<object type="video/x-ms-wmv"
data="' . $video . '"
width="400" height="350">
<param name="src" value="test.wmv" />
<param name="autostart" value="true" />
<param name="controller" value="true" />
</object>';
}
}
$renderer = new VideoRenderer;
$renderer->register(new WmvVideoEngine);
$renderer->register(new AsfVideoEngine);
echo $renderer->render('http://www.example.com/test.wmv');