2017-04-08 142 views
1

我想直接下載YouTube視頻到主機空間。當我在我的電腦上嘗試本地服務器上的腳本,例如xampp時,它的效果很好。但是當我嘗試000webhosting腳本時,它不起作用。它顯示錯誤這樣YouTube視頻有下載使用PHP服務器

See the problem i am having in this screen shot

錯誤是像下面。

Uh oh, it looks like an error occurred: No MP4 video source was able to be located.

下面是下載Youtube視頻的PHP代碼。

<?php 

// What YouTube URL was provided to us? 
$url = (string) @$_GET['url']; 

/** 
* Define a function to extract a YouTube Video ID from a URL. 
* 
* @param string $url A YouTube Video URL 
* @return mixed   If successful, will return a string. If failed, will return NULL 
*/ 

function getYouTubeVideoIdFromUrl($url) 
{ 
preg_match("/^(?:http(?:s)?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|(?:embed|v|vi|user)\/))([^\?&\"'>]+)/", $url, $matches); 

// If this match exists. 
if (sizeof($matches) >= 2 && strlen($matches[1])) 
{ 
    return $matches[1]; 
} 

return NULL; 
} 

/** 
* Define a function to extract a YouTube encoded stream URL. 
* 
* @param array $streams An array of streams provided to us from YouTube's "get_video_info" page. 
* @return mixed    If successful, will return the MP4 stream URL. If failed, will return NULL 
*/ 

function getMP4FromEncodedStream($streams) 
{ 
foreach($streams as $stream) 
{ 
    // Decode this stream's data. 
    parse_str($stream, $data); 

    // If we found our MP4 stream source. 
    if (stripos($data['type'], 'video/mp4') === 0) 
    { 
     return $data['url']; 
    } 
} 

// We didn't find any, whoops.. 
return NULL; 
} 

// Try to validate their request. 
try 
{ 
// If an invalid YouTube URL was provided. 
if (($videoId = getYouTubeVideoIdFromUrl($url)) === NULL) 
{ 
    throw new Exception('An invalid YouTube Video URL was provided.'); 
} 

// Retrieve all information pertaining to this Video; more specifically, we're looking for the encoded video streams. 
parse_str(file_get_contents('http://youtube.com/get_video_info?video_id=' . $videoId), $videoData); 

// If there's a problem extracting information. 
if (@$videoData['status'] == 'fail') 
{ 
    throw new Exception($videoData['reason']); 
} 

// Were we able to locate an encoded stream in MP4 format? 
if (($streamUrl = getMP4FromEncodedStream(explode(',', $videoData['url_encoded_fmt_stream_map']))) === NULL) 
{ 
    throw new Exception('No MP4 video source was able to be located.'); 
} 

// Where will we be saving this Video? 
$saveAs = dirname(__FILE__) . '/' . $videoId . '.mp4'; 

// Try to open the encoded video stream URL. 
if ($read = @fopen($streamUrl, 'r')) 
{ 
    // Open the file we want to save to. 
    $write = @fopen($saveAs, 'w'); 

    // Write the stream to our file. 
    $streamReturn = stream_copy_to_stream($read, $write); 

    // Close our files. 
    @fclose($read); 
    @fclose($write); 

    // If we were unable to copy from stream. 
    if ($streamReturn === false) 
    { 
     throw new Exception('We were unable to copy this from the stream.'); 
    } 
} 

// If our new file doesn't exist, we have a problem. 
if ([email protected]_exists($saveAs)) 
{ 
    throw new Exception('We encountered an issue saving this Video.'); 
} 

// Everything saved properly, let them know there they can see their file. 
print 'Your Video <strong>' . $videoId . '</strong> has been saved to <strong>' . $saveAs . '</strong>'; 
} 
// If something went wrong. 
catch(Exception $e) 
{ 
print '<strong>Uh oh, it looks like an error occurred:</strong> ' . $e->getMessage(); 
} 

?> 

所有你需要做的就是這個腳本複製到你的網絡服務器,並運行一個URL文件類似下列之一:

http://www.mywebserver.com/youtube-downloader.php?url=https://www.youtube.com/watch?v=dQw4w9WgXcQ 
http://www.mywebserver.com/youtube-downloader.php?url=https://youtu.be/dQw4w9WgXcQ 

一切工作正常,但影片沒有下載網上的服務器,主機空間..

幫助.. 在此先感謝..

+0

刪除所有'@'並檢查是否有任何錯誤。 – apokryfos

+0

你應該先閱讀[YouTube使用條款(https://www.youtube.com/static?template=terms)。 – wormi4ok

+0

OKK ..我會嘗試刪除 –

回答

0

您可以使用以下開源影片下載PHP腳本的鏈接

Youtube Downloader PHP Script

該腳本還可以使每臺設備的高分辨率視頻和更多的功能與適當的安全功能。

+0

我想上面的腳本加以解決 –

+0

您可以下載這個腳本,並得到回答的腳本鏈接無法使用 – ImBS