视频直播软件的技术实现方式(jwplayer+ffmpeg+red5), 视频直播目前非常火爆,各种视频直播软件,手机APP层出不穷,深受分头的青睐。视频直播技术基于RTMP及时流协议,点播技术基于HTTP协议,RTMP协议是Real Time Message Protocol(实时信息传输协议)的缩写,它是由Adobe公司提出的一种应用层的协议,用来解决多媒体数据传输流的多路复用(Multiplexing)和分包(packetizing)的问题。随着VR技术的发展,视频直播等领域逐渐活跃起来,RTMP作为业内广泛使用的协议也重新被相关开发者重视起来。
      一、centos系统搭建RED5流媒体服务器

  • 安装java运行环境jdk

yum install java-1.7.0-openjdk  ,或者编译安装

  • 下载red5

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

选择red5-server-1.0.6-RELEASE-server.tar.gz,解压到 /usr/local/red5
  • 设置权限与安装
          cd /usr/local/red5  
 
          chmod +x *.sh  
          ./red5.sh  
  • red5服务器配置  :修改conf下的red5.properties可以修改IP和端口,HTTP是打开Red5的Demo页面用的,RTMP是用于在直播,视频播放等流服务时候使用的协议。
  • 端口等其他设置:打开5080、1935等端口,配置完成后,双击Red5目录下的red5.bat即可启动Red5服务器。启动完成后,输入http://192.168.7.96:5080,出现画面则表示成功。(如果不改配置文件,用http://localhost:5080即可)

二、客户端通过jwplayer播放器进行播放,下载此插件,配置较简单此处略
三、客户端FFmpeg的安装及使用

服务端:red5服务器启动,啥也不用动,最多下载个oflaDemo看看点播的效果。
客户端:jwplayer通过rtmp协议读取实时流。代码如下:
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"   这句话可以暂时不用管,看到后面就会知道啥意思。
流的推送: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代码里实现呢?网上很多。
java代码(下面的代码是同事给的,毕竟代码跑过一段时间,应该没啥问题):
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";" 这段代码就对应起来了。
不得不说,ffmpeg这个东西的确厉害。给实现直播功能省了不少事。
至此,一个直播功能就实现了。

文章来源北京羲和时代https://www.ixiera.com/web/kehu/zsk/201.html

视频直播软件的技术实现方式(jwplayer+ffmpeg+red5)相关推荐

  1. 视频直播软件开发关于亚马逊s3接入方式,视频直播源码创建存储桶方法

    一.登录亚马逊账户,进入S3 建立新的存储桶,用于视频直播源码的文件存储. 注册 Amazon S3 后,您就可以开始使用 AWS 管理控制台 创建存储桶.Amazon S3 中的每个对象都存储在存储 ...

  2. 如何评判在线直播源码优劣?视频直播软件开发经验之谈

    直播经过这些年的不断发展,使用者逐渐增加,在视频直播软件开发行业从业者的不断努力下,在线直播源码变得越来越完善,甚至已有了一些开发窍门的积累和判断视频直播软件优劣性的指标,本篇文章就来讲讲,该如何评判 ...

  3. 不一样的短视频直播软件开发?

    在短视频行业中,短视频直播app软件中抖音是最为经典的案例,随着目前视频行业的爆发式增长,他很快的成为用户拍摄短视频的首选,如果说有什么项目最火,我想应该是微视了,以前的快手,现在的抖音,反正我没事的 ...

  4. 视频直播系统开发架构分析,视频直播系统架构技术应用层面

    正当兴隆的直播行业如火如荼的发展,得益于手机的便利,手机直播APP也得以快速的推广.等手机直播APP用的多了,自然而然有人问了,视频直播系统软件怎么开发? 其实回答这个问题,还是得回到基础的东西--直 ...

  5. 开发视频直播软件需要注重哪些功能?

    视频直播给人们的日常生活带来了极大的改变,因此,开发一款视频直播类APP软件,设计的基础是用户的需求,前沿市场信息等.那么,开发视频直播软件需要注重哪些功能呢?下面就跟着摩杜云小杜一起来看看吧! 开发 ...

  6. 直播软件搭建技术原理:CDN 与直播

    直播软件搭建技术原理:CDN 与直播 很多直播都是基于 CDN 来实现的.而通过声网的服务,或基于声网SDK与 CDN 结合,还可以实现在直播中的连麦互动.白板同步等强调实时性的场景.本文源自社区投稿 ...

  7. 视频直播软件开发过程中需要解决的“老朋友”...

    要说在视频直播软件开发的过程中,什么是技术人员最头疼的?肯定有人会毫无疑问的回答:直播的卡顿和延时!没错,这两位可以说是直播中的"老朋友"了.毫不夸张的说,每一个直播平台都遇到过这 ...

  8. 一对一直播源码 一对一视频直播软件未来发展趋势

    一对一视频直播软件对比传统直播平台,直播方式更简单自由,同时也更加私密,比传统直播平台更能保护用户私密,又能增加主播与用户之间的互动. 一对一视频直播的方式颠覆了人们对传统直播的看法,一对一直播凭借高 ...

  9. 视频直播软件未来发展的方向有哪些

    现在使用视频直播软件的人群非常多,很多人把把它当成是一种娱乐的方式,很多人可以一起参与进去,不受距离的影响,就像面对面可以看到影像和听到声音,可以进行互相的交流,或者是做游戏等等.将来他还会有更多的发 ...

最新文章

  1. 【QA】Xcodeproj doesn't know about the following xxx 问题及解决方案
  2. 收集Linux常用命令
  3. jsf 写一个action_一个JSF清单示例
  4. 在java中蓝色_Java基础
  5. 方法 手写promise_手写Promise类
  6. MySQL 相关知识细节及解析
  7. MATLAB与信号处理
  8. 转:多玩网总裁李学凌:在腾讯阴影下
  9. abaqus2020安装教程
  10. IOS企业应用出现无法验证,需要网络连接以在这台iPad上验证。接入互联网并重试
  11. PMP-计算题汇总(PV、EV、AC、BAC、EAC、ETC、)
  12. VMware14配置虚拟网络详解
  13. 安卓移动办公软件_尚朋高科TeeTek云端移动办公系统,云端软件5G时代的趋势
  14. rt-thread通过spi连接W25Q32后无法读取ID
  15. 【100个 Unity实用技能】 | Unity 在代码中 动态改变RectTransform位置及宽高 的方法整理
  16. 前端图片在线转换Base64 图片编码Base64
  17. 五个无刷马达驱动电路分享!
  18. 关于-32768的补码!
  19. Visual Studio C++ 输出调试信息在调试-输出窗口
  20. 1225 D. Power Products 哈希

热门文章

  1. 古方怡雪祛斑是真的吗,美丽源于调养!
  2. js保留两位小数点(整数商品价格渲染时,保留后两位数)
  3. ostringstream >>> string >>> char *
  4. [生活]志存高远,奋发图强
  5. JAVA 获取树的所有路径-深度优先遍历和广度优先
  6. 工程概论I--优享家庭蔬菜-虚拟大学生创新创业项目计划书
  7. HTML5+CSS3学习总结(完结)
  8. Vue的导入(import)和导出(export、export default)
  9. 2021护理正高考试成绩查询,查分啦:2021年护士执业资格考试成绩正式公布
  10. 讨论 |如何实现金融平等:技术究竟是缩小还是拉大了贫富差距?