本文由云+社区发表

作者:周超

导语

随着直播平台爆发式增长,直播平台从 PC 端转战移动端,紧跟着直播的潮流,自己学习实现了一套简单的 H5 视频推流的解决方案,下面就给小伙伴们分享一下自己学习过程中的经验。

环境部署

1、 配置、安装 Nginx;

# ./configure --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.pid --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.39 --with-zlib=/usr/local/src/zlib-1.2.11 --with-openssl=/usr/local/openssl/
# make
# make install
# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf  //启动Ngnix
# netstat -ano | grep 80

2、扩展 Nginx-rtmp-module

# ./configure --add-module=/usr/local/src/nginx-rtmp-module-master --with-openssl=/usr/local/openssl/
# make
# make install
# vim /usr/local/ngnix/conf/ngnix.conf
include /usr/localcinx-rtmp-module-master/testinx.conf;
# vim /usr/localcinx-rtmp-module-master/testinx.conf
rtmp {server {listen 1935;application myapp {live on;#record keyframes;#record_path /tmp;#record_max_size 128K;#record_interval 30s;#record_suffix .this.is.flv;#on_publish http://localhost:8080/publish;#on_play http://localhost:8080/play;#on_record_done http://localhost:8080/record_done;}application hls {live on;hls on;hls_path /tmp/hls;hls_fragment 10s;     #每个视频切片的时长。hls_playlist_length 60s;  #总共可以回看的事件,这里设置的是1分钟。#hls_continuous on; #连续模式。#hls_cleanup on;    #对多余的切片进行删除。#hls_nested on;     #嵌套模式。}}
}http {server {listen      8080;location /stat {rtmp_stat all;rtmp_stat_stylesheet stat.xsl;}location /stat.xsl {root /usr/local/src/nginx-rtmp-module-master/;}location /control {rtmp_control all;}location /rtmp-publisher {root /usr/local/src/nginx-rtmp-module-master/test;}location /hls {#server hls fragmentstypes{application/vnd.apple.mpegurl m3u8;video/mp2t ts;}#alias /tmp/app;root /tmp;expires -1;}location / {root /usr/local/src/nginx-rtmp-module-master/test/rtmp-publisher;}}
}
# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
# netstat -ltn  #查看端口的监听情况

3、 安装 ffmpeg

# ./configure --prefix=/usr/local/ffmpeg
# make
# make install

至于 ffmpeg 是啥?详细介绍可以参考:《【经验分享】音频、视频利器——FFmpeg》

模拟推流

  • 先来看一个简单的直播推流流程图 :

  • 用 flv 视频文件模拟 RTMP 视频流:
 # ffmpeg -re -i test.flv -vcodec copy -acodec copy -f flv rtmp://ip:1935/myapp/mystream

注:RTMP(Real Time Messaging Protocol),实时消息传输协议,用于视频直播协议,和 HLS 一样都可以应用于视频直播;

  • 用 mp4 视频文件模拟 HLS 视频流:
ffmpeg -re -i test.mp4 -c copy -f flv rtmp://ip:1935/hls/mystream

注:HLS(HTTP Live Streaming), Apple 的动态码率自适应技术,主要用于 PC 和 Apple 终端的音视频服务;

  • HLS 的请求流程:

H5 如何在页面上播放视频

<video autoplay webkit-playsinline>      <source src="http://ip/hls/mystream.m3u8" type="application/vnd.apple.mpegurl" />      <p class="warning">Your browser does not support HTML5 video.</p>   </video> 

总结

根据以上的流程,简单的实现了一个视频直播的流服务器来推送直播流,并且可以在 H5 页面上播放视频流。有兴趣的小伙伴们也可以尝试一下~

此文已由腾讯云+社区在各渠道发布

获取更多新鲜技术干货,可以关注我们腾讯云技术社区-云加社区官方号及知乎机构号

一看就能学会的H5视频推流方案相关推荐

  1. 简单的 H5 视频推流解决方案

    简单的 H5 视频推流解决方案 参考文章: (1)简单的 H5 视频推流解决方案 (2)https://www.cnblogs.com/lidabo/p/7099633.html 备忘一下.

  2. 移动端h5视频处理方案

    2019独角兽企业重金招聘Python工程师标准>>> 今天处理一个移动端h5的视频时被狠狠的打脸,果断在网上搜了好些文章狠补了一下,下面做一个记录,方便以后查看: H5移动端页面常 ...

  3. 「我是个杀猪的,毫无基础看这本能学会 Python 吗?」

    文末有活动 自从蟒蛇书(<Python 编程从入门到实践>)在当当和京东上霸榜,成为国民级的 Python 入门书之后,小编从各个网站的问答区发现了很多网友的提问,有些问题直击学习的本质, ...

  4. 【腾讯Bugly干货分享】H5 视频直播那些事

    为什么80%的码农都做不了架构师?>>>    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57a42ee6 ...

  5. 神奇的H5视频画中画功能

    一个H5视频,可以从浏览器独立出来播放视频,看起来像是一个本地应用.画中画功能是chrome70+的新功能 官方例子,Github地址 <video id="video" s ...

  6. 只要掌握这两个方法便可快速学会怎么剪裁视频尺寸

    当我们在制作视频时,偶尔会出现画面周边携带水印,或是尺寸比例不合适等情况,这时候就需要对视频的画面进行剪裁. 但是许多小伙伴还不明白怎么剪裁视频尺寸,其实很简单,只要借助工具即可轻松完成.所以我今天带 ...

  7. 大学四年,我悄悄看了B站上这些 Java 视频,毕业去阿里了!

    万年自学党来了,我上大学的时候,视频还远远没有现在这么丰富,我记得那时候我看的是马士兵和尚学堂高琪的,u1s1,我觉得比我们大学老师讲得好很多. 现在B站上这方面的学习资源非常丰富,我去挨着挨着搜了一 ...

  8. OpenCV入门(十七)快速学会OpenCV 16 视频处理

    OpenCV入门(十七)快速学会OpenCV 16 视频处理 1.构造VideoCapture对象 2.构造VideoWriter对象 3.视频操作基础 3.1 读取视频帧 3.2 播放视频文件 3. ...

  9. [标题党]15分钟开发可支持百万观众的H5视频直播网站

    15分钟用Rails开发一个Blog有什么意思?那是2005年的Hipster追捧的玩具. 现在都已经是2015年了.HTML应该读作Hipster's Toolkit Made Live了. 既然是 ...

  10. 智能会议系统(10)---WebRtc在H5视频聊天

    基于WebRtc在H5视频聊天.视频教学.视频会议.视频直播.白板互动低延时方案 随移动互联应用加快,4G,5G网络上马,低延时网络视频应改越来越走近生活,在教学,会议,在线医疗,招聘交友及时视频要求 ...

最新文章

  1. 一、预备知识―程序的内存分配
  2. 网易云信自研大规模传输网核心系统架构剖析
  3. GlassFish linux下配置服务并自动启动
  4. 解决 ASP.NET Core 部署到 IIS,更新项目时文件夹正在使用错误
  5. 孩子大了真是不好管了
  6. MOSS服务器场迁移1-有关切换登录用户时需要刷新一次才能成功的问题
  7. iOS开发针对对Masonry下的FPS优化讨论
  8. 1043. 输出PATest(20)-PAT乙级真题
  9. QCA9377 QCA1023系列蓝牙WiFi二合一模块方案选型参考
  10. 收入时间序列——之预测总结篇
  11. VS2012快捷方式的路径
  12. 思维拓展训练中的创新游戏设计
  13. 互联网计算机远程建立连接怎么回事,qq远程协助一直正在建立连接?最全分析解决方法送上!...
  14. endNote教程-5、6-高效阅读文献+高效文献调研
  15. 2019-06-12-pintos 实验1
  16. ES06# Filebeat采集原理与监控指标梳理
  17. 交换机 VLAN 端口类型
  18. 信号之零输入和零状态响应
  19. CC2640R2F BLE5.0 蓝牙协议栈Off-Chip OAD功能
  20. 自动驾驶(四十七)---------超声波雷达简介

热门文章

  1. [NOIP2013]华容道 题解(搜索)
  2. jQuery.param() 函数详解
  3. linux下NIS搭建(六)
  4. python判断文件格式_Python判断上传文件类型
  5. mysql怎么判断多行数据日期是否连续_MySQL学习笔记(一)
  6. linux内核C -- 第06课:U-boot 镜像自拷贝分析——section 属性
  7. 系统设计---分层,分级,分块
  8. adb server is out of date killing
  9. 上传附件点击事件_支持高拍仪扫描凭证附件的出纳记账软件
  10. mac编写python_刚到手Mac写Python的一个简单问题