zoukankan      html  css  js  c++  java
  • 漫谈


    1. 简介
    FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序

    2. 摄像头推流
    1) 前期准备
    安装 ffmpeg + nsginx

    sudo apt-get install ffmpeg //简单粗暴


    查看nginx是否包含rtmp模块

    $./nginx -V
    nginx version: openresty/1.17.8.1
    built by gcc 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.12) 
    built with OpenSSL 1.0.2g 1 Mar 2016
    TLS SNI support enabled
    configure arguments: --prefix=../nginx --with-cc-opt=-O2 --add-module=../ngx_devel_kit-0.3.1 --add-module=../echo-nginx-module-0.62 --add-module=../xss-nginx-module-0.06 --add-module=../ngx_coolkit-0.2 --add-module=../set-misc-nginx-module-0.32 --add-module=../form-input-nginx-module-0.12 --add-module=../encrypted-session-nginx-module-0.08 --add-module=../srcache-nginx-module-0.32 --add-module=../ngx_lua-0.10.17 --add-module=../ngx_lua_upstream-0.07 --add-module=../headers-more-nginx-module-0.33 --add-module=../array-var-nginx-module-0.05 --add-module=../memc-nginx-module-0.19 --add-module=../redis2-nginx-module-0.15 --add-module=../redis-nginx-module-0.3.7 --add-module=../rds-json-nginx-module-0.15 --add-module=../rds-csv-nginx-module-0.09 --add-module=../ngx_stream_lua-0.0.8 --with-ld-opt=-Wl,-rpath,/opt/fy/3rd/openresty/luajit/lib --add-module=/opt/fy/3rd/nginx-rtmp-module-master --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-http_ssl_module

    如果没有rtmp模块

    $wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
    $unzip master.zip
    
    $cd ~/openresty-1.17.8.1 //进入到nginx之前安装的目录
    #添加模块,--add-module=下载的模块路径
    $./configure --prefix=~/openresty/ --add-module=/home/user/nginx-rtmp-module-master
    $ make 

    make执行完毕就可以了。无需make install ,否则会覆盖安装

    会在相应../openresty-1.17.8.1/build/nginx-1.17.8/objs(安装包目录)目录下生产二进制文件nginx,将它替代运行中openresty的sbin/nginx文件
    将生成的新nginx文件复制到你的安装目录

    $sudo cp /opt/fy/3rd/openresty-1.17.8.1/build/nginx-1.17.8/objs/nginx  ../nginx/sbin/
    $./nginx -V #查看rtmp模块是否成功增加


    我们需要通过web端访问这个rtmp,即进行一个协议转需要在nginx里面进行配置

     #在nginx的http中新增一个server
      server {
            listen 10089;
            server_name  localhost;
            location /hls {
                # Serve HLS fragments
                types {
                    application/vnd.apple.mpegurl m3u8;
                    video/mp2t ts;
                }
                alias /opt/fy/app/video/;
                expires -1;
                add_header Access-Control-Allow-Origin *;
            }
      }
    #在和http同级中新增
    rtmp {  
        server {  
            listen 11935;  
         
           application hls {  
             live on;  
             hls on;  
             hls_path /opt/fy/app/video/;  #m3u8文件储存地址
             hls_fragment 1s;
             hls_playlist_length 3s;  
           }  
        } 
    }

     

    2)摄像头的rtsp地址格式
    以海康威视为例

    rtsp://[username]:[password]@[ip]:[port]/[codec]/[channel]/[subtype]/av_stream


    说明:
    username: 用户名。例如admin。
    password: 密码。例如12345。
    ip: 为设备IP。例如 192.0.0.64。
    port: 端口号默认为554,若为默认可不填写。
    codec:有h264、MPEG-4、mpeg4这几种。
    channel: 通道号,起始为1。例如通道1,则为ch1。
    subtype: 码流类型,主码流为main,辅码流为sub。

    服务器进行推流
    完成以上准备工作
    终端执行

    ffmpeg -i "rtsp://admin:12345@192.168.1.1:554/h264/ch1/sub/av_stream" -f flv -vcodec libx264 -acodec aac -r 50 -g 5 -b:v 300k -s 672*378 -q 8 "rtmp://127.0.0.1:11935/hls/steam"

    相关参数解释

    -i "rtsp://admin:12345@192.168.1.1:554/h264/ch1/sub/av_stream" //输入您要处理的视频文件路径
    -f flv //强迫采用格式flv
    -vcodec libx264 //视频 强制使用libx264编解码方式 
    -acodec aac //音频 使用aac编解码
    -r 50 //要强制输出文件的帧频为24 fps 
    -g 5 //设置图像组大小
    -b:v 300k //要将输出文件的视频比特率设置为300 kbit / s
    -s 672*378 //图像显示分辨率
    -q 8 //以<数值>质量为基础的VBR,取值0.01-255,约小质量越好
    "rtmp://127.0.0.1:11935/hls/steam" //推送至本地nginx设置的地址

    3. 查看视频
    可使用工具VLC查看。或配合前端文件展示

  • 相关阅读:
    OGRE源代码resource分析
    全排列
    各种让人无语的库
    python Kmeans算法
    Linux服务器安装MariaDB数据库
    初探SEO,BSP收录速度测试
    MetaWeblog API调用
    Patterns
    腾讯。。。对Linux的支持程度直接扼杀了Linux在国内用户群的增长
    个人电子商务网站建设之——整站静态化实现的选择、设计与实现(二):静态页面的实现方式;
  • 原文地址:https://www.cnblogs.com/s42-/p/14254932.html
Copyright © 2011-2022 走看看