videojs集成--播放rtmp流

之前说到已经把流推送过来了,这时候就可以使用videojs来进行显示播放。

首先要先有一个文件,那就是video-js.swf

因为,这种播放方式html已经不能很好的进行播放了,需要用到flash来播放,videojs在这个地方就用到了这个。

代码就是下面这样。

里面一些细节注释都有。

重点就是看<video>标签里面的内容

[html] view plain copy

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta http-equiv="Access-Control-Allow-Origin" content="*">
  5. <meta charset="utf-8">
  6. <meta name="description" content="Opencast Media Player">
  7. <meta name="author" content="Opencast">
  8. <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
  9. <title>RTMP播放</title>
  10. <link rel="stylesheet" type="text/css" href="css/bootstrap/css/bootstrap.css">
  11. <link rel="stylesheet" type="text/css" href="css/core_global_style.css">
  12. <script src="videojs/jquery.js"></script>
  13. <script src="videojs/video.js"></script>
  14. <link href="videojs/video-js.css" rel="stylesheet">
  15. <script>
  16. videojs.options.flash.swf = "videojs/video-js.swf";//flash路径,有一些html播放不了的视频,就需要用到flash播放。这一句话要加在在videojs.js引入之后使用
  17. </script>
  18. </head>
  19. <body >
  20. <div id="engage_view" style="display: block;">
  21. <div id="engage_content">
  22. <div id="engage_resize_container">
  23. <div id="engage_video">
  24. <!-- theodul video videojs plugin desktop mode  controls preload="auto"
  25. vjs-big-play-centered 播放按钮居中
  26. poster默认的显示界面,就是还没点播放,给你显示的界面
  27. controls
  28. preload="auto" 是否提前加载
  29. autoplay 自动播放
  30. loop=true 自动循环
  31. data-setup=‘{"example_option":true}‘ 可以把一些属性写到这个里面来,如data-setup={"autoplay":true}
  32. -->
  33. <video id="my-video" class="video-js vjs-default-skin vjs-big-play-centered"
  34. poster="videojs/eguidlogo.png" width="800" height="600"
  35. >
  36. <!--
  37. <source src="../output.mp4" type=‘video/mp4‘>  mp4格式
  38. <source src=‘rtmp://127.0.0.1/hls/test‘ type=‘rtmp/flv‘/> rtmp格式
  39. <source src=‘http://127.0.0.1/hls/test.m3u8‘ type=‘application/x-mpegURL‘/>  m3u8格式
  40. <source src=‘http://live.hkstv.hk.lxdns.com/live/hks/playlist.m3u8‘ type=‘application/x-mpegURL‘/> m3u8格式,可用
  41. -->
  42. <source src=‘rtmp://live.hkstv.hk.lxdns.com/live/hks‘ type=‘rtmp/flv‘/>
  43. </video>
  44. <!-- http://live.hkstv.hk.lxdns.com/live/hks/playlist.m3u8 可用的m3u8地址    -->
  45. <!-- rtmp://live.hkstv.hk.lxdns.com/live/hks  可用的rtmp地址-->
  46. </div>
  47. </div>
  48. <!-- timeline plugin container -->
  49. </div>
  50. </div>
  51. <div class="clear"></div>
  52. <div id="information_wrapper">
  53. <!-- description plugin container -->
  54. <div id="engage_description"><!-- theodul description plugin desktop mode -->
  55. <div id="engage_basic_description"></div>
  56. </div>
  57. </div>
  58. <div class="tab-pane" id="engage_Slide_text_tab"><!-- theodul tab slidetext plugin embed mode -->
  59. </div>
  60. <script src="videojs/videojs-media-sources.min.js"></script>
  61. <!-- <script src="videojs/videojs-contrib-hls.min.js"></script>-->
  62. <script src="videojs/videojs.hls.min.js"></script>
  63. <script>
  64. //播放的话,就直接使用下面2行
  65. //后面注释的那些其实也是可用用的,不过刚开始集成,越简单越好
  66. var player = videojs(‘my-video‘);
  67. player.play();
  68. /*
  69. (function ($) {
  70. var resetVideoSize = function (myPlayer) {
  71. var videoJsBoxWidth = $(".video-js").width();
  72. var ratio = 1440 / 900;
  73. var videoJsBoxHeight = videoJsBoxWidth / ratio;
  74. myPlayer.height(videoJsBoxHeight);
  75. }
  76. $(window).on("resize", function () {
  77. resetVideoSize(myPlayer);
  78. });
  79. myPlayer.play();
  80. })(jQuery)
  81. function changeSrc() {
  82. var src = "http://127.0.0.1/hls/test.m3u8";
  83. var myPlayera = videojs("my-video");
  84. $("#my-video").attr("src", "rtmp://live.hkstv.hk.lxdns.com/live/hks")
  85. myPlayera.src("rtmp://live.hkstv.hk.lxdns.com/live/hks"); //重新初始化视频地址
  86. myPlayera.load("rtmp://live.hkstv.hk.lxdns.com/live/hks"); //重新加载
  87. }
  88. */
  89. function changeSrc(src) {
  90. var myPlayera = videojs("my-video");
  91. //$("#videojs_videodisplay_presentation_html5_api").attr("src", "rtmp://live.hkstv.hk.lxdns.com/live/hks")
  92. myPlayera.src(src); //重新初始化视频地址
  93. myPlayera.load(src); //重新加载
  94. }
  95. </script>
  96. </body>
  97. </html>
时间: 2024-10-25 10:34:32

videojs集成--播放rtmp流的相关文章

videojs修改播放器样式并实现四路动态播放rtmp流视频

接了个无人机的项目,负责视频播放这一块,选用的是video.js这个视频插件,本以为可以开开心心的开发,谁怎料网上有关这部分的资料如此之少,给我这个伸手党给予了重大压力.好了,不说废话了. 项目的需求为实现一个能四路播放的播放器,能播放无人机拍摄的实时画面,并且能够做到局部刷新而不影响整个页面,并且要能够动态的切换视频流的来源,比方说有一架无人机在你播放视频时起飞了,那么你所能切换的视频流中就应该具备该无人机的rtmp流. 实现过程,化大为小,不断迭代,先实现一路播放,再扩展为四路,再实现无刷新

如何在IE浏览器播放RTSP或RTMP流(RTSP/RTMP OCX控件)

好多开发者一直苦恼于如何在IE浏览器环境下,构建低延迟的RTSP或RTMP播放,对于RTSP流来说,好多公司通常的做法是把RTSP转RTMP,然后分发到RTMP服务器,然后服务器转http-flv出来,浏览器直接播放http-flv流,亦或通过flash控件直接播放RTMP流,还有就是,转hls流出来,缺点是hls流延迟更大. 以上方案未尝不可,如果对播放体验和延迟要求更高,最简单的做法是直接在IE浏览器下加载activex控件,扩展了ocx控件,用于IE浏览器下的低延迟RTMP或RTSP播放.

Android 如何直播RTMP流

在android上,视频/音频流直播是极少有人关注的一部分.每当我们讨论流媒体,RTMP(Real Time Messaging Protocol)是不可或缺的.RTMP是一个基本的视频/音频直播流协议,但是不幸的是Android标准的VideoView不支持RTMP的播放.因此,如果想在android上播放RTMP直播流,你必须使用支持RTMP协议的库.  库播放由 RTMP 协议传输的流媒体. Android Vitamio 库 Vitamio是一个android和ios上基于FFmpeg的

搭建rtmp直播流服务之4:videoJS/ckPlayer开源播放器二次开发(播放rtmp、hls直播流及普通视频)

前面几章讲解了使用nginx-rtmp搭建直播流媒体服务器,以及使用ffmpeg推流到nginx-rtmp服务器,java通过命令行调用ffmpeg实现推流服务,后端的事情到这里就已经全部完成了. 本章讲一下播放器的选用和二次开发,前端的播放器虽然有flex(flash)可以用,但是很遗憾flex接触的并不多,学习成本又太高,那么基于第三方开源的flash播放器二次开发就显得很有必要. 一.几种播放器选择 那么播放器,哪些已经不再更新的和收费的,这里不会介绍,只介绍两种轻量级的开源播放器. 1.

搭建rtmp直播流服务之4:videojs和ckPlayer开源播放器二次开发(播放rtmp、hls直播流及普通视频)

前面几章讲解了使用 nginx-rtmp搭建直播流媒体服务器; ffmpeg推流到nginx-rtmp服务器; java通过命令行调用ffmpeg实现推流服务; 从数据源获取,到使用ffmpeg推流,再到nginx-rtmp发布流,后端的服务到这里就已经全部完成了. 如果这里的流程没走通,那么这里的播放器也是没办法播放实时流的. 本章讲一下播放器的选用和二次开发,前端的播放器虽然有flex(flash)可以用,但是很遗憾flex接触的并不多,学习成本又太高,那么基于第三方开源的flash播放器二

写了个项目 Web-Rtmp: 使用 WebSocket 在网页上播放 RTMP 直播流

http://neue.v2ex.com/t/316766 虽说浏览器里用 js 解码'播放'视频的方案已经有几个了... 为什么不再多一个呢... 基本原理: 服务端使用 websockify 中转一个 rtmp 流. 浏览器中使用 node-rtmpapi 解析 RTMP 协议,完成握手和通信. 提取其中的 H264 视频流 发送给 Broadway 解码 Repo: https://github.com/yingDev/Web-Rtmp 目前只是一个 demo 级别的东西, 算是验证了可行

netstream播放rtmp直播流卡顿

标准的flash播放器ActionScript3语句,播放flash publish的rtmp流,NetConnection--->NetStream--->play--->attachNetStream然而项目中这么做,一直处于卡顿状态.后来添加了一句 nsPlayer.bufferTime = 0.1; 居然不卡顿了.帮助文档说:The default value is 0.1 (one-tenth of a second). To determine the number of s

如何拉取公网RTSP/RTMP流在内网多客户端播放

好多情况下,一路RTSP或RTMP网络流过来后,想共享给更多局域网内的客户端播放,一般来说,有两种设计方案: 1. 拉取的RTSP或RTMP流,回调后的数据,转推RTMP服务器,内网部署一台RTMP服务器(如NGINX或者SRS)即可: 2. 拉取后的RTSP或RTMP流,回调后的数据,汇聚到内置RTSP服务模块,内网其他终端,只要拉RTSP流即可,无需再二次部署流媒体服务器. 方案一的好处在于,NGINX或者SRS等RTMP服务器,性能强劲,支持的并发更多,如果小并发的场景,用方案2比较合适,

广电电视信号如何生成RTMP流进入流媒体系统网络分发实现手机APP播放

随着网络宽带业务和数字电视的普及,家家户户都已经在用IPTV/OTT-TV的方式来看电视节目.但是从音视频的画面质量来看,广电系统的电视信号质量最佳,可以真正实现1080P网络电视画面质量甚至是H.265 HEVC的4K超高清. 随着技术的越来越进步,手机移动端的观看用户越来越多,已经渐渐形成趋势. 未来的观看人群在移动端火车上,地铁上,公交车上等等.那么如何将广电系统的电视信号转换成RTMP进入流媒体系统在互联网上进行分发,最终实现用苹果手机和安卓手机观看呢? 先来看下广电的电视信号的前端设备