- 資訊首頁(yè) > 開(kāi)發(fā)技術(shù) > 編程語(yǔ)言 >
- Java Red5服務(wù)器實(shí)現流媒體視頻播放
流媒體文件是目前非常流行的網(wǎng)絡(luò )媒體格式之一,這種文件允許用戶(hù)一邊下載一邊播放,從而大大減少了用戶(hù)等待播放的時(shí)間。另外通過(guò)網(wǎng)絡(luò )播放流媒體文件時(shí),文件本身不會(huì )在本地磁盤(pán)中存儲,這樣就節省了大量的磁盤(pán)空間開(kāi)銷(xiāo)。正是這些優(yōu)點(diǎn),使得流媒體文件被廣泛應用于網(wǎng)絡(luò )播放。
流媒體服務(wù)器是通過(guò)建立發(fā)布點(diǎn)來(lái)發(fā)布流媒體內容和管理用戶(hù)連接的。流媒體服務(wù)器能夠發(fā)布從視頻采集卡或攝像機等設備中傳來(lái)的實(shí)況流,也可以發(fā)布事先存儲的流媒體文件,并且發(fā)布實(shí)況流和流媒體文件的結合體。一個(gè)媒體流可以由一個(gè)媒體文件構成,也可以由多個(gè)媒體文件組合而成,還可以由一個(gè)媒體文件目錄組成。
Flash Media Server,簡(jiǎn)稱(chēng) FMS,是 Flash 大家庭里的一員,被稱(chēng)為是目前開(kāi)發(fā) Web 音視頻應用程序(比如,視頻聊天室、視頻會(huì )議系統、播客系統、音視頻留言等等)的最方便最快捷的解決方案。也在 web 應用程序開(kāi)發(fā)上有著(zhù)越來(lái)越廣泛的應用。當然 FMS 這種優(yōu)良功能并不是免費提供給廣大用戶(hù)的,幾千美金每個(gè)點(diǎn)的價(jià)格讓很多開(kāi)發(fā)人員望而卻步。于是,大家開(kāi)始嘗試尋找一種更合適的解決方案,開(kāi)源的 Red5 便成為了人們的新寵。
Red5 是一個(gè)采用 Java 開(kāi)發(fā)的開(kāi)源的 Flash 流媒體服務(wù)器,功能上與 FMS 類(lèi)似。它支持:把音頻(MP3)和視頻(FLV)轉換成播放流;錄制客戶(hù)端播放流(只支持 FLV);共享對象;現場(chǎng)直播流發(fā)布;遠程調用。Red5 使用 RSTP 作為流媒體傳輸協(xié)議,包括在線(xiàn)錄制,Flash 流媒體播放,在線(xiàn)聊天,視頻會(huì )議等一些基本功能。國內外基于 Red5 的流媒體應用產(chǎn)品也在不斷推廣,例如在線(xiàn)視頻會(huì )議 Openmeeting,大型 Flash 網(wǎng)游功夫之王 2。
Red5 是一個(gè)采用 Java 開(kāi)發(fā)開(kāi)源的 Flash 流媒體服務(wù)器。免費開(kāi)源使軟件更加容易擴展,下載后你可以對源代碼進(jìn)行修改;更加經(jīng)濟,比起 FMS 高昂的費用,Red5 能為一般的應用節約大筆費用;同時(shí)服務(wù)器端的 Java 面向對象語(yǔ)言比起 FMS 服務(wù)器端的 ActionScript2 語(yǔ)言更加成熟。鑒于 Red5 的種種優(yōu)勢,推出不久便被廣大用戶(hù)所接受。
Red 5 支持:
JDK自行安裝 下載Red5
https://github.com/Red5/red5-server/releases
解壓到自己的一個(gè)能記住的文件夾中 eg:F:\Red5
修改red5.properties配置文件..\conf\red5.properties
只需要配置HTTP 和RMTP節點(diǎn)的host和port即可 默認也行host配置成0.0.0.0 輸入局域網(wǎng)IP或者127.0.0.1都可以正常訪(fǎng)問(wèn)
# Socket policy policy.host=0.0.0.0 policy.port=843 # HTTP http.host=0.0.0.0 http.port=8855 https.port=5443 http.URIEncoding=UTF-8 http.max_keep_alive_requests=-1 http.max_threads=20 http.acceptor_thread_count=10 http.processor_cache=20 # RTMP rtmp.host=0.0.0.0 rtmp.port=1935 rtmp.io_threads=16 rtmp.send_buffer_size=65536 rtmp.receive_buffer_size=65536 rtmp.ping_interval=1000 rtmp.max_inactivity=60000 rtmp.max_handshake_time=5000 rtmp.tcp_nodelay=true rtmp.tcp_keepalive=false rtmp.default_server_bandwidth=10000000 rtmp.default_client_bandwidth=10000000 rtmp.client_bandwidth_limit_type=2 rtmp.bandwidth_detection=false rtmp.encoder_base_tolerance=5000 rtmp.encoder_drop_live_future=false # traffic optimization hinting. to disable set traffic class set to -1 # low delay + high throughput == 24 (0x18) rtmp.traffic_class=-1 # requested maximum length of the queue of incoming connections rtmp.backlog=32 # the interval (seconds) between each throughput calculation rtmp.thoughput_calc_interval=15 # enable use of the default mina acceptor rtmp.default_acceptor=true # socket i/o pool sizes used when default acceptor is disabled rtmp.initial_pool_size=0 rtmp.max_pool_size=2 rtmp.max_processor_pool_size=16 rtmp.executor_keepalive_time=60000 mina.logfilter.enable=false # scheduler configs (per application) rtmp.scheduler.pool_size=16 rtmp.deadlockguard.sheduler.pool_size=16 # message executor configs (per application) - adjust these as needed if you get tasks rejected rtmp.executor.core_pool_size=4 rtmp.executor.max_pool_size=32 rtmp.executor.queue_capacity=64 # drop audio packets when queue is almost full, to disable this, set to 0 rtmp.executor.queue_size_to_drop_audio_packets=60 # maximum amount of time allotted to process a single rtmp message / packet in milliseconds, set it as 0 to disable timeout rtmp.max_handling_time=2000 # connection tweaks - dont modify unless you know what you're doing rtmp.channel.initial.capacity=3 rtmp.channel.concurrency.level=1 rtmp.stream.initial.capacity=1 rtmp.stream.concurrency.level=1 rtmp.pending.calls.initial.capacity=3 rtmp.pending.calls.concurrency.level=1 rtmp.reserved.streams.initial.capacity=1 rtmp.reserved.streams.concurrency.level=1 # RTMPS rtmps.host=0.0.0.0 rtmps.port=8443 rtmps.ping_interval=5000 rtmps.max_inactivity=60000 rtmps.max_keep_alive_requests=-1 rtmps.max_threads=20 rtmps.acceptor_thread_count=2 rtmps.processor_cache=20 # RTMPS Key and Trust store parameters rtmps.keystorepass=password rtmps.keystorefile=conf/keystore.jks rtmps.truststorepass=password rtmps.truststorefile=conf/truststore.jks # RTMPT rtmpt.host=0.0.0.0 rtmpt.port=8088 rtmpt.ping_interval=5000 rtmpt.max_inactivity=60000 rtmpt.max_handshake_time=5000 rtmpt.max_keep_alive_requests=-1 rtmpt.max_threads=20 rtmpt.acceptor_thread_count=2 rtmpt.processor_cache=20 rtmpt.encoder_base_tolerance=5000 rtmpt.encoder_drop_live_future=true # better setting for streaming media rtmpt.target_reponse_size=32768 # best setting for small messages or shared objects #rtmpt.target_reponse_size=8192 # max incoming messages to process at a time. the most that FP appears to send is 166 rtmpt.max_in_msg_process=166 # max time in millis that we will wait when offering data to the in or out queue rtmpt.max_queue_offer_time=125 # max offer attempts rtmpt.max_queue_offer_attempts=4 # WebSocket ws.host=0.0.0.0 ws.port=8081 # Debug proxy (needs to be activated in red5-core.xml) proxy.source_host=127.0.0.1 proxy.source_port=1936 proxy.destination_host=127.0.0.1 proxy.destination_port=1935 # JMX jmx.rmi.host=localhost jmx.rmi.port=9999 jmx.rmi.sport=9998 jmx.rmi.port.remoteobjects= jmx.keystorepass=password jmx.mina.monitor.enable=false jmx.mina.poll.interval=1000 # Whether to always create the registry in-process, not attempting to # locate an existing registry at the specified port. Set to "true" in order # to avoid the overhead of locating an existing registry when you always intend # to create a new registry in any case. jmx.registry.create=true # Whether or not the MBeanServerFactoryBean should attempt to locate a running # MBeanServer before creating one jmx.reuse.existing.server=true # Whether to register the MBeanServer with the MBeanServerFactory, making it # available through MBeanServerFactory.findMBeanServer() jmx.register.factory=true # Whether any threads started for the JMXConnectorServer should be started as daemon threads jmx.daemon=true # Whether the JMXConnectorServer should be started in a separate thread jmx.threaded=true # Server properties # max events to send in a single update so.max.events.per.update=64 so.scheduler.pool_size=4 keyframe.cache.entry.max=500 war.deploy.server.check.interval=600000 fileconsumer.delayed.write=true fileconsumer.queue.size=120 subscriberstream.buffer.check.interval=5000 subscriberstream.underrun.trigger=100 broadcaststream.auto.record=false
雙擊red.bat即可啟動(dòng)Red5服務(wù)器 瀏覽器訪(fǎng)問(wèn)查看是否搭建成功 http://localhost:port(localhost、port為配置文件中設置) 正確如下圖所示
下載demo
上圖可以看到install紅色的那行字。點(diǎn)擊進(jìn)去。選擇OLFA 安裝
如果下載不成功請看這里
確定webapps下面沒(méi)有oflaDemo文件夾。下載壓縮包解壓放進(jìn)去即可
下載地址鏈接: https://pan.baidu.com/s/1Qd0UggtEhBv5nbVxQGPSzQ 密碼: 4xqf
進(jìn)入發(fā)布設置界面:http://localhost:port/demos/publisher.html
查看Settings區域。選擇Video后在Device中選擇攝像頭,并點(diǎn)擊Start,出現視頻畫(huà)面(有可能會(huì )提示是否允許。選擇允許即可)
回到Server畫(huà)面,在Location中輸入rtmp://localhost:1935/oflaDemo,地址與red5.properties中的rtmp協(xié)議的設置必須相同。
點(diǎn)擊Connect
右側出現NetConnection.Connect.Success ,說(shuō)明連接服務(wù)器成功。
切換到Video點(diǎn)擊Publish頁(yè)面中的Publish按鈕即可對外發(fā)布直播
切換到Server點(diǎn)擊play即可看推送的視頻流
需要jwplayer。為了方便大家已經(jīng)放在oflaDemo里面。在上面的百度云鏈接下載即可。
修改相關(guān)內容 file的值是直播頁(yè)面的Name的值。streamer則為L(cháng)ocation里面的URL
<html> <head> <title>Red5 - OFLADemo</title> <script type='text/javascript' src='jwplayer.js'></script> </head> <body> <div id="player"> <script type='text/javascript'> jwplayer('player').setup({ 'flashplayer': 'player.swf', 'file': '直播頁(yè)面的Name', 'streamer': 'rtmp://自己服務(wù)的IP:1935/oflaDemo', 'controlbar': 'bottom', 'width': '848', 'height': '360' }); </script> </div> </body> </html>
輸入地址 http://localhost:port/oflaDemo/jwPalyer.html 即可查看
以上就是Java Red5服務(wù)器實(shí)現流媒體視頻播放的詳細內容,更多關(guān)于Java Red5流媒體視頻播放的資料請關(guān)注腳本之家其它相關(guān)文章!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站