2014-09-10 290 views
0

我从xml rss feed获取一些URL。 rss不区分音频或视频文件,它们全都来自同一个标签。如何区分音频或视频网址是否提供播放权?如何知道网址是音频还是视频?

我有存储在一个VAR的网址

var url = "http://www.someWeb/someFile.mp3"; 

我试图让与jQuery的搜索:

var search = url.search(/.mp3|.m4a/i); 
if (search > -1){ 
    $('#check').text("it is audio"); 
}else { 
    $('#check').text("it is video"); 
} 

它工作的情况下,最,但它可能是多种类型的音频文件,有可能永远是某些类型的声音,没有扩展...

有没有更好的办法知道如果URL是音频或文件?

+0

只有这样,才能知道肯定是什么类型的数据的URL点使一个HTTP请求,并期待在'内容Type'头。这不是你可以用Javascript做的事情。 – 2014-09-10 09:45:59

+0

检查这个帖子可能有用http://stackoverflow.com/questions/22574186/check-if-the-file-is-audio-file-in-php – Sadikhasan 2014-09-10 09:47:32

回答

0

您可能能够使用PHP函数get_headers()。您可以使用它来抓取您的链接并执行print_r()来查看您在“Content-type”键下获得的内容。

如果这样的作品,只是继续前进,创造您的所有文件类型的开关的情况下,你应该是好去

http://php.net/manual/en/function.get-headers.php

0

这是一个在黑暗中拍摄,但如果你需要知道加载之前的内容类型,你可以尝试HEAD请求:

http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.4

这是只有在内容服务支持它虽然。当然,如果你写这个服务,那么你可以自己实现这个。只需发送标题,但省略实际内容。

在接收端的响应头应包括“内容类型”。

由此您可以提取正在传送的内容的类型。它通常如下所示:

text/plain 
image/jpeg 
video/mp4 
audio/mp3 

从前缀中确定一般媒体是很简单的。

0

这是一个有点难治之一。 我面临同样的问题,从RSS提要加载内容,可能包含视频或音频。

没有办法知道什么是不实际要求它的内容,因为我消耗从外部网站的内容,我不知道,如果他们支持HEAD方法。

我现在正在做的是假设URL以文件名结尾,取扩展名并使用浏览器就绪版本https://github.com/broofa/node-mime来获得相应的MIME类型。

获得MIME类型我检查它是否以“视频”或“音频”启动后。

下面是代码:

function isVideoByURL(url) { 
    var filename = url.split('/').pop().split('#')[0].split('?')[0]; 

    if(filename) { 
     var ext = filename.split('.').pop(); 
     var mimeType = mime.getType(ext); 

     return mimeType.startsWith('video'); 
    } 

    return false; 
}