zoukankan      html  css  js  c++  java
  • ubuntu 14.04 下实现浏览器接收UDP视频流

    前言

    由于近期项目需求,需实现在浏览器上实时预览接收UDP视频流信息。此功能若在VLC上可轻松播放,奈何由于Chrome、Firefox版本的升级,渐渐浏览器不支持外部插件,因而使用VLC web插件也成为泡影。在前辈指导下,采用FFmpeg + SRS + ckplayer的方式实现了该功能。

    这种方式实现原理,主要是通过以下3个步骤完成:

    1、FFmpeg将UDP视频流转换成rtmp流并推送至SRS服务器;

    2、SRS作为rtmp服务器向其他客户端分发该视频流资源;

    3、ckplayer作为客户端接收rtmp资源并播放视频。

    环境准备

    实验步骤

    一、开启SRS rtmp服务器

    见:RTMP部署实例

    二、VLC模拟发送UDP视频流

    1)选择一个视频作为UDP视频源

    2)NEXT

    3)选择以UDP协议的形式传输视频流

    4)填入相应的IP地址及端口,这里IP为239.1.1.1组播地址,端口为2222

    5)选择第一种形式进行转码 H.264+MP3(MP4) , 实测只有这种编码方式,ckplayer才能正常播放

    6)点击Stream,开始传输视频流

    三、ckplayer部署

    • 代码结构目录(web服务器目录下):
    ├── ckplayer
    │   ├── ckplayer.js
    │   ├── ckplayer.min.js
    │   ├── ckplayer.swf
    │   ├── ckplayer.xml
    │   ├── language.xml
    │   └── style.xml
    ├── ckplayer.zip
    ├── crossdomain.xml
    ├── definition.html
    ├── exec
    │   ├── excel.php
    │   └── stopFFmpeg.php
    ├── flashplayer.html
    ├── iframe.html
    ├── index.html
    ├── js
    │   ├── bootstrap.min.js
    │   ├── bootstrap-table.js
    │   ├── intputGroup.js
    │   ├── jquery-3.1.1.min.js
    │   ├── jtopo-0.4.6-min.js
    │   └── xx.html
    ├── material
    │   ├── logo.png
    │   ├── mydream_en1800_1010_01.png
    │   ├── mydream_en1800_1010_02.png
    │   ├── poster.jpg
    │   └── srt.srt
    ├── README.md
    └── test.html
    
    • flashplayer.html(用于播放rtmp流)
    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="UTF-8">
    		<title>ckplayer</title>
    		<script type="text/javascript" src="ckplayer/ckplayer.js"></script>
    		<style type="text/css">body{margin:0;padding:0px;font-family:"Microsoft YaHei",YaHei,"微软雅黑",SimHei,"黑体";font-size:14px}</style>
    		<script src="js/jquery-3.1.1.min.js"></script>
    	</head>
    
    	<body>
    		<div id="video" style=" 1000px; height: 800px;"></div>
    		<script type="text/javascript">
    			var videoObject = {
    				container: '#video', //容器的ID或className
    				variable: 'player',//播放函数名称
    				flashplayer:true,
    				poster:'material/poster.jpg',//封面图片
                    loaded: 'loadedHandler',
                    video: 'rtmp://localhost/live/livestream'
    			}
    			var player = new ckplayer(videoObject);
    		</script>
    	</body>
    </html>
    

    四、FFmpeg接收UDP视频流,并转码成rtmp流发送至SRS服务器

    • 打开一个终端,输入以下命令,利用FFmpeg进行转码
    ffmpeg -i udp://239.1.1.1:2222 -vcodec copy -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 rtmp://192.168.204.132/live/livestream
    

    其中上述代码中 udp://239.1.1.1:2222 代表源视频流,rtmp://192.168.204.132/live/livestream 代表SRS rmtp服务器地址

    • 运行结果

    五、用ckplay查看最终结果

  • 相关阅读:
    洛谷1894 [USACO4.2]完美的牛栏The Perfect Stall
    洛谷2417 课程
    洛谷2860 [USACO06JAN]冗余路径Redundant Paths
    洛谷1983 车站分级
    BZOJ1178或洛谷3626 [APIO2009]会议中心
    BZOJ1179或洛谷3672 [APIO2009]抢掠计划
    CF Round #516 (Div. 2, by Moscow Team Olympiad)
    洛谷1262 间谍网络
    NOI导刊 2018河南郑州游记
    BZOJ1001或洛谷4001 [BJOI2006]狼抓兔子
  • 原文地址:https://www.cnblogs.com/wpqwpq/p/8567847.html
Copyright © 2011-2022 走看看