2011-10-31 63 views
0

我有一個簡單的http流應用程序,它接受GET URL請求並返回HTTP「content-type」頭,然後請求文件數據。它在本地主機http服務器上運行。爲什麼flac http streaming不起作用?

因此我可以在播放器監聽(例如)

http://localhost:8080/music/metallica.mp3

這是發揮像在任何播放器(VLC時,MPlayer,WMP,Winamp的)通常的HTTP流。

但是,爲什麼我試圖用這種方式流FLAC它不適用於MPlayer和WMP(我使用內容類型「audio/flac」)。

據我瞭解問題是與DShow過濾器(圖形生成器無法找到正確的源過濾器和/或連接到FLAC解碼器)。

在我開始DShow過濾器調試之前,誰也不能提供一個關於我應該在哪裏挖掘的提示? :)

UPD:

我發現,設置準確的流大小(直通內容長度)解決問題。 但是,我寧願不這樣做。有任何想法嗎?

回答

2

從網絡資源進行流式傳輸不同於從文件流式傳輸。流媒體協議被假定爲在服務器和播放器主機之間實現,而Windows在開箱即用的DirectShow API內不能很好地支持流媒體客戶端:您需要額外的支持這種流媒體的過濾器。

+0

hm ...我通過http進行流式傳輸:) mp3工作正常,flac沒有。所以我認爲flac解碼器不能連接到源解碼器MP3解碼器使用...但如何解決這個問題。我不想編寫源代碼過濾器,因爲它依賴於平臺(流應用程序在java中),它需要安裝。 – tuxSlayer

+0

有許多方法可以通過HTTP進行流式傳輸:它可以是通過HTTP傳輸的RTSP/RTP協議,它可以像訪問遠程文件一樣訪問網絡資源。 DiretShow沒有用於HTTP流媒體的股票過濾器。 –

+0

聽起來合乎邏輯,但是dshow能夠以某種方式在純粹的Apache上播放mp3文件,而不需要任何應用協議。 GraphEdit證明了這一點,當我用http url提供它時,它正確地呈現圖形。 – tuxSlayer