有人帮我,我想用PHP代码开发一个网站。 GIF-KING这是我的网站我已经完成了jpeg图片给gif创建者但是如何从YouTube网址创建GIF图像,如yt2gif
我试图搜索Google,但没有给出足够的结果来满足我的要求。
我将代码上传视频发送给GIF创建者但无法找到制作YouTube网址的脚本给GIF创建者。
我有一个解决方案首先使用YouTube API下载YouTube视频。然后将其转换为GIF图像。但这不是正确的方法。我无法在中间部分进行转换。始终从开始转换此外,无法从YouTube下载大量视频。
请参阅我从YouTube网址创建GIF图片的过程。
屏幕截图-1:
复制YouTube网址
屏幕截图-2:
将其粘贴到网站http://www.gif-king.com/make-your-gif3中,请参阅下面的屏幕截图。
点击Create Gifs
一段时间后会显示视频详细信息。请参阅屏幕截图-3。
截图-3:
点击Make Gif
后,此视频将转换为GIF。
它正在制作一个小视频。但不适用于大视频。
我的PHP代码:
ajax.php
if(isset($_REQUEST['vid'])){
$vidID=$_REQUEST['vid'];
if($vidID){
include('curl.php');
include('youtube.php');
$tube = new youtube();
$links = $tube->get("http://www.youtube.com/watch?v=".$vidID);
$getVideo=$links[3]['url']; //Get the avi video from youtube
$cate=mysql_query("select * from category ORDER BY id ");
while($categoryName=mysql_fetch_array($cate)){
$getCatRes .= '<option value="'.$categoryName['id'].'">'.$categoryName['name'].'</option>';
}
if($getVideo) {
$url = "http://gdata.youtube.com/feeds/api/videos/". $vidID;
$doc = new DOMDocument;
$doc->load($url);
$title = $doc->getElementsByTagName("title")->item(0)->nodeValue;
$duration = $doc->getElementsByTagName('duration')->item(0)->getAttribute('seconds');
if($duration > 1200){
$array[] = array('result'=>'error','message'=>'ERROR!!! Maximum 20 minutes video allowed');
}
else{
$newVideo = "gifking_".time().".avi";
$videoUploaded=file_put_contents("myvideo/".$newVideo,file_get_contents($getVideo));
if($videoUploaded){
$video='<iframe width="360" height="240" frameborder="0" allowfullscreen="" src="http://www.youtube.com/embed/'.$vidID.'?enablejsapi=1&playerapiid=ytplayer&version=3&cc_load_policy=0&iv_load_policy=3&modestbranding=1&rel=0&showinfo=0&theme=light"></iframe>';
$video_title='<input type="text" class="add-gif-textbox" name="title" id="title" placeholder="Title" value="'.$title.'" />';
$category='<select class="add-gif-dropdown" id="cat_id" name="cat_id">
'.$getCatRes.'
</select>';
$tag='<input type="text" class="add-gif-textbox" name="tag" id="tag" placeholder="tiger,book,flower" />';
$submitBtn='<input id="button" class="button1" type="submit" value="Make Gif" name="submit">';
$array[] = array('result'=>'success','title'=>$video_title,'category'=>$category,'video'=>$video,'duration'=>$duration,'tag'=>$tag,'filename'=>$newVideo,'submit_btn'=>$submitBtn);
}
else{
$array[] = array('result'=>'error','message'=>'ERROR!!! Uploading image please try again');
}
}
}
else{
$array[] = array('result'=>'error','message'=>'ERROR!!! Invalid video id');
}
echo json_encode($array);
}
}
请建议我如何在php代码中创建它?
答案 0 :(得分:11)
它非常简单,对您来说很幸运!这是一个简单的分步计划:
您首先从Youtube(或任何其他视频网站下载视频不要过于具体)下载视频。这可以通过下载程序完成。那些存在,有流行的。
然后你需要一个视频转换器程序。那些存在,有流行的。有了它,您可以将每个X帧提取为图像。注意使时间正确,以便了解每个X帧之间的持续时间(以毫秒为单位)。
然后,您将所提取帧的所有图像文件再次与可以创建GIF动画的软件合并。那些存在,有流行的。现在请注意在帧之间设置正确的时间。
然后将gif图像保存为特定的文件名。
好消息:你已经完成了。
就这个程序而言(编程问题),您可以找到上面列表中列出的步骤。
实施取决于现场偏离主题的工具建议(但这不应该显示给你,因为上面的每一步都在互联网中详细解释,你似乎很聪明地使用互联网否则你不会在Stackoverflow上询问。
祝你好运,玩得开心。让我们知道它是如何成功的!答案 1 :(得分:4)
我建议使用类似ffmpeg(用于转换/录制视频的多平台开源库)来为您完成大部分更困难的工作。快看看这个 http://www.ffmpeg.org/以及http://www.catswhocode.com/blog/19-ffmpeg-commands-for-all-needs第二个网站上的其中一个代码专门用于转换为gif。
您还需要在PHP中实现该库,快速谷歌搜索显示许多可以帮助您解决此问题的网站。它可能涉及服务器上的插件或程序,以允许PHP自动执行此过程。
我还没有在PHP中完成大量的工作,但似乎很有可能将youtube视频转换为gif并进行一些工作 - 所以我希望这会有所帮助。
答案 2 :(得分:1)
我认为我会更具体,并扩展我的答案,因为评论中的字符限制非常困难:
如前所述,您必须遵循几个步骤。首先,您必须从youtube获取视频才能将其转换为: 在php中你可以在页面上尝试一个反映视频的file_get_contents()(或者其他一些下载方法,简单搜索“php download youtube video”就会发现很多。
然后你必须将它转换为gif。 xampp和ffmpeg适合于任务,虽然只需“转换为gif php”的另一个网页搜索显示了一些选项。通过搜索找到了一些教程,所以它不应该太难。您还应该查看xampp和ffmpeg网站,如果您选择使用它们,请查看相关文档。
转换后你必须保存带有特定文件名的gif,这不应该太难了,这也取决于你用来转换它的方法,再一次有很多文档来帮助解决这类问题。< / p>
所以看看它是怎么回事,虽然它会花费太长时间并且很难在stackoverflow上显示一个例子,如果你有一个更具体的问题关于其中一个步骤,我很乐意为你找到一个教程或者试着找一个适合你的小例子。尽你所能,并确保通过一些搜索和努力,你将能够立即找到如何做到这一点。
答案 3 :(得分:1)
Soluton:1
我首先使用youtube-to-gif
(如果未安装您的服务器。请与服务器支持团队联系)shell下载YouTube视频,而不是将其转换为gif图片。
这是我的代码:
$vodeo_id = 'UiPRwDUGQLE';
$start_second = 5;
$duration = 10;
$filePath = 'some_path_here';
$fileName = 'some_file_name.gif';
exec("youtube-to-gif -u https://www.youtube.com/watch?v={$video_id} -b $start_second -d $duration -s 550x? -o {$filePath}{$fileName} -f 10", $out, $err);
上面工作正常,但有一个问题。你无法从0秒转换为gif。因为youtube-to-gif
占用默认时间从3秒开始。
解决方案:2
这是第二个想法。 如果您想将YouTube转换为GIF图片。 您应该安装以下扩展
如果您的服务器中未安装上述扩展程序,请与您的服务器支持团队联系。
首先使用youtube-dl
命令下载YouTube视频。然后,您可以轻松使用ffmpeg
命令转换为GIF图像。
这是我的代码:
$input = 'your video path which you was downloading from YouTube by using youtube-dl commmand';
$start = 5;
$end = 15;
$limit = $end - $start;
$thumbnail = 'img/logo.png'; /* adding watermark on that GIF image */
$storeFolder = 'destination path here';
$targetPath = dirname(__FILE__) . $ds . $storeFolder;
$newName = time() . '.gif';
$destinationPath = $targetPath . $newName;
$command = "ffmpeg -t $limit -ss $start -i $input -i $thumbnail -vf scale=500:-1 -codec:a copy $destinationPath";
@exec($command, $ret, $returnvalue);
if ($returnvalue == 127) {
$data['message'] = "FFMPEG not installed. Please contact with support team.";
} else {
$data['message'] = "Success";
}
答案 4 :(得分:0)
有一个纯PHP解决方案,但我建议您使用外部应用程序(通过命令行)进行此转换,这很简单,因为PHP不够快,不能经常进行这种视频操作。加载时间和服务器负载都很糟糕。
对于纯PHP解决方案,您可以使用此类将视频文件转换为帧(例如,gif图像): http://www.phpclasses.org/package/3747-PHP-Manipulate-and-convert-videos-with-ffmpeg-program.html
然后将图像转换为.gif图像的帧的下一个解决方案: PHP - Create simple animated GIF from two JPEG images?
对于基于终端的解决方案,您可以查看: https://askubuntu.com/questions/107726/how-to-create-animated-gif-images-of-a-screencast
你也可以建立一个基于另一种语言的自定义应用程序的连接(比如说; python或C ++),让这个程序进行硬转换,而PHP完成剩下的工作(也许创建GUI?)
答案 5 :(得分:0)
如果您想在上传文件时生成gif / image文件,请参阅ffmpeg,
ffmpeg -i orginal.avi -t 10 output.gif
-i:视频文件名 -t:是时间
如果您想使用YouTube视频调用现有的图片文件,请点击here
答案 6 :(得分:0)
我认为你的任务没有开箱即用的东西。
你应该开发一些东西来做到这一点。
例如你可以:
答案 7 :(得分:0)
Google提供Youtube API,用于处理与Youtube视频相关的任务,包括图片网址。 Youtube-Google Developers
答案 8 :(得分:0)
您可以使用外部API YouTube video to gif Animation。
示例PHP代码:
$response = Unirest::post(
"https://squbit-video-to-animation.p.mashape.com/animation",
array(
"X-Mashape-Authorization" => "Mashape-Authorization-Key",
"Content-Type" => "application/json"
),
"{\"sourceId\":\"ZL6a4U_UdTc\",\"width\":\"480\",\"height\":\"270\",\"startTime\":\"192\",\"duration\":\"17\",\"callback\":\"http:\/\/yourhost.com\/callback\/\"}"
);
您在JSON请求中指定输入参数。
动画准备就绪后,您将收到http://yourhost.com/callback_url/的回调,其中包含指向已创建的gif动画的链接
谢谢