2016-02-12 112 views
0

我知道這個話題不是一件容易的事,但我正在尋找一個Java類來將HLS流從服務器發送到客戶端。Java,服務HLS實時視頻流

我所生成的文件越來越大:

out.m3u8 
out0.ts 
out1.ts 
out2.ts 
out3.ts 
out4.ts 
out5.ts 
out6.ts 

這是使用的ffmpeg從原始來源產生:

ffmpeg -i http://sourceurl.com:9981/stream/channel/1232131 out.m3u8 

我可以使用VLC播放。

不知何故,我需要將這個流到客戶端。

在這一點上,我並不關心不同的比特率,我只是想在移動瀏覽器和桌面瀏覽器上進行直播。

我發現這個類:

https://github.com/Red5/red5-hls-plugin/blob/master/plugin/src/main/java/org/red5/stream/http/servlet/PlayList.java 

這可能會做這樣的事情。

我已將hls.js引入我的應用程序,希望將其用於桌面系統。

但是HLS應該在沒有hls.js的情況下使用IOS設備。

應該如何從服務器提供HLS內容?很難找到一個好的簡單的例子來做到這一點。

任何人都知道要做到這一點的步驟?

我已經研究了Wowza和Red5只是一點點,但不確定他們可以在這個階段爲我提供什麼,似乎是設置過於複雜,只爲服務一些文件。但請向我解釋爲什麼不是這樣。

回答

3

HLS中的H代表HTTP。 HLS DASH HDS流暢流媒體等流媒體技術的重點在於不需要專門的服務器。只是簡單的HTTP。你可以使用類似nginx的東西,或任何可用於Java或任何其他語言的HTTP服務器類/庫。

+0

你介意闡述嗎?所以通常我會得到像out.m3u8文件,然後滾出out10.ts out11.ts等文件...我需要以某種方式打開它們並將它們提供給客戶端。它只是簡單地提供字節,並且當一個字節中沒有更多字節時,繼續下一個字節?或者我需要閱讀out.m3u8並處理某種協議?我不確定是否誠實,但我想用java而不是nginx來完成控制。 – momomo

+1

你不對文件做任何事情。只要舉辦他們。通過http發佈指向m3u8文件的鏈接。播放器將會根據需要執行http獲取並提取文件。 – szatmary

+0

這個人想通過HLS流「live」標準的HTTP服務器不這樣做。 Red5允許您流式傳輸到服務器,並通過HLS提供服務,實際上Red5 Pro在工作包中有這個功能。 –