一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java Red5服務器實現流媒體視頻播放

Java Red5服務器實現流媒體視頻播放

2021-09-13 15:26小帥丶 Java教程

這篇文章主要介紹了Java Red5服務器實現流媒體視頻播放,對視頻播放感興趣的同學,可以參考下

引言

流媒體文件是目前非常流行的網絡媒體格式之一,這種文件允許用戶一邊下載一邊播放,從而大大減少了用戶等待播放的時間。另外通過網絡播放流媒體文件時,文件本身不會在本地磁盤中存儲,這樣就節省了大量的磁盤空間開銷。正是這些優點,使得流媒體文件被廣泛應用于網絡播放。

流媒體服務器是通過建立發布點來發布流媒體內容和管理用戶連接的。流媒體服務器能夠發布從視頻采集卡或攝像機等設備中傳來的實況流,也可以發布事先存儲的流媒體文件,并且發布實況流和流媒體文件的結合體。一個媒體流可以由一個媒體文件構成,也可以由多個媒體文件組合而成,還可以由一個媒體文件目錄組成。

Flash Media Server,簡稱 FMS,是 Flash 大家庭里的一員,被稱為是目前開發 Web 音視頻應用程序(比如,視頻聊天室、視頻會議系統、播客系統、音視頻留言等等)的最方便最快捷的解決方案。也在 web 應用程序開發上有著越來越廣泛的應用。當然 FMS 這種優良功能并不是免費提供給廣大用戶的,幾千美金每個點的價格讓很多開發人員望而卻步。于是,大家開始嘗試尋找一種更合適的解決方案,開源的 Red5 便成為了人們的新寵。

Red5 是一個采用 Java 開發的開源的 Flash 流媒體服務器,功能上與 FMS 類似。它支持:把音頻(MP3)和視頻(FLV)轉換成播放流;錄制客戶端播放流(只支持 FLV);共享對象;現場直播流發布;遠程調用。Red5 使用 RSTP 作為流媒體傳輸協議,包括在線錄制,Flash 流媒體播放,在線聊天,視頻會議等一些基本功能。國內外基于 Red5 的流媒體應用產品也在不斷推廣,例如在線視頻會議 Openmeeting,大型 Flash 網游功夫之王 2。

Red5 概述

Red5 是一個采用 Java 開發開源的 Flash 流媒體服務器。免費開源使軟件更加容易擴展,下載后你可以對源代碼進行修改;更加經濟,比起 FMS 高昂的費用,Red5 能為一般的應用節約大筆費用;同時服務器端的 Java 面向對象語言比起 FMS 服務器端的 ActionScript2 語言更加成熟。鑒于 Red5 的種種優勢,推出不久便被廣大用戶所接受。

Red 5 支持:

  1. 把音頻(MP3)和視頻(FLV, F4V, MP4, 3GP)轉換成播放流;
  2. 錄制客戶端播放流, 把攝像頭,麥克風等傳入的音頻視頻錄制保存到服務器;
  3. 共享對象;
  4. 現場直播流發布;
  5. 遠程調用;
  6. 協議:RTMP, RTMPT, RTMPS, and RTMPE。

Red5 服務器搭建

JDK自行安裝 下載Red5

https://github.com/Red5/red5-server/releases

解壓到自己的一個能記住的文件夾中 eg:F:Red5

配置Red5相關參數

修改red5.properties配置文件..conf ed5.properties

只需要配置HTTP 和RMTP節點的host和port即可 默認也行host配置成0.0.0.0 輸入局域網IP或者127.0.0.1都可以正常訪問

# 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

啟動Red5

雙擊red.bat即可啟動Red5服務器 瀏覽器訪問查看是否搭建成功 http://localhost:port(localhost、port為配置文件中設置) 正確如下圖所示

Java Red5服務器實現流媒體視頻播放

視頻直播開始準備

下載demo

上圖可以看到install紅色的那行字。點擊進去。選擇OLFA 安裝

Java Red5服務器實現流媒體視頻播放

如果下載不成功請看這里

確定webapps下面沒有oflaDemo文件夾。下載壓縮包解壓放進去即可

下載地址鏈接: https://pan.baidu.com/s/1Qd0UggtEhBv5nbVxQGPSzQ 密碼: 4xqf

設置信息發布直播

進入發布設置界面:http://localhost:port/demos/publisher.html

Java Red5服務器實現流媒體視頻播放

查看Settings區域。選擇Video后在Device中選擇攝像頭,并點擊Start,出現視頻畫面(有可能會提示是否允許。選擇允許即可)

Java Red5服務器實現流媒體視頻播放

Server設置

回到Server畫面,在Location中輸入rtmp://localhost:1935/oflaDemo,地址與red5.properties中的rtmp協議的設置必須相同。
點擊Connect

Java Red5服務器實現流媒體視頻播放

右側出現NetConnection.Connect.Success ,說明連接服務器成功。

Java Red5服務器實現流媒體視頻播放

推送視頻流

切換到Video點擊Publish頁面中的Publish按鈕即可對外發布直播

查看視頻流

切換到Server點擊play即可看推送的視頻流

Java Red5服務器實現流媒體視頻播放

用自己的頁面觀看直播

需要jwplayer。為了方便大家已經放在oflaDemo里面。在上面的百度云鏈接下載即可。

修改相關內容 file的值是直播頁面的Name的值。streamer則為Location里面的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": "直播頁面的Name",
    "streamer": "rtmp://自己服務的IP:1935/oflaDemo",
    "controlbar": "bottom",
    "width": "848",
    "height": "360"
  });
</script>
</div>
</body>
</html>

使用瀏覽器觀看

輸入地址 http://localhost:port/oflaDemo/jwPalyer.html 即可查看

Java Red5服務器實現流媒體視頻播放

以上就是Java Red5服務器實現流媒體視頻播放的詳細內容,更多關于Java Red5流媒體視頻播放的資料請關注服務器之家其它相關文章!

原文鏈接:https://blog.csdn.net/u010651369/article/details/80886676

延伸 · 閱讀

精彩推薦
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7472021-02-04
主站蜘蛛池模板: 国产午夜精品一区二区三区 | 国产日本久久久久久久久婷婷 | 国产免费午夜高清 | ts人妖系列在线专区 | 4虎tv| 国产精品高清视亚洲一区二区 | 日韩在线一区二区三区免费视频 | 亚洲欧洲日产v特级毛片 | 久久久久九九 | avtt在线播放 | 色老板美国在线观看 | 久久中文字幕亚洲 | 免费观看日本人成影片 | 四虎最新永久在线精品免费 | 欧美日韩国产精品va | 国产三级精品播放 | 国产午夜精品久久久久小说 | 边摸边吃奶玩乳尖视频 | 调教校花浣肠开菊 | 国产精品青青青高清在线观看 | 久久国产乱子伦精品免费不卡 | ai换脸明星专区在线观看 | 五月天中文在线 | 岛国片免费观看 | 国产视频二区 | 久久99热在线观看7 久久99精品涩AV毛片观看 | 91aaa免费免费国产在线观看 | 欧美特级午夜一区二区三区 | 禁忌第一季第3季 | 久久婷婷丁香五月色综合啪免费 | 日本邪恶动态 | 国产精品久久久久久福利 | naruto堂同人本子汉化gg | 日韩成人在线网站 | 午夜福到在线4国产 | 亚洲欧美日韩成人一区在线 | 超级碰在线视频 | 日韩在线资源 | 男女男精品视频免费观看 | 四虎成人免费观看在线网址 | 国产91免费在线 |