我想创建一个无需使用 ExoPlayer 下载即可观看在线视频的项目。
ExoPlayer 支持许多这样的格式 我想支持所有这些格式(渐进式容器格式)。我搜索了但没有找到任何东西
我想检查用户输入的 URL 是否是受支持的 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"))
{
}
Run Code Online (Sandbox Code Playgroud)
您可以“可能”检查 URL 是否通过您尝试编写的尾随文件扩展名正则表达式找到视频资源。
但从理论上讲,URL 表示本身不会告诉您 URL(或更广泛地说,URI)指向的网络上的给定资源是否是视频。URL 可以是任何类似的内容http://can_you_tell_this_is_a_video
,但仍然可以定位视频。
此外,很难/不可能判断视频是否真的可以被播放器“播放”(支持的编码、文件格式等),即使您知道这是一个视频资源。解决该问题的更简单方法是尝试向玩家提供从用户处收到的任何 URL。如果玩家说它无法播放,则继续下一步。
另一方面,如果您只需要识别某个 URL 是否为视频资源,那么最简单的方法是使用 HTTP 客户端在该 URL 上执行HTTP HEAD 请求,并检查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
Run Code Online (Sandbox Code Playgroud)
通过此响应,现在您可以检查Content-Type
标头值 - 正如您所看到的,在本例中资源的媒体类型是video/mp4
。
归档时间: |
|
查看次数: |
7448 次 |
最近记录: |