如何识别这些媒体链接以设置适当的播放器?

问题描述 投票:0回答:1

我真的很复杂,不管怎么说,我们有以下链接

    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";

}

做什么的

事实上,我正在尝试编写类,可以识别链接然后将其正确的播放器嵌入代码调用到我的网页,并将支持尽可能多的不同媒体扩展,所以这是真正帮助我很多的基本示例。

php media-player media
1个回答
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');
© www.soinside.com 2019 - 2024. All rights reserved.