Как я могу проверить URL-адрес видео URL - PullRequest
0 голосов
/ 22 мая 2019

Я хочу создать проект, который может просматривать онлайн-видео без загрузки с ExoPlayer.

ExoPlayer поддерживает множество форматов , как эти Я хочу поддержать все эти форматы (прогрессивные форматы контейнеров). Я искал и ничего не смог найти

Я хочу проверить, является ли введенный пользователем URL-адрес поддерживаемым или нет. Любая помощь будет полезна.

Я использую ExoPlayer. Вы можете использовать ExoPlayer try-catch

Я попробовал эти коды, но они не работают, потому что некоторые URL-адреса являются HTTPS или некоторыми URI, а некоторые символы после формата

String URL = et_url.getText().toString();
    if(URL.matches("http://[a-zA-Z0-9._-]+.[a-z]/[a-zA-Z0-9._-].mp4"))
    {

    }
    else if (URL.matches("http://[a-zA-Z0-9._-]+.[a-z]/[a-zA-Z0-9._-].mkv"))
    {

    }

Ответы [ 2 ]

1 голос
/ 22 мая 2019

Вы могли бы "вероятно" проверить, находит ли URL ресурс видео по заданному регулярному выражению расширения файла.

Но теоретически представление URL само по себе не будетсообщить вам, является ли данный ресурс в сети, на который указывает URL (или, в более широком смысле, URI), видео или нет.URL-адрес может быть любым, например http://can_you_tell_this_is_a_video, и по-прежнему определять местонахождение видео.

Кроме того, трудно / невозможно определить, действительно ли видео воспроизводится проигрывателем (поддерживаемая кодировка, формат файла и т. Д.).хотя ты знал, что это видео ресурс.Самый простой способ решить эту проблему - просто попытаться передать игроку любой URL-адрес, который вы получите от пользователя.И если игрок говорит, что он не воспроизводится, перейдите к следующему шагу.

С другой стороны, если вам просто нужно определить, является ли URL-адрес обнаруженным видео-ресурсом, то простой способ сделать это запрос HTTP HEAD по URL-адресу с HTTP-клиентом и проверьте заголовок Content-Type , чтобы увидеть, входит ли ресурс в число распространенных типов MIME видео .

Чтобы привести пример, если вы делаете запрос HEAD на https://sample-videos.com/video123/mp4/720/big_buck_bunny_720p_1mb.mp4 (вы можете проверить его здесь ), ответ HTTP будет выглядеть следующим образом (сервер должен поддерживать запросы HEADи предоставьте правильный заголовок типа контента, обычно они должны):

HTTP/1.1 200 OK
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Accept-Ranges: bytes
Content-Length: 1055736
Content-Type: video/mp4
Date: Wed, 22 May 2019 20:51:28 GMT
Last-Modified: Fri, 17 Jun 2016 17:43:54 GMT
Server: Apache

С помощью этого ответа теперь вы можете проверить значение заголовка Content-Type - как вы можете видеть, в этом примере тип медиаресурс video/mp4.

0 голосов
/ 24 мая 2019

Просто вы можете решить эту проблему следующим образом -

 String fileType = getFileTypeFromURL("https://sample-videos.com/video123/mp4/720/big_buck_bunny_720p_1mb.mp4");
        if(fileType.equals("video")){
            // Do your task here
        }



private String getFileTypeFromURL(String url){
        String[] splitedArray = url.split("\\.");
        String lastValueOfArray = splitedArray[splitedArray.length-1];
        if(lastValueOfArray.equals("mp4") || lastValueOfArray.equals("flv") || lastValueOfArray.equals("m4a") || lastValueOfArray.equals("3gp") || lastValueOfArray.equals("mkv")){
            return "video";
        }else if(lastValueOfArray.equals("mp3") || lastValueOfArray.equals("ogg")){
            return "audio";
        }else if(lastValueOfArray.equals("jpg") || lastValueOfArray.equals("png") || lastValueOfArray.equals("gif")){
            return "photo";
        }else{
            return "";
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...