/ / Php nâng cao / Comment (0)

Download hình ảnh minh họa từ video youtube

Như các bạn thấy hiện nay rất nhiều website sử dụng video từ kênh youtube.com để hiển thị lên trang của mình.Chính vì vậy trong bài viết này mình xin hướng dẫn các bạn 1 cách đơn giản để có thể lưu hình ảnh minh họa từ những video của youtube thông qua những link url.

Lấy ID của video youtube

Trên kênh youtube thì mỗi video sẽ phân biệt nhau bằng 1 ID riêng biệt,và ID này được hiển thị ngay trên link url,và cú pháp link url thường sẽ như sau:

youtube.com/?v={video_id}
youtube.com/watch?v={video_id}

ví dụ như link:

https://www.youtube.com/watch?v=cMDs81DYaD8

– Nhìn vào link trên thì các thấy chuỗi ký tự đằng sau v= chính là ID của video đó.Chính vì thế công việc đầu tiên của chúng ta là phải lấy ra được ID của video với mỗi link url,đây là bài toán mà có rất nhiều cách giải quyết,trong bài này mình xin chia sẻ 1 hàm đơn giản để lấy ra được ID của video.

<?php
function getIdVideo($url)
{
    parse_str(parse_url($url, PHP_URL_QUERY), $youtube);
    return $youtube['v'];
}
?>

– Đây là hàm có 1 tham số truyền vào đó chính là url của video và giá trị trả về chính là ID của video đó,ví dụ sử dụng như sau:

echo getIdVideo('https://www.youtube.com/watch?v=cMDs81DYaD8');
//kết quả: cMDs81DYaD8

Lấy hình ảnh từ link video youtube

– Công việc tiếp theo của chúng ta sẽ dựa vào ID của video lấy được từ phần trước để thực hiện lấy được ảnh minh họa cho từng video.Đối với youtube thì ảnh minh họa hiển thị theo 1 dạng link chuẩn và kích thước khác nhau theo dạng:

http://img.youtube.com/vi/{ID_video}/{size}.jpg

– Nhìn vào cấu trúc link file ảnh của video chúng ta có thể thấy chỉ cần có ID của video và 1 kiểu kích thước mà bạn muốn là ta đã có thể hiển thị link ảnh rồi.Trong đó thì {ID_video} là ID video muốn hiển thị và {size} là kiểu kích thước của file ảnh,size = 0 sẽ hiển thị ảnh cỡ lớn 480X360,size = 1 sẽ hiển thị ảnh cỡ nhỏ 120×90,ngoài ra các bạn có thể thay đổi size này để xem sự khác biệt nhé.
– Ví dụ:

http://img.youtube.com/vi/cMDs81DYaD8/0.jpg

– Bây giờ chúng mình sẽ xây dựng 1 hàm đơn giản để lưu file ảnh minh họa này về thông qua link url video:

/*
 * @$url : Link url của video muốn lấy ảnh
 * @$size: kích thước ảnh muốn lấy: = 0 (ảnh lớn); = 1 (ảnh nhỏ)
 * return $image_name: tên file ảnh đã lưu
 */
function saveImages($url, $size = 0){
	if($url==''){
		return false;
	}
	//lấy id của video thông qua url
	$id_video = getIdVideo($url);
	//lay duong dan file ảnh
	$file = "http://img.youtube.com/vi/".$id_video."/".$size.".jpg";
	//lấy file ảnh
	$images = file_get_contents($file);
	$image_name   = time().rand(0, 1000).'_video.jpg';
	//lưu file ảnh
	file_put_contents('./video/'.$image_name, $images);
	return $image_name;
}
//sử dụng 
saveImages('https://www.youtube.com/watch?v=cMDs81DYaD8');

– Troing hàm trên mình đã xây dựng để lưu file ảnh minh họa từ link url của video vào thư mục video và giải thích ngay trong code rồi,hàm này sẽ trả về tên file ảnh để các bạn có thể sử dụng lưu lại vào trong cơ sở dữ liệu.Đoạn code trên mình sử dụng 2 hàm là file_get_contents()file_put_contents() các bạn có thể vào đây để xem về cách sử dụng 2 hàm này nhé.
– Như vậy toàn bộ code trong bài viết này sẽ như sau:

<?php 
function getIdVideo($url)
{
	parse_str(parse_url($url, PHP_URL_QUERY), $youtube);
	return $youtube['v'];
}

/*
 * @$url : Link url của video muốn lấy ảnh
 * @$size: kích thước ảnh muốn lấy: = 0 (ảnh lớn); = 1 (ảnh nhỏ)
 * return $image_name: tên file ảnh đã lưu
 */
function saveImages($url, $size = 0){
	if($url==''){
		return false;
	}
	//lấy id của video thông qua url
	$id_video = getIdVideo($url);
	//lay duong dan file ảnh
	$file = "http://img.youtube.com/vi/".$id_video."/".$size.".jpg";
	//lấy file ảnh
	$images = file_get_contents($file);
	$image_name   = time().rand(0, 1000).'_video.jpg';
	//lưu file ảnh
	file_put_contents('./video/'.$image_name, $images);
	return $image_name;
}
saveImages('https://www.youtube.com/watch?v=cMDs81DYaD8');
?>

Tổng kết

Qua bài viết này các bạn có thể hiêu thêm về cấu trúc link url của youtube và cách download hình ảnh minh họa của video về website của mình.Ngoài ra không chỉ download file ảnh mình họa từ video của youtube mà dựa vào đó các bạn cũng có thể download file từ site khác.Chúc các bạn thực hiện thành công.



03/12/2014
Tags:
Written by nobitacnt

Trong bài viết không tránh khỏi những câu từ chưa chính xác,mong nhận được sự góp ý để website hoàn thiện hơn.Nếu thấy bài viết có ích với bạn hãy like và share để ủng hộ nhé :D.

Bài viết chùng chuyên mục

Gửi bình luận

Giới thiệu

Mình tạo ra blog này với mong muốn chia sẻ và học hỏi kinh nghiệm trong quá trình thiết kế website. Website đang trong quá trình phát triển chân thành cảm ơn mọi sự góp ý của các bạn để làm cho website ngày càng hoàn thiên.

DMCA.com Protection Status
Theo dõi qua Email

Tổng hợp các bài viết về

Hoc php - CodeIgniter Framework - Laravel Framework - PHP va MYSQL