亚洲精品美女久久久久久久-四川少妇搡bbw搡bbbb-精品免费国产一区二区三区四区,差差差很疼30分钟的视频,蜜桃成人无码区免费视频网站,免费人成视频x8x8

18600329666

咨詢技術(shù)專家

掃一掃
與技術(shù)專家在線溝通

Menu
視頻直播軟件的技術(shù)實(shí)現(xiàn)方式(jwplayer+ffmpeg+red5)
       視頻直播目前非常火爆,各種視頻直播軟件,手機(jī)APP層出不窮,深受分頭的青睞。視頻直播技術(shù)基于RTMP及時(shí)流協(xié)議,點(diǎn)播技術(shù)基于HTTP協(xié)議,RTMP協(xié)議是Real Time Message Protocol(實(shí)時(shí)信息傳輸協(xié)議)的縮寫,它是由Adobe公司提出的一種應(yīng)用層的協(xié)議,用來解決多媒體數(shù)據(jù)傳輸流的多路復(fù)用(Multiplexing)和分包(packetizing)的問題。隨著VR技術(shù)的發(fā)展,視頻直播等領(lǐng)域逐漸活躍起來,RTMP作為業(yè)內(nèi)廣泛使用的協(xié)議也重新被相關(guān)開發(fā)者重視起來。
      一、centos系統(tǒng)搭建RED5流媒體服務(wù)器
  • 安裝java運(yùn)行環(huán)境jdk 
          yum install java-1.7.0-openjdk  ,或者編譯安裝
  • 下載red5
選擇red5-server-1.0.6-RELEASE-server.tar.gz,解壓到 /usr/local/red5
  • 設(shè)置權(quán)限與安裝
          cd /usr/local/red5  
 
          chmod +x *.sh  
          ./red5.sh  
  • red5服務(wù)器配置  :修改conf下的red5.properties可以修改IP和端口,HTTP是打開Red5的Demo頁面用的,RTMP是用于在直播,視頻播放等流服務(wù)時(shí)候使用的協(xié)議。   
  • 端口等其他設(shè)置:打開5080、1935等端口,配置完成后,雙擊Red5目錄下的red5.bat即可啟動(dòng)Red5服務(wù)器。啟動(dòng)完成后,輸入http://192.168.7.96:5080,出現(xiàn)畫面則表示成功。(如果不改配置文件,用http://localhost:5080即可)
二、客戶端通過jwplayer播放器進(jìn)行播放,下載此插件,配置較簡單此處略
三、客戶端FFmpeg的安裝及使用
服務(wù)端:red5服務(wù)器啟動(dòng),啥也不用動(dòng),最多下載個(gè)oflaDemo看看點(diǎn)播的效果。
客戶端:jwplayer通過rtmp協(xié)議讀取實(shí)時(shí)流。代碼如下:
jwplayer("jwplayer_flv").setup({
file: "rtmp://192.168.1.29/oflaDemo//hello",
flashplayer: '${ctx}/resource/yulan/jwplayer.flash.swf',
image : '',
primary : 'flash',
width : '800',
height : '600',
autostart: true,
mute: false,
repeat: false
});
file: "rtmp://192.168.1.29/oflaDemo//hello"   這句話可以暫時(shí)不用管,看到后面就會(huì)知道啥意思。
流的推送:ffmpeg
推送命令:
ffmpeg -i "rtsp://admin:admin123@192.168.10.91:554/h264/ch1/main/av_stream"  -b  4096k  -f flv -r 25 -s1280x720 -an"rtmp://localhost/oflaDemo/hello"
這句話如何在Java代碼里實(shí)現(xiàn)呢?網(wǎng)上很多。
java代碼(下面的代碼是同事給的,畢竟代碼跑過一段時(shí)間,應(yīng)該沒啥問題):
public void liveVideo() throws Exception {
String rtspVideo = "rtsp://admin:admin123@192.168.10.91:554/h264/ch1/main/av_stream";
String rtmpVideo = "rtmp://192.168.1.29/oflaDemo/hello";
String commend = FFMPEG+"ffmpeg -i " + """ + rtspVideo + "" -b 4096k -f flv -r 25 -s 1280x720 -an " + """ + rtmpVideo + """;
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec(commend);
StreamGobbler sg1 = new StreamGobbler(proc.getInputStream(), "Console");
StreamGobbler sg2 = new StreamGobbler(proc.getErrorStream(), "Error");
sg1.start();
sg2.start();
proc.waitFor();
proc.destroy();
}
public class StreamGobbler extends Thread {  
InputStream is;  
String type;  
private Logger log = Logger.getLogger(this.getClass());  
private static int i = 1;  
private static int j = 1;  
public StreamGobbler(InputStream is, String type) {  
   this.is = is;  
   this.type = type;  
}  
public StreamGobbler() {
}
public void run() {  
   try {  
       InputStreamReader isr = new InputStreamReader(is);  
       BufferedReader br = new BufferedReader(isr);  
       i++;  
       j++;  
       String line = null;  
       while ((line = br.readLine()) != null) {  
           if (type.equals("Error")) {  
//                log.error(line);
//            System.err.println(line);
           }else{  
//                log.info(line);  
//            System.out.println(line);
           }  
       }  
   } catch (IOException ioe) {  
       ioe.printStackTrace();  
   }  
}  
從代碼可以看出,客戶端的“file: "rtmp://192.168.1.29/oflaDemo//hello" 這段代碼 和 java中"String rtmpVideo = "rtmp://192.168.1.29/oflaDemo/hello";" 這段代碼就對應(yīng)起來了。
不得不說,ffmpeg這個(gè)東西的確厲害。給實(shí)現(xiàn)直播功能省了不少事。
至此,一個(gè)直播功能就實(shí)現(xiàn)了。