X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Передача видео в плеер? Ретранслятор!
arashvg
arashvg
Topic Starter сообщение 2.2.2012, 19:04; Ответить: arashvg
Сообщение #1


собственно есть скрипт который (работал пока контакт не поменял структуру) вытаскивал прямую ссылку на видеофайл контакта и потоком передавал его в плеер, на его основе нужно сделать обычную передачу видео в плеер, тоесть выдирать никаких сслок не нужно:

вот код скрипта:

<?php set_time_limit(0);
//+------------------------------+
//|    relaying                 |
//+------------------------------+

//===================================================================++
// Настройки, если Вы не уверены в том что делаете, лучше не меняйте!||
//===================================================================++

define("QUALITY", '360');
define("MESSAGE", 'Sorry video not found');
define("TIMEOUT", 10);  




//#### Дальше ничего не менять без знаний PHP
define("BLOCK", 8*1024);

if(isset($_GET['str']))
{
    //Обработка входящих данных
    if(preg_match('#^video((?:|-)\d+)_(\d+)(?:|_(\d+))$#', $_GET['str'], $match))
    {
            $oid = $match[1];
            $id = $match[2];
            $quality = isset($match[3]) ? $match[3] : QUALITY;
            $startTime = isset($_GET['start']) ? '?start='.$_GET['start'] : '';
    }
    else die(MESSAGE);
}
else die (MESSAGE);

//## Получаем данные со страницы
$data = getData($oid, $id, MESSAGE, TIMEOUT);


//## Разбираем полученные данные
//get host
$start = strpos($data, 'st=')+3;
$length = strpos($data, '&', $start)-$start;
$host = substr($data, $start, $length);

//get uid
$start = strpos($data, 'uid=')+4;
$length = strpos($data, '&', $start)-$start;
$uid = substr($data, $start, $length);

//get hash
$start = strpos($data, 'vtag=')+5;
$length = strpos($data, '&', $start)-$start;
$hash = substr($data, $start, $length);

//fix for very old video
$oldVideo = false;
if(strpos($host, 'vkadre.ru'))
{
    $oldVideo = true;
    $start = strpos($data, 'vkid=')+5;
    $length = strpos($data, '&', $start)-$start;
    $vkid = substr($data, $start, $length);
}
else
{
    $highQuality = false;
    if(strpos($data, "video_max_hd = '0'")!==false) $quality = '240';
    else
    {
        if(strpos($data, "video_max_hd = '1'")!==false) $maxQ = '360';
        else if(strpos($data, "video_max_hd = '2'")!==false) $maxQ = '480';
        else if(strpos($data, "video_max_hd = '3'")!==false) $maxQ = '720';
        if($maxQ<$quality) $quality = $maxQ;
        $highQuality = true;
    }

    $ext = '.mp4';
    if(strpos($data, 'video_no_flv = 0')!==false)
    {
        if(!$highQuality || $quality=='240')
        {
            $quality = '';
            $ext = 'flv';
        }

    }
}


if($oldVideo)
{
    $link = 'http://'.$host.'/assets/videos/'.$hash.$vkid.'.vk.flv';
    $startTime = '';
}
else $link = $host.'u'.$uid.'/video/'.$hash.'.'.$quality.$ext;


$link .= $startTime;
$header = get_headers($link, 0);

$fp = @fopen($link, "rb") or die (MESSAGE);
if(isset($header))    foreach($header as $v) header($v);
while(!feof($fp))  echo fread($fp, BLOCK);
fclose($fp);


function getData($oid, $id, $message="Video not found", $timeout=30)
{
    $url = 'http://vkontakte.ru/video.php?act=a_embedbox&oid='. $oid .'&vid='. $id;
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch,CURLOPT_TIMEOUT, $timeout);
    $data = curl_exec($ch);

    $start = strpos($data, 'hash=')+5;
    $length = strpos($data, '\\', $start)-$start;
    $hash = substr($data, $start, $length);

    $url = 'http://vkontakte.ru/video_ext.php?oid='.$oid.'&id='.$id.'&hash='.$hash;
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch,CURLOPT_TIMEOUT, $timeout);
    $data = curl_exec($ch);
    curl_close($ch);
    if(strpos($data, 'не найден')!==false ||  strpos($data, 'видео изъято')!==false) die($message);

return $data;
}
?>


пытался сделать сам, но у меня ничео не работает, может подскажыте где ошибся? вот мой код:

<?php
define("QUALITY", '360');
define("MESSAGE", 'Sorry video not found');
define("TIMEOUT", 10);


//echo $_GET['stat'];
$link. = $_GET['stat'];
$header = get_headers($link, 0);

$fp = @fopen($link, "rb") or die (MESSAGE);
if(isset($header))    foreach($header as $v) header($v);
while(!feof($fp))  echo fread($fp, BLOCK);
fclose($fp);
echo $fp;


?>


--------------------
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Freekiller
Freekiller
сообщение 5.2.2012, 10:47; Ответить: Freekiller
Сообщение #2


Вот тебе код, у меня на денвере работает


<?php set_time_limit(0);
//+------------------------------+
//| relaying |
//+------------------------------+

//===================================================================++
// Настройки, если Вы не уверены в том что делаете, лучше не меняйте!||
//===================================================================++

define("QUALITY", '360');
define("MESSAGE", 'Sorry video not found');
define("TIMEOUT", 10);


//#### Дальше ничего не менять без знаний PHP
define("BLOCK", 8*1024);

$url = "http://vk.com/video_ext.php?oid=64208647&id=161215477&hash=ad710bacd9e94891&";
#if(isset($_GET['str']))
if($url){
//Обработка входящих данных
$get = explode( "?", $url );
$get = strtolower( end( $get ) );
preg_match('|oid=(.*)&|Uis', $get, $oid);
preg_match('|&id=(.*)&|Uis', $get, $id);
preg_match('|hash=(.*)&|Uis', $get, $hash);

$oid = $oid['1'];
$id = $id['1'];
$hash = $hash['1'];
$quality = isset($match[3]) ? $match[3] : QUALITY;
$startTime = isset($_GET['start']) ? '?start='.$_GET['start'] : '';
}
else die (MESSAGE);

//## Получаем данные со страницы
$data = getData($oid, $id, $hash, MESSAGE, TIMEOUT);

//## Разбираем полученные данные
//get host
$start = strpos($data, 'st=')+3;
$length = strpos($data, '&', $start)-$start;
$host = substr($data, $start, $length);

//get uid
$start = strpos($data, 'uid=')+4;
$length = strpos($data, '&', $start)-$start;
$uid = substr($data, $start, $length);

//get hash
$start = strpos($data, 'vtag=')+5;
$length = strpos($data, '&', $start)-$start;
$hash = substr($data, $start, $length);

//fix for very old video
$oldVideo = false;
if(strpos($host, 'vkadre.ru')){
$oldVideo = true;
$start = strpos($data, 'vkid=')+5;
$length = strpos($data, '&', $start)-$start;
$vkid = substr($data, $start, $length);
}else{
$highQuality = false;
if(strpos($data, "video_max_hd = '0'")!==false) $quality = '240';
else
{
if(strpos($data, "video_max_hd = '1'")!==false) $maxQ = '360';
else if(strpos($data, "video_max_hd = '2'")!==false) $maxQ = '480';
else if(strpos($data, "video_max_hd = '3'")!==false) $maxQ = '720';
if($maxQ<$quality) $quality = $maxQ;
$highQuality = true;
}

$ext = '.mp4';
if(strpos($data, 'video_no_flv = 0')!==false)
{
if(!$highQuality || $quality=='240')
{
$quality = '';
$ext = 'flv';
}

}
}


if($oldVideo){
$link = 'http://'.$host.'/assets/videos/'.$hash.$vkid.'.vk.flv';
$startTime = '';
}
else $link = $host.'u'.$uid.'/video/'.$hash.'.'.$quality.$ext;

$header = get_headers($link, 0);
$fp = @fopen($link, "rb") or die (MESSAGE);
if(isset($header)){
foreach($header as $v) header($v);
}
while(!feof($fp)){
echo fread($fp, BLOCK);
}
fclose($fp);


function getData($oid, $id, $hash, $message="Video not found", $timeout=30)
{ $url = 'http://vk.com/video_ext.php?oid='.$oid.'&id='.$id.'&hash='.$hash;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
?>
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
arashvg
arashvg
Topic Starter сообщение 6.2.2012, 11:07; Ответить: arashvg
Сообщение #3


Вот тебе код, у меня на денвере работает


Вы не совсем правильно меня поняли, мне не нужно парсить контакт, мне нужно скормить скрипту ссылку на виде, например http://tubecontext.com/videoplayer/l.mp4 (ссылка рабочая, видео есть). И пропустить это видео через него как через ретранслятор.

тоесть прмрено так:

<?php
$url='http://tubecontext.com/videoplayer/l.mp4';
$header = get_headers($url, 0);
$fp = @fopen($url, "rb") or die (MESSAGE);
if(isset($header)){
foreach($header as $v) header($v);
}
while(!feof($fp)){
echo fread($fp, BLOCK);
}
fclose($fp);
?>


но у меня этот код дает ошибку 504, а сам парсер ВК в свою очередь, предлагает скачать видео, такого же эффекта нужно добиться и мне!


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
HapkomaH
HapkomaH
сообщение 6.2.2012, 12:39; Ответить: HapkomaH
Сообщение #4


504 ошибка значит, что времени не хватило, поставить нужно set_time_limit(0); особенно на локалке. И желательно после echo fread($fp, BLOCK); добавить еще flush(); для отдачи текущего буфера браузеру сразу. Кстати для разгрузки небольшой сервера лучше наверное читать большими блоками (не проверял, могу ошибаться).

P.S.: arashvg, добро пожаловать! ;)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
arashvg
arashvg
Topic Starter сообщение 6.2.2012, 14:45; Ответить: arashvg
Сообщение #5


следующий код

<?php
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 'On');
set_time_limit(0);
$url='http://tubecontext.com/videoplayer/l.mp4';
$header = get_headers($url, 0);
$fp = @fopen($url, "rb") or die (MESSAGE);
if(isset($header)){
foreach($header as $v) header($v);
}
while(!feof($fp)){
echo fread($fp, BLOCK);
flush();
}
fclose($fp);
?>

выдает также выдает 504, теструю на хостинге, вот ссылка http://onlainmovie.pp.ua/2.php

моежет в самом коде ошибка, тоесть может я не то, или не все то что нужно взял из работающего парсера?

P.S.: тут пришло в голову, а есть ли в ВК защита ссылки по ИП, например как на фильмиксе, или других круптых онлайн сайтах? есле нету, то в парсере нету и ретранслятора... тоесть он просто выдергивает ссылку из кода плеера (прямую ссылку, которая меняется не зависимо от ИП, а например раз в сутки), а не пропускает через себя видео поток, в таком случае и мой код работать не будет, хотя, он должен отдавать мне вдео на скачку вет сслку на видео я ему скормил также как и процедура парсинга в исходном скрипте....
Кто, что думает?


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
arashvg
arashvg
Topic Starter сообщение 6.2.2012, 16:08; Ответить: arashvg
Сообщение #6


p.s. после 50-го нажатия F5 в браузере с загруженной ссылкой http://onlainmovie.pp.ua/2.php браузер все-таки предложил мне скачать файл, размером 10 мб, но вставляя ссылку в плеер видео не отображается, хотя по индикатору буферизации плеера, в буфер файл загружается

закомментировав строку //flush();

получаю

<b>Warning</b>: fread() [<a href='function.fread'>function.fread</a>]: Length parameter must be greater than 0 in <b>..../onlainmovie.pp.ua/2.php</b> on line <b>16</b><br />


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
arashvg
arashvg
Topic Starter сообщение 6.2.2012, 17:29; Ответить: arashvg
Сообщение #7


блин дебилизм, добавил $link=$_GET['str']; перед строкой $header = get_headers($link, 0); в исходном коде, и все работет, в чем проблема была, хз )


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Freekiller
Freekiller
сообщение 8.4.2012, 7:26; Ответить: Freekiller
Сообщение #8


arashvg, Если нужен просто ретранслятор видео то

[php]$title = "имя файла";
header('Content-Disposition: attachment; filename="'.$title.'.flv"');
$link = ссылка на видео .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);[/php]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Bond_mw
Bond_mw
сообщение 28.2.2015, 17:09; Ответить: Bond_mw
Сообщение #9


(Freekiller @ 5.2.2012, 13:47) *
Вот тебе код, у меня на денвере работает

 
Не подскажите работает еще?

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.


Сообщение отредактировал Bond - 28.2.2015, 17:10
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Через какой браузер и как можно найти в кэшэ браузера видео
9 Room 1763 26.2.2024, 21:51
автор: bestx24
Открытая тема (нет новых ответов) 📌 Рандомизация видео/аудио/фото/текста с минимальным участием - 𝓓𝓮𝓵𝓽𝓪𝓣𝓸𝓸𝓵𝓼
Мы предлагаем комплексное решение для рандомизации всех видов офера
2 leviathan 1327 29.1.2024, 21:29
автор: leviathan
Открытая тема (нет новых ответов) Скрипт поисковика видео StrongTube
3 3josoft 1545 14.8.2023, 14:45
автор: 3josoft
Открытая тема (нет новых ответов) BuxarVideoUploader - Автоматическое скачивание и загрузка видео из любых/ на любые видео хостинги (YouTube, TikTok, Instagram, Facebook, Яндекс Дзен, Вконтакте, Одноклассники, Rutube, Dailymotion, d.tube, Telegram и т.д.
0 BuxarNET 1180 19.7.2023, 5:58
автор: BuxarNET
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыDreamCash.tl - максимальный заработок на онлайн-видео. До 95% отчислений, автовыкуп подписок, отличный конверт!
Официальный топик партнерской программы DreamCash.tl
144 3landers 92422 30.12.2022, 13:25
автор: DreamSupport


 



RSS Текстовая версия Сейчас: 19.3.2024, 6:57
Дизайн