一看就能学会的H5视频推流方案[通俗易懂]

一看就能学会的H5视频推流方案[通俗易懂]一看就能学会的H5视频推流方案

大家好,又见面了,我是你们的朋友全栈君。

本文由云+社区发表

作者:周超

导语

随着直播平台爆发式增长,直播平台从 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 fragments
            types{
                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》

模拟推流

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

img

  • 用 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 的请求流程:

img

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 页面上播放视频流。有兴趣的小伙伴们也可以尝试一下~

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/107002.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Flink的sink实战之四:自定义

    Flink的sink实战之四:自定义

    2020年11月19日
  • 常见Android面试题及答案(详细整理)

    常见Android面试题及答案(详细整理)以下是一些常用的Android面试题及答案,有需要没需要都可以备着,希望能帮到大家。 1.请描述一下Activity生命周期。答:如下图所示。共有七个周期函数,按顺序分别是:onCreate(),onStart(),onRestart(),onResume(),onPause(),onStop(),onDestroy()。onCreate():创建Activit…

    2022年5月21日
  • HTML添加背景图片_html背景图片铺满网页

    HTML添加背景图片_html背景图片铺满网页2020-04-27 每日一例第43天1.后台代码<html><center><head>0420html中div的用法</head>

    2022年8月4日
  • win10\Win10系统禁止自动更新[通俗易懂]

    win10\Win10系统禁止自动更新[通俗易懂]win10专业版禁止自动更新(本人亲测无误后发布)解决方案:1.按下“windows+R”打开win10运行框;2.在运行框中输入“gpedit.msc”命令打开win10的本地组策略编辑器;3.在左侧:计算机配置菜单栏找到“管理模板”,紧接着点开当前菜单找到”windows组件“;4.最后在”Windows组件“中:找到Windows更新菜单栏点开:选中”配置自动更新“右键…

    2022年6月2日
  • 类似于吾爱激活成功教程的免费论坛_哔哩哔哩吾爱激活成功教程

    类似于吾爱激活成功教程的免费论坛_哔哩哔哩吾爱激活成功教程吾爱激活成功教程吧http://www.52pjb.net/网站收集了众多软件,类似于软件博客这种,同行业的还有胡萝卜周、易激活成功教程、心海这类的,如果你喜欢这种风格的软件下载博客,那么它绝对是首选,当然也是不要钱的,也没有什么赞助收费这类的盈利,站长完全是用爱发电!不过缺点是有些资源需要用网盘下载,毕竟是激活成功教程软件,也是可以理解的!吾爱激活成功教程论坛他也是目前国内最大的软件激活成功教程论坛,而且网友都很热心,也是国内下载氛围最好的软件下载网站论坛,也还不错。正版中国是一个分享正版软件限时免费..

    2022年10月13日
  • 黑客入门视频教程(共57个)全实战过程

    黑客入门视频教程(共57个)全实战过程黑客入门视频教程(共57个)全实战过程 01ping命令的使用http://images.enet.com.cn/eschool/wmv/ping.wmv02netstat命令的使用http://images.enet.com.cn/eschool/wmv/netstat.wmv03tasklist和taskkill的使用h…

    2022年5月29日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号