2017-04-08 6 views
1

私はYoutubeのビデオをホスティングスペースに直接ダウンロードしようとしています。自分のPC上のxamppのようなローカルサーバ上でスクリプトを試してみるとうまくいく。しかし、私は000webhostingでスクリプトを試してもうまくいきません。これは、エラーは以下のようなものです。このyoutube videos download to PHP to server

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

オープンソースのYouTubeのダウンローダPHPスクリプトのリンク

Youtube Downloader PHP Script

このスクリプトは、デバイスの解像度ごとに映像と適切なセキュリティ機能を備えた非常に多くの機能を行うことができます。

+0

上記スクリプトを解決します。 –

+0

このスクリプトをダウンロードして、 – ImBS