• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

FFmpegffmpeg+nginx-rtmp实现视频流转发

武飞扬头像
音视频开发老马
帮助1

1.应用场景

目前的摄像头厂家能提供出来的视频流格式有限,且chrome已经禁止了对flash的支持,导致像硬盘录像机这种只能提供rtsp格式流地址的摄像头无法接入Web应用,所以不得不对视频的流地址进行分发,通过代码对流地址中的数据进行切割,非常影响服务的性能,所以采用ffmepg nginx-rtmp这种无侵入,占用内存小的方式进行视频的分发。

2.软件包

ffmpeg-n4.4-80-gbf87bdd3f6-win64-gpl-4.4.zip

nginx-rtmp-win32-dev.zip

各位看官自行百度下载…

3.使用ffmpeg进行视频流的转流

1.解压zip目录进入文件的bin目录内,有如下几个文件

学新通

这里要用到的就是ffmpeg.exe

2.常用命令讲解

命令 含义
-i 设定输入视频的地址
-f 设定输出格式
-hls_wrap 设定分割的文件数量
-c copy 拷贝所有的流

3.举一个例子

① 先在电脑上随便建立一个文件夹,我这里建的名称是test

② 进入ffmpeg的bin目录内,打开cmd命令行

③ 输入下列命令

ffmpeg -i 视频流地址 -hls_wrap 10 -c copy -f hls 本地文件夹地址\test\204.m3u8

当命令行出现以下内容时,表示转流成功

学新通

④打开本地建立的test文件夹,会发现有10个ts文件和一个m3u8文件,这里的ts文件,就是ffmpeg将流地址按照时间切片保存下来的视频文件,按照给定的参数进行循环保存覆盖的

到这里,已经实现了对于视频流的转流及保存,这里可以解决的场景有:

内网的摄像头映射到外网环境

Web端显示摄像头画面

接下来,只需要将这些切片文件一直提供给前端,就能持续的看到画面了。

点击文末卡片领取音视频学习资料

4.使用nginx-rtmp推送视频文件,让浏览器显示视频。

解压nginx-rtmp-win32-dev.zip文件,进入conf文件夹,编辑nginx.conf文件

  1.  
    worker_processes 1;
  2.  
     
  3.  
    error_log logs/error.log info;
  4.  
     
  5.  
    events {
  6.  
    worker_connections 1024;
  7.  
    }
  8.  
     
  9.  
    rtmp {
  10.  
    server {
  11.  
    listen 1935;
  12.  
     
  13.  
    application live {
  14.  
    live on;
  15.  
    }
  16.  
     
  17.  
    application hls {
  18.  
    live on;
  19.  
    hls on;
  20.  
    hls_path temp/hls;
  21.  
    hls_fragment 8s;
  22.  
    }
  23.  
    }
  24.  
    }
  25.  
     
  26.  
    http {
  27.  
    server {
  28.  
    listen 8080;
  29.  
     
  30.  
    location / {
  31.  
    # 这里配置视频文件所在的文件夹,这里就放在nginx-rtmp的html文件夹内,
  32.  
    # 所以不需要更改。
  33.  
    root html;
  34.  
    }
  35.  
     
  36.  
    location /stat {
  37.  
    rtmp_stat all;
  38.  
    rtmp_stat_stylesheet stat.xsl;
  39.  
    }
  40.  
     
  41.  
    location /stat.xsl {
  42.  
    root html;
  43.  
    }
  44.  
     
  45.  
    location /hls {
  46.  
    #server hls fragments
  47.  
    types{
  48.  
    application/vnd.apple.mpegurl m3u8;
  49.  
    video/mp2t ts;
  50.  
    }
  51.  
    alias temp/hls;
  52.  
    expires -1;
  53.  
    }
  54.  
    }
  55.  
    }
  56.  
     
学新通

启动nginx-rtmp:

start nginx

打开浏览器,看到以下内容,表示推送成功

学新通

前端推荐使用Video.js进行视频的展示,这里不做赘述了,使用起来非常简单。

如果有很多视频需要转发,推荐写bat文件进行后台启动

  1.  
    //流地址转发.bat
  2.  
     
  3.  
    start cmd /k ffmpeg -i 流地址1 -hls_wrap 10 -c copy -f hls 本地文件夹\1.m3u8
  4.  
    start cmd /k ffmpeg -i 流地址2 -hls_wrap 10 -c copy -f hls 本地文件夹\2.m3u8
  5.  
    start cmd /k ffmpeg -i 流地址3 -hls_wrap 10 -c copy -f hls 本地文件夹\3.m3u8
  6.  
    start cmd /k ffmpeg -i 流地址4 -hls_wrap 10 -c copy -f hls 本地文件夹\4.m3u8
  7.  
    start cmd /k ffmpeg -i 流地址5 -hls_wrap 10 -c copy -f hls 本地文件夹\5.m3u8

这样保存成bat,直接双击就能启动

学新通

 学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhggabga
系列文章
更多 icon
同类精品
更多 icon
继续加载