вопрос
Есть два хака один это установка плеера Uppod на ДЛЕ, а точнее его интеграция, и хак воспроизведения видео Вконтакте в стандартном плеере ДЛЕ. И оба они работают, но вот когда пытаюсь так сказать соединить два хака для возможности воспроизвидения видео Вконтакте в плеере Uppod то в результате ничего не выходит, хотя мне казалось что теоретически должно получится, так как вконтакте в стандартном проигрывается, а стандартный можно заменить на Uppod. Ноне тут то было... из-за не хватки знаний пока не могу с этим справится, и прошу совета, помощи у знатоков. Подскажиите как реализовать или в каком направлении копать. Код привожу ниже:
1. Идём на http://uppod.ru/, скачиваем плеер, скачиваем скин, переименоввываем текстовик скина
в skin.txt, копируем всё (скин и сам файл плеера) это в папку engine/classes/flashplayer
своего сайта.
2. Открываем файл engine/classes/parce.class.php
Ищем условие:
и удаляем все содержимое данного условия от { до }
Начало:
Конец:
И заменяем его (на месте удаленного кода) содержимое на:
Все Uppod установлен.
Для возможности организовать плейлист делаем следующее:
1. Снова же в файле engine/classes/parse.class.php найти следующие строки (примерно 845 строка):
и выше добавить:
2. Ниже в месте где был заменен код стандартного плеера на Uppod найти строку:
И заменить ее на
3. В этом же коде, который был заменён на код плеера Uppod найти строку:
и заменить его на:
Все! Возможность плейлиста установлена!
Для того что бы создать плейлист, следует в тег [video=] вставлять ссылки на видео материал, один
за другим, разделяя ссылки двойными вертикальными слешами "||". Так же можно каждому видео файлу
дать описание, которые будет указано в плейлисте как описание. К примеру: Серия 1, Серия 2 и тд.
Но при этом описание должно следовать сразу за ссылкой и должно быть отделено от ссылки одинарным
вертикальным слешем "|"
Наглядный пример:
Где
знак обязателен если Вы хотите указать описание. Если же описание не требуется, то можете ни чего не
указывать, а просто указать ссылку на видео.
Знак "||" отделяет одну ссылку от другой, этот знак тоже обязателен, если требуется создать плейлист
на Uppod. Если плейлист не нужен, то указание знака || не требуется.
Для начала скопируйте все файлы из папки upload архиве на ваш сервер
и файл player.swf путь к нему /engine/classes/flashplayer/vidvk/
хотя мне не понятно зачем его заливать если можно использовать стандартный файл плеера /engine/classes/flashplayer/media_player_v3.swf, пробовал с ним тоже все работает.
Далее открываем снова файл /engine/classes/parse.class.php
Находим код:
И вставляем Выше
Далее находим код:
И выше вставляем:
Далее находим код:
И втравляем выше:
На этом установка завершена.
Для корректной работы скрипта требуется:
php 5.2+
Библиотека MbString.
Библиотека cURL.
Библиотека ZipArchive.
А так-же без лимитный трафик.
Код вставки видео:
Ну и далее для возможности воспроизведения видео вконтакте в плеере Uppod я по ангиологии заменил код:
начало кода:
конец кода:
на код плеера Uppod:
далее код:
В результате вышеописанных действий при добавлении видео Вконтакте сам плеер uppod показывает, но пишет что файл не найден. А если еще и добавить возможность плейлиста, то плеер вообще не показывает.
Пытался всталять слово decode_url1 без 1 а также ставил video_url и еще другие варианты но результат тот же либо Файл не найден либо Файл video.php?oid=169577747 не найден
Подскажите что я делал не так и как можно исправить или хотя бы в какую сторону копать?
Заранее спасибо всем за хоть какую нибудь помощь.
1. Идём на http://uppod.ru/, скачиваем плеер, скачиваем скин, переименоввываем текстовик скина
в skin.txt, копируем всё (скин и сам файл плеера) это в папку engine/classes/flashplayer
своего сайта.
2. Открываем файл engine/classes/parce.class.php
Ищем условие:
if( $type == "flv" or $type == "mp4" or $type == "m4v" or $type == "m4a" or $type == "mov" or $type == "3gp" or $type == "f4v" or $detect_rtmp) {
и удаляем все содержимое данного условия от { до }
Начало:
if( $this->video_config['flv_watermark'] ) $watermark
Конец:
<embed src="" . $config['http_home_url'] . "engine/classes/flashplayer/media_player_v3.swf?stageW={$width}&stageH={$height}&contentType=video{$video_url}{$watermark}{$preview}&isYouTube=false&rollOverAlpha=0.5&contentBgAlpha=0.8&progressBarColor={$this->video_config['progressBarColor']}&defaultVolume=1&fullSizeView={$this->video_config['fullsizeview']}&showRewind=false&showInfo=false&showFullscreen=true&showScale=true&showSound=true&showTime=true&showCenterPlay=true{$autohide}&videoLoop=false&defaultBuffer={$this->video_config['buffer']}" quality="high" bgcolor="#000000" wmode="opaque" allowFullScreen="true" width="{$width}" height="{$height}" align="middle" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>
</object><!--dle_video_end-->";
И заменяем его (на месте удаленного кода) содержимое на:
$url = array ();
$url = implode( ", ", $url );
$id_player = md5( microtime() );
return "<!--dle_video_begin:{$decode_url}-->
<object id="videoplayer-{$id_player}" type="application/x-shockwave-flash"
data="" . $config['http_home_url'] . "engine/classes/flashplayer/uppod.swf" width=".$width." height=".$height.">
<param name="allowFullScreen" value="true" />
<param name="allowScriptAccess" value="always" />
<param name="wmode" value="transparent" />
<param name="movie" value="" . $config['http_home_url'] . "engine/classes/flashplayer/uppod.swf" />
<param name="flashvars" value="comment="."&st=" . $config['http_home_url'] . "engine/classes/flashplayer/skin.txt&file={$decode_url}" />
</object><!--dle_video_end-->";
Все Uppod установлен.
Для возможности организовать плейлист делаем следующее:
1. Снова же в файле engine/classes/parse.class.php найти следующие строки (примерно 845 строка):
if (count($get_size) == 3) $url = $get_size[1].",".$get_size[2];
elseif (count($get_size) == 2 AND count($sizes) == 2) $url = $get_size[1];
и выше добавить:
$decode_playlist=$url;
$playlist = explode("||", $url);
foreach ($playlist as $value){
$playl=explode("|", $value);
$playlisting[]="{'file':'".$playl[0]."','comment':'".$playl[1]."'}";
}
$playlisting = implode(",", $playlisting);
$playlisting = "{'playlist':[".$playlisting."]}";
2. Ниже в месте где был заменен код стандартного плеера на Uppod найти строку:
return "<!--dle_video_begin:{$decode_url}-->
И заменить ее на
return "<!--dle_video_begin:{$decode_playlist}-->
3. В этом же коде, который был заменён на код плеера Uppod найти строку:
<param name="flashvars" value="comment="."&st=" . $config['http_home_url'] . "engine/classes/flashplayer/skin.txt&file={$decode_url}" />
и заменить его на:
<param name="flashvars" value="comment="."&st=" . $config['http_home_url'] . "engine/classes/flashplayer/skin.txt&pl=".$playlisting."" />
Все! Возможность плейлиста установлена!
Для того что бы создать плейлист, следует в тег [video=] вставлять ссылки на видео материал, один
за другим, разделяя ссылки двойными вертикальными слешами "||". Так же можно каждому видео файлу
дать описание, которые будет указано в плейлисте как описание. К примеру: Серия 1, Серия 2 и тд.
Но при этом описание должно следовать сразу за ссылкой и должно быть отделено от ссылки одинарным
вертикальным слешем "|"
Наглядный пример:
[video=http://site.ru/video_1.flv|Видео №1||http://site.ru/video_2.mp4|Видео №1]
Где
http://site.ru/video_1.flv|Видео №1- это ссылка и описание ссылки разделённые знаком "|", этот
знак обязателен если Вы хотите указать описание. Если же описание не требуется, то можете ни чего не
указывать, а просто указать ссылку на видео.
Знак "||" отделяет одну ссылку от другой, этот знак тоже обязателен, если требуется создать плейлист
на Uppod. Если плейлист не нужен, то указание знака || не требуется.
Для начала скопируйте все файлы из папки upload архиве на ваш сервер
<?php
define("BLOCK", 8*1024);
$var = base64_decode($_GET['var']);
$url = "http://vk.com/video_ext.php?".$var;
$ch = curl_init();
$user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.2.13) ' .
'Gecko/20101203 Firefox/3.6.13 ( .NET CLR 3.5.30729)';
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
curl_setopt($ch, CURLOPT_HEADER,false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_VERBOSE,1);
$vk = curl_exec($ch);
curl_close($ch);
preg_match('|host=(.*)&|Uis', $vk, $host);
preg_match('|uid=(.*)&|Uis', $vk, $uid);
preg_match('|vtag=(.*)&|Uis', $vk, $vtag);
preg_match('|vkid=(.*)&|Uis', $vk, $vkid);
preg_match('|no_flv=(.*)&|Uis', $vk, $no_flv);
preg_match('|thumb=(.*)&|Uis', $vk, $thumb);
preg_match('|md_title=(.*)&|Uis', $vk, $title);
$title = urldecode($title['1']);
if($_GET['type'] == 'image'){
$link = $thumb['1'];
$header = get_headers($link, 0);
$fp = fopen($link, "rb");
if(isset($header)){
foreach($header as $v) header($v);
}
while(!feof($fp)){
echo fread($fp, BLOCK);
}
}else{
if($host){
$oldVideo = false;
if($uid['1'] == '0'){
$oldVideo = true;
}
if($oldVideo){
header('Content-Disposition: attachment; filename="'.$title.'.flv"');
$link = 'http://'.$host['1'].'/assets/videos/'.$vtag['1'].$vkid['1'].'.vk.flv';
$header = get_headers($link, 0);
$fp = fopen($link, "rb");
if(isset($header)){
foreach($header as $v) header($v);
}
while(!feof($fp)){
echo fread($fp, BLOCK);
}
}else{
if($no_flv['1'] == '1'){
header('Content-Disposition: attachment; filename="'.$title.'.mp4"');
$link = $host['1'].'u'.$uid['1'].'/video/'.$vtag['1'].'.240.mp4';
$header = get_headers($link, 0);
$fp = fopen($link, "rb");
if(isset($header)) foreach($header as $v) header($v);
while(!feof($fp)){
echo fread($fp, BLOCK);
}
fclose($fp);
}else{
header('Content-Disposition: attachment; filename="'.$title.'.flv"');
$link = $host['1'].'u'.$uid['1'].'/video/'.$vtag['1'].'.flv';
$header = get_headers($link, 0);
$fp = fopen($link, "rb");
if(isset($header)) foreach($header as $v) header($v);
while(!feof($fp)){
echo fread($fp, BLOCK);
}
fclose($fp);
}
}
}else{
header("HTTP/1.0 404 Not Found");
}
}
?>
хотя мне не понятно зачем его заливать если можно использовать стандартный файл плеера /engine/classes/flashplayer/media_player_v3.swf, пробовал с ним тоже все работает.
Далее открываем снова файл /engine/classes/parse.class.php
Находим код:
$source = preg_replace( "#[audios*=s*(S.+?)s*]#ie", "$this->build_audio('1')", $source );
И вставляем Выше
$source = preg_replace( "#[vidvks*=s*(S.+?)s*]#ie", "$this->build_vidvk('1')", $source );
Далее находим код:
$txt = preg_replace( "#<!--dle_audio_begin:(.+?)-->(.+?)<!--dle_audio_end-->#is", '[audio=1]', $txt );
И выше вставляем:
$txt = preg_replace( "#<!--dle_vidvk_begin-->(.+?)src="(.+?)"(.+?)<!--dle_vidvk_end-->#is", '[vidvk=2]', $txt );
$txt = preg_replace( "#<!--dle_vidvk_begin:(.+?)-->(.+?)<!--dle_vidvk_end-->#is", '[vidvk=1]', $txt );
Далее находим код:
function build_audio($url) {
И втравляем выше:
function build_vidvk($url) {
$decode_url1 = $url;
$get = explode( "?", $url );
$get = strtolower( end( $get ) );
$url = '/engine/video.php?'.$get;
global $config;
if (!count($this->video_config)) {
include (ENGINE_DIR . '/data/videoconfig.php');
$this->video_config = $video_config;
}
$get_size = array();
$sizes = array();
$get_size = explode( ",", trim( $url ) );
if (count($get_size) > 1 AND ( stripos ( $get_size[0], "http" ) === false OR stripos ( $get_size[0], "rtmp:" ) === false ) ) {
$sizes = explode( "x", trim( $get_size[0] ) );
$width = $this->video_config['width'];
$height = $this->video_config['height'];
} else {
$width = $this->video_config['width'];
$height = $this->video_config['height'];
}
if (count($get_size) == 3) $url = $get_size[1].",".$get_size[2];
elseif (count($get_size) == 2 AND count($sizes) == 2) $url = $get_size[1];
$thumb = $thumb['1'];
$url = $config['http_home_url'].'engine/video.php?var='.base64_encode($get);
if ( count($sizes) == 2 ) $decode_url = $width."x".$height.",".$decode_url;
if( $this->video_config['flv_watermark'] ) $watermark = "&showWatermark=true&watermarkPosition={$this->video_config['flv_watermark_pos']}&watermarkMargin=0&watermarkAlpha={$this->video_config['flv_watermark_al']}&watermarkImageUrl={THEME}/dleimages/flv_watermark.png";
else $watermark = "&showWatermark=false";
$preview = "&showPreviewImage=true&previewImageUrl=";
if ( $this->video_config['preview'] )
$poster_url = urlencode($url . '&type=image');
$preview = "&showPreviewImage=true&previewImageUrl=" . $poster_url;
if ( $this->video_config['startframe'] )
$preview = "&showPreviewImage=false";
if ( $this->video_config['play'] ) {
$preview = "&showPreviewImage=false&autoPlays=true";
}
$this->video_config['buffer'] = intval($this->video_config['buffer']);
$this->video_config['fullsizeview'] = intval($this->video_config['fullsizeview']);
if ( $this->video_config['autohide'] ) $autohide = "&autoHideNav=true&autoHideNavTime=3";
else $autohide = "&autoHideNav=false";
$id_player = md5( microtime() );
$video_url = "&videoUrl=".urlencode($url);
return "<!--dle_vidvk_begin:{$decode_url1}--><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="{$width}" height="{$height}" id="Player-{$id_player}">
<param name="movie" value="" . $config['http_home_url'] . "engine/classes/flashplayer/vidvk/player.swf?stageW={$width}&stageH={$height}&contentType=video{$video_url}{$watermark}{$preview}&isYouTube=false&rollOverAlpha=0.5&contentBgAlpha=0.8&progressBarColor={$this->video_config['progressBarColor']}&defaultVolume=1&fullSizeView={$this->video_config['fullsizeview']}&showRewind=false&showInfo=false&showFullscreen=true&showScale=true&showSound=true&showTime=true&showCenterPlay=true{$autohide}&videoLoop=false&defaultBuffer={$this->video_config['buffer']}" />
<param name="allowFullScreen" value="true" />
<param name="scale" value="noscale" />
<param name="quality" value="high" />
<param name="bgcolor" value="#000000" />
<param name="wmode" value="opaque" />
<embed src="" . $config['http_home_url'] . "engine/classes/flashplayer/vidvk/player.swf?stageW={$width}&stageH={$height}&contentType=video{$video_url}{$watermark}{$preview}&isYouTube=false&rollOverAlpha=0.5&contentBgAlpha=0.8&progressBarColor={$this->video_config['progressBarColor']}&defaultVolume=1&fullSizeView={$this->video_config['fullsizeview']}&showRewind=false&showInfo=false&showFullscreen=true&showScale=true&showSound=true&showTime=true&showCenterPlay=true{$autohide}&videoLoop=false&defaultBuffer={$this->video_config['buffer']}" quality="high" bgcolor="#000000" wmode="opaque" allowFullScreen="true" width="{$width}" height="{$height}" align="middle" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>
</object><!--dle_vidvk_end-->";
}
Для корректной работы скрипта требуется:
php 5.2+
Библиотека MbString.
Библиотека cURL.
Библиотека ZipArchive.
А так-же без лимитный трафик.
Код вставки видео:
[vidvk=http://vk.com/video_ext.php?oid=5481009&id=161364971&hash=6e263a7385bbfdd3&hd=3]
Ну и далее для возможности воспроизведения видео вконтакте в плеере Uppod я по ангиологии заменил код:
начало кода:
if( $this->video_config['flv_watermark'] ) $watermark = "&showWatermark=true&watermarkPosition={$this->video_config['flv_watermark_pos']}&watermarkMargin=0&watermarkAlpha={$this->video_config['flv_watermark_al']}&watermarkImageUrl={THEME}/dleimages/flv_watermark.png";
else $watermark = "&showWatermark=false";
конец кода:
<embed src="" . $config['http_home_url'] . "engine/classes/flashplayer/vidvk/player.swf?stageW={$width}&stageH={$height}&contentType=video{$video_url}{$watermark}{$preview}&isYouTube=false&rollOverAlpha=0.5&contentBgAlpha=0.8&progressBarColor={$this->video_config['progressBarColor']}&defaultVolume=1&fullSizeView={$this->video_config['fullsizeview']}&showRewind=false&showInfo=false&showFullscreen=true&showScale=true&showSound=true&showTime=true&showCenterPlay=true{$autohide}&videoLoop=false&defaultBuffer={$this->video_config['buffer']}" quality="high" bgcolor="#000000" wmode="opaque" allowFullScreen="true" width="{$width}" height="{$height}" align="middle" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>
</object><!--dle_vidvk_end-->";
на код плеера Uppod:
$url = array ();
$url = implode( ", ", $url );
$id_player = md5( microtime() );
return "<!--dle_video_begin:{$decode_url}-->
<object id="videoplayer-{$id_player}" type="application/x-shockwave-flash"
data="" . $config['http_home_url'] . "engine/classes/flashplayer/uppod.swf" width=".$width." height=".$height.">
<param name="allowFullScreen" value="true" />
<param name="allowScriptAccess" value="always" />
<param name="wmode" value="transparent" />
<param name="movie" value="" . $config['http_home_url'] . "engine/classes/flashplayer/uppod.swf" />
<param name="flashvars" value="comment="."&st=" . $config['http_home_url'] . "engine/classes/flashplayer/skin.txt&file={$decode_url}" />
</object><!--dle_video_end-->";
далее код:
<!--dle_video_begin:{$decode_url}-->заменил на
<!--dle_vidvk_begin:{$decode_url1}-->и
<param name="flashvars" value="comment="."&st=" . $config['http_home_url'] . "engine/classes/flashplayer/skin.txt&file={$decode_url}" />на
</object><!--dle_video_end-->";
<param name="flashvars" value="comment="."&st=" . $config['http_home_url'] . "engine/classes/flashplayer/skin.txt&file={$decode_url1}" />
</object><!--dle_vidvk_end-->";
В результате вышеописанных действий при добавлении видео Вконтакте сам плеер uppod показывает, но пишет что файл не найден. А если еще и добавить возможность плейлиста, то плеер вообще не показывает.
Пытался всталять слово decode_url1 без 1 а также ставил video_url и еще другие варианты но результат тот же либо Файл не найден либо Файл video.php?oid=169577747 не найден
Подскажите что я делал не так и как можно исправить или хотя бы в какую сторону копать?
Заранее спасибо всем за хоть какую нибудь помощь.