2014-09-10 292 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; 
}