if you want high quality thumbnail but not available for all video
Width | Height | URL
------|--------|----
640 | 480 | https://i.ytimg.com/vi/<VIDEO ID>/sd1.jpg
640 | 480 | https://i.ytimg.com/vi/<VIDEO ID>/sd2.jpg
640 | 480 | https://i.ytimg.com/vi/<VIDEO ID>/sd3.jpg
640 | 480 | https://i.ytimg.com/vi/<VIDEO ID>/sddefault.jpg
1280 | 720 | https://i.ytimg.com/vi/<VIDEO ID>/hq720.jpg
1920 | 1080 | https://i.ytimg.com/vi/<VIDEO ID>/maxresdefault.jpg
if you want thumbnail that available for all video (relatively low quality)
Width | Height | URL
------|--------|----
120 | 90 | https://i.ytimg.com/vi/<VIDEO ID>/1.jpg
120 | 90 | https://i.ytimg.com/vi/<VIDEO ID>/2.jpg
120 | 90 | https://i.ytimg.com/vi/<VIDEO ID>/3.jpg
120 | 90 | https://i.ytimg.com/vi/<VIDEO ID>/default.jpg
320 | 180 | https://i.ytimg.com/vi/<VIDEO ID>/mq1.jpg
320 | 180 | https://i.ytimg.com/vi/<VIDEO ID>/mq2.jpg
320 | 180 | https://i.ytimg.com/vi/<VIDEO ID>/mq3.jpg
320 | 180 | https://i.ytimg.com/vi/<VIDEO ID>/mqdefault.jpg
480 | 360 | https://i.ytimg.com/vi/<VIDEO ID>/0.jpg
480 | 360 | https://i.ytimg.com/vi/<VIDEO ID>/hq1.jpg
480 | 360 | https://i.ytimg.com/vi/<VIDEO ID>/hq2.jpg
480 | 360 | https://i.ytimg.com/vi/<VIDEO ID>/hq3.jpg
480 | 360 | https://i.ytimg.com/vi/<VIDEO ID>/hqdefault.jpg
So Maximum quality thumbnail that available for all video is 480x360.
you can use link :https://i.ytimg.com/vi/<VIDEO ID>/0.jpg
String videoId = IfXNjuoqt0Q;
String thumnailLink = "https://i.ytimg.com/vi/"+videoId+"/0.jpg";

https://i.ytimg.com/vi/IfXNjuoqt0Q/0.jpg
To load image in Android
// Picasso
Picasso.with(context)
.load("https://i.ytimg.com/vi/IfXNjuoqt0Q/0.jpg")
.into(imageView);
// Glide
Glide.with(this)
.load("https://i.ytimg.com/vi/IfXNjuoqt0Q/0.jpg")
.into(imageView);
--------Upto that already answer above------
If you want to remove black-bar from thumbnail 480x360 (maximum quality image that available for all video in youtube),but problem its come with black-bar
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.Log;
import android.widget.ImageView;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class ThumbnailHandler {
public static Bitmap RemoveBlackBar(Bitmap bitmap){
if (bitmap.getWidth() == 480 && bitmap.getHeight() == 360 ){
int[] pixels = new int[bitmap.getWidth() * bitmap.getHeight()];
int[] pixels_out = new int[bitmap.getWidth() * bitmap.getHeight()];
// get pixel array from source
bitmap.getPixels(pixels, 0, bitmap.getWidth(), 0, 0, bitmap.getWidth(), bitmap.getHeight());
for (int y=0; y<270; y++){
for (int x=0; x < bitmap.getWidth() ; x++){
pixels_out [y * bitmap.getWidth() + x] = pixels [(y+45) * bitmap.getWidth() + x];
}
}
Bitmap bmOut = Bitmap.createBitmap(bitmap.getWidth(), 270, bitmap.getConfig());
bmOut.setPixels(pixels_out, 0, bitmap.getWidth(), 0, 0, bitmap.getWidth(), 270);
return bmOut;
}else {
return bitmap;
}
}
public static Bitmap getBitmapFromURL(String src) {
try {
URL url = new URL(src);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.connect();
InputStream input = connection.getInputStream();
Bitmap myBitmap = BitmapFactory.decodeStream(input);
return myBitmap;
} catch (Exception e) {
Log.e("shabir", "err: "+e );
e.printStackTrace();
return null;
}
}
public static void getYtThumbnail_480_270(String url,YtThumbnailDownloadListener listener){
new Thread(new Runnable() {
@Override
public void run() {
Bitmap bitmap = getBitmapFromURL(url);
bitmap = RemoveBlackBar(bitmap);
listener.onThumbnailDownloaded(bitmap);
}
}).start();
}
public static void getYtThumbnail_480_270(String url, ImageView target, Activity activity){
new Thread(new Runnable() {
@Override
public void run() {
Bitmap bitmap = getBitmapFromURL(url);
Bitmap finalBitmap = RemoveBlackBar(bitmap);
activity.runOnUiThread(() -> {
target.setImageBitmap(finalBitmap);
});
}
}).start();
}
public interface YtThumbnailDownloadListener{
void onThumbnailDownloaded(Bitmap bitmap);
}
}
copy above class in to your project
Above class convert 480x360 Thumbnail to 480x270 to remove black bar,
To load image in Android
// url
url = "https://i.ytimg.com/vi/IfXNjuoqt0Q/0.jpg";
// call to load thumbnail in Image view
ThumbnailHandler.getYtThumbnail_480_270(url,
imageView,
MainActivity.this);
// call to download thumbnail in bitmap format
ThumbnailHandler.getYtThumbnail_480_270(url, new ThumbnailHandler.YtThumbnailDownloadListener() {
@Override
public void onThumbnailDownloaded(Bitmap bitmap) {
// Use thumbnail bitmap
}
});

Maximum quality thumbnail (480x270), available for all video , without black bar