rtmp

使用MediaCodec和RTMP做直播推流

时光怂恿深爱的人放手 提交于 2020-04-06 07:41:02
目前开源的项目或市面上的Android直播客户端主要是用ffmpeg来实现推流的。本文将介绍使用Android原生的视频编码类MediaCodec实现直播推流。 数据流及大致原理 这里所说的直播,就是将你的客户端产生的视频数据,实时发送到服务器上。服务器上的数据再实时地发送到播放客户端上。 以视频数据为例: 获取Camera画面 首先是摄像头拍摄得到原始画面数据,这里原始画面数据的格式我们不用管,因为我们使用的是MediaCodec,所以我们会使用 camera.setPreviewTexture(surfaceTexture) 来利用Camera获取到的画面。 此处的原理可忽略,大致说明的话,就是Camera会把获得的画面保存为OpenGL的一个纹理,我们使用这个纹理就能使用Camera的画面。 绘制画面 在获得画面之后,我们要把这个画面(纹理)“画”到MediaCodec上。 如何画? MediaCodec提供一张’白纸’,也就是一个Surface,供我们把纹理画到上面。此处的API是 MediaCodec.createInputSurface() 怎么画?用Canvas画。当然不是一般的Canvas,我用了这个开源项目android-openGL-canvas。 H264数据 画上去后,MediaCodec就会帮我们把原始画面数据,压缩成相应的视频数据

SRT技术|Wowza流服务器下接收发送SRT流

别等时光非礼了梦想. 提交于 2020-04-03 17:46:14
一、Wowza服务器准备 Wowza安装在Linux或 Windows系统下; Wowza 4.7.2版本仅支持SRT的接收,如果需要发送SRT则需要安装4.7.3或者更高的版本; Wowza支持SRT版本为1.1,并且只能接收和发送通过MPEG-TS打包的SRT流。 注:登录后首先需要打开RTSP和RTMP身份认证为不需要认证. 二、Wowza 接收SRT流 登录Wowza接收SRT流,首先需要创建一个SRT属性的流文件。 1、点击“Application”--“Stream Files”--“Add Stream file”,输入流文件名称”srt”,流URL地址为:srt://Wowza-ip地址:监听端口。点击“Add”保存。 注:监听端口为SRT发送方配置的端口。 2、点击“Properties”,设置SRT接收参数,默认加密方式为不加密,延时为400ms,仅支持通过MPEG-TS打包的SRT流。根据SRT发送方参数对应配置。 3、然后在弹出的对话框,下拉MediaCaster Type 选项框,选择SRT,点击保存使SRT协议开始接收。 4、千视编码器(SRT发送方)配置。握手模式为CALLER,地址为Wowza服务器地址,端口和接收方保持一致。 5、点击“Incoming Streams”,刷新查看流接收状态。流状态为“Active”为正常连接。 6、页面右上角

ffmpeg 命令

久未见 提交于 2020-04-02 20:03:18
1.保存文件: ffmpeg -i rtsp://admin:12345@172.29.61.108/Streaming/Channels/1 -vcodec copy -acodec libvo_aacenc -f mpegts "F:\\wgg\\sound_test.ts" -i 后面接输入流, vcodec 后面视频编码方式,copy表示不重新编码。 -acodec 后面跟音频编码方式,libvo_aacenc 是增强型编码方式 。-f 后面跟封装格式也就是format mpegts表示ts流。 2. 按时间保存文件 ffmpeg -ss 00:00:00 -vsync 0 -t 00:10:00 -re -i D:\wgg\test.ts -vcodec copy -an -f mp4 test.mp4 -i 前面要加上-re,-表示按时间戳读取文件, 不需要音频 -acodec 替换位-an 后面不跟参数。 3. ffmpeg 向rtmp server推流 ffmpeg -re -i D:\record\langxi\langxi.ts -vcodec copy -f flv rtmp://127.0.0.1/live/mystream 推送rtmp视频流时 流format需要设定位flv, mystream 可以被替换,比如 rtmp://127.0.0.1/live

集RTMP、HLS、FLV,、WebSocket 于一身的网页直播/点播播放器方案EasyPlayer.js实现倍速回放方法

大兔子大兔子 提交于 2020-03-31 19:49:11
需求分析 一般对于一个播放器,应该支持如下几种显示模式: 等比例,最大化区域显示,不裁剪 等比例,最大区域显示,裁剪 拉伸显示,铺满全屏 要实现这几种显示模式。其实只要对播放控件的布局进行些许调整即可。那EasyPlayer是怎么实现的呢? EasyPlayer.js 支持m3u8播放; 支持HTTP-FLV播放; 支持RTMP播放; 支持直播和点播播放; 支持播放器快照截图; 支持点播多清晰度播放; 支持全屏或比例显示; 自带的flash支持极速和流畅模式; 自带的flash支持HTTP-FLV播放; 自动检测IE浏览器兼容播放; EasyPlayer.js实现倍速回放 提出问题 最近有开发者咨询EasyPlayer.js想要结合钉钉使用。在集成开发的时候播放实时流没有问题,但是开发者想集成回放的功能,要求在回放的时候实现倍速回放、任意拖拽进度。 解决问题 很明确这些功能我们现在已经集成有了,只需要简单修改一个参数就可以实现:live=true是直播模式,live=false是点播模式。 下面给大家总结一下其它参数的说明列表如下: 来源: https://www.cnblogs.com/TSINGSEE/p/11806160.html

直播系统源码:分享关于直播系统开发搭建的一些经验

好久不见. 提交于 2020-03-26 11:06:38
直播系统可是近期的大热门,受疫情影响,教育直播系统、直播带货系统,都成了大热门,而想要了解直播系统,知道视频直播app平台开发是怎样做成的,你需要先知道它由哪些组成部分构成: 一、 如何搭建一个完整的直播系统,首先,你需要以下几大系统: 1、聊天系统:包括聊天室功能、弹幕、私聊 2、礼物系统:后台发布、上传礼物、礼物发布、收礼物、礼物特效等 3、安全系统:自动鉴黄、实名认证、截图、录制、回播、禁播等 4、支付系统:用户充值、主播提现、兑换商品或礼物等 5、通知系统:直播间开播 6、后台系统:流量统计、管理用户、管理直播间和广告、各方面设置、各方面数值记录等 二、寻找合适的云服务SDK进行嵌入,在三方的聚合API中可以轻易找到以上的功能模块,挑选合适的模块封装到自己的App中 视频直播功能有ytylive qupaiLive 腾讯云等模块。 拿ytylive举例,此模块支持主流 RTMP 服务器 支持目前所有主流的 RTMP 服务器 (simple-rtmp-server、crtmpserver、FMS 等)。 支持所有的 RTMP 协议 支持所有RTMP 协议及变种 (RTMP、RTMPT、RTMPE、RTMPS、RTMPTE、RTMPTS 等)。 性能强大 资源 (CPU/内存) 占用率低,使用硬件加速进行编码,压缩比例大,延时小。 支持实时滤镜 支持多种实时滤镜效果 (Gray

直播APP源码搭建简易直播平台及个人开发直播系统的难点

五迷三道 提交于 2020-03-26 09:42:36
如何用直播APP源码搭建一个简易的直播平台 一.前端推流 1.推流可以采用命令: ffmpeg -i input -vcodec copy -acodec copy -f flv rtmp://127.0.0.1/live/cgstream0input 可以是实时流,也可以是文件,如果是文件 需要加上-re。运用中需要将127.0.0.1换成rtmp所在机器的ip地址。 用命令推流时间戳信息不能任意修改,想要达到一个满意的结果还是要用代码实现。 主要方法代码如下: 1.打开视频流,filename可以文件名称也可以是实时流url. 2.创建输出上下文以及输出流,输出流的格式需要设置成flv 3.从输入流中读取音视频包 二. 服务端 服务端可以选择crtmpserver,crtmpserver开源,在windows平台以及linux平台下都可以运行。 随着人们对视频质量要求的提高,基本上视频的分辨率都是高清(1080p),码率基本会在4M以上。试想如果服务器网卡选择千兆网卡,单个网卡最多也就支持两百多路。一般来讲,服务器的cpu配置会比普通电脑高很多,支持几百路并发是不会出现性能问题。 三. 播放端 如果在网页上播放(IE),可以选择JwPlayer,如果用插件的也是可以。Android端播放器如果底层基于ffmpeg,也可以播放CrtmpServer 转发的音视频流

直播系统源码:分享关于直播系统开发搭建的一些经验

点点圈 提交于 2020-03-26 09:37:19
直播系统可是近期的大热门,受疫情影响,教育直播系统、直播带货系统,都成了大热门,而想要了解直播系统,知道视频直播app平台开发是怎样做成的,你需要先知道它由哪些组成部分构成: 一、 如何搭建一个完整的直播系统,首先,你需要以下几大系统: 1、聊天系统:包括聊天室功能、弹幕、私聊 2、礼物系统:后台发布、上传礼物、礼物发布、收礼物、礼物特效等 3、安全系统:自动鉴黄、实名认证、截图、录制、回播、禁播等 4、支付系统:用户充值、主播提现、兑换商品或礼物等 5、通知系统:直播间开播 6、后台系统:流量统计、管理用户、管理直播间和广告、各方面设置、各方面数值记录等 二、寻找合适的云服务SDK进行嵌入,在三方的聚合API中可以轻易找到以上的功能模块,挑选合适的模块封装到自己的App中 视频直播功能有ytylive qupaiLive 腾讯云等模块。 拿ytylive举例,此模块支持主流 RTMP 服务器 支持目前所有主流的 RTMP 服务器 (simple-rtmp-server、crtmpserver、FMS 等)。 支持所有的 RTMP 协议 支持所有RTMP 协议及变种 (RTMP、RTMPT、RTMPE、RTMPS、RTMPTE、RTMPTS 等)。 性能强大 资源 (CPU/内存) 占用率低,使用硬件加速进行编码,压缩比例大,延时小。 支持实时滤镜 支持多种实时滤镜效果 (Gray

通过RTMP play分析FLV格式详解

五迷三道 提交于 2020-03-23 12:17:07
最近做了一个rtmp中转服务程序,通过实践,熟悉rtmp play和push中各类格式,这里总结一下。 程序github地址: https://github.com/runner365/rtmp_relay rtmp play接收报文分析 第一帧收到的报文: 1) 0x46 4c 56: 可参考文后:参考一 字符FLV头 2) 0x01 05 Version TypeFlagsReserved TypeFlagsAudio TypeFlagsReserved TypeFlagsVideo 这个解析的时候,一般不用管 3)0x00 00 00 09 FLV header offset: 也就是从开头9字节后,才是FLV真正的报文头。 4)0x00 00 00 00 这个是第1帧的PreviousTagSize0(前帧长度),因为是第一帧,所以肯定是0; 5)0x08 可参考文后:参考二,参考三 帧开头第一字节:0x08表示音频,0x09表示视频 6)0x00 00 04 帧payload长度:因为音频第一帧是ASC,所以只有4字节。 7) 0x 00 00 00 00 timestamp,时间戳 8) 0x 00 00 00 streamid,流ID 9) 0x AF 00 13 90 音频payload: 0xaf00开头的后面是asc flag,

EasyNVR、EasyDSS二次开发之:RTMP、HLS流在web页面进行无插件播放示例Demo代码

淺唱寂寞╮ 提交于 2020-03-22 04:42:03
不管是基于EasyNVR还是EasyDSS,都是支持无插件直播,这也是未来视频直播的一个趋势。对于传统的浏览器插件播放谁用谁知道; 以上是软件自带播放展示 背景需求 对于EasyNVR和EasyDSS的使用方式大概分为两大类,一类是直接将软件作为视频能力平台来进行使用;另一类就是将视频能力集成到自身的业务系统来,这就涉及到相关的接口调用和一些对应的功能的集成。对与前端的web播放器的集成也是一个 需要注意的方向;通常也有很多客户会咨询到关于web播放器集成的相关问题,本篇博客也是对应web流媒体播放器的demo介绍。 解决方案 对于流媒体的web播放器有很多,不管的ckplay、flowplayer、腾讯、阿里等;我们的Easy系列软件使用的是Videojs,因此本篇主要介绍的也是Videojs如何实现HLS、RTMP流的web播放; 引用相关文件 <link rel="stylesheet" href="plugins/video-js-5.19.2/video-js.css"/> <script src="plugins/video-js-5.19.2/video.js"></script> <script src="plugins/video-js-5.19.2/videojs-contrib-hls4.js"></script> <script src="plugins

RTMP服务器搭建(nginx+rtmp)

一个人想着一个人 提交于 2020-03-20 07:25:19
参考文章: https://obsproject.com/forum/resources/how-to-set-up-your-own-private-rtmp-server-using-nginx.50/ 1、 安装编译nginx所需要的库   sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev 2、 下载nginx-1.9.15.tar.gz   wget http://nginx.org/download/nginx-1.9.15.tar.gz 3、 下载 nginx-rtmp-module   wget https://github.com/arut/nginx-rtmp-module/archive/master.zip 4、解压   tar -zxvf nginx-1.9.15.tar.gz   unzip master.zip   cd nginx-1.9.15 5、编译   ./configure --with-http_ssl_module --add-module=../nginx-rtmp-module-master   make   sudo make install 6、启动nginx,检测nginx是否能成功运行   sudo /usr/local/nginx