打造树莓派直播盒子(一)环境搭建

1,717 阅读2分钟

一、 准备好树莓派板卡和系统

前提条件,手上有一块树莓派3B或4B的盒子,且已经安装了官方的raspberrypi 32bit OS系统 强烈建议使用最新的树莓派4B+,因为4B的千兆网卡才是真千兆;

二、安装视频采集和编解码相关应用和依赖

2.1 编译安装依赖库NASM distfiles.macports.org/nasm

# sudo wget http://distfiles.macports.org/nasm/nasm-2.14.tar.bz2
# sudo tar -vxzf nasm-2.14.tar.bz2
# cd nasm-2.14
# sudo ./configure && sudo make && sudo make install

2.2 编译安装x264
源码地址 www.videolan.org/developers/…
这个库是用来支持x264编码硬件加速
不装的话软ffmpeg编码的时候只能传-vcodec h264参数进行软编码,而不能传-vcodec h264_omx获得硬件加速

--disable-asm 参数表示会用到上一步安装的nasm库

# git clone https://code.videolan.org/videolan/x264.git
# cd x264
# sudo ./configure --prefix=$PWD/_install --enable-static --disable-asm --disable-opencl -–enable-shared
# sudo make && sudo make install
# sudo cp _install/include /usr/ -rf
# sudo cp _install/lib /usr/ -rf

三、源码安装ffmpeg(重头来了)

官网下载地址: www.ffmpeg.org/download.ht… 当前最新版本4.3

先安装依赖
# sudo apt-get install libomxil-bellagio-dev libpcre3-dev libssl-dev zlib1g zlib1g.dev

# sudo wget http://www.ffmpeg.org/releases/ffmpeg-4.3.tar.gz
# sudo tar -vxzf ffmpeg-4.3.tar.gz
# cd ffmpeg-4.3
# sudo ./configure --prefix=$PWD/_install --enable-shared --enable-gpl --enable-libx264 --enable-omx-rpi --enable-mmal --enable-hwaccel=h264_mmal --enable-decoder=h264_mmal --enable-encoder=h264_omx --enable-omx
# sudo make && sudo make install
# sudo cp _install/include /usr/ -rf
# sudo cp _install/lib /usr/ -rf
# sudo cp _install/bin /usr/ -rf
# ffmpeg -v

四、安装支持rtmp转发功能的特定nginx服务

4.1 下载nginx-rtmp模块源码 下载后备用,后面编译安装nginx的时候会引用
# sudo git clone https://github.com/arut/nginx-rtmp-module.git

4.2编译安装nginx

# sudo wget http://nginx.org/download/nginx-1.14.2.tar.gz
# cd nginx-1.14.2
# sudo ./configure --prefix=/usr/local/nginx  --add-module=../nginx-rtmp-module  --with-http_ssl_module 
# sudo make && sudo make install

4.3 安装完成后需创建一个本地视频流文件缓存目录,nginx在推流过程中会用到该缓存,本例子目录为 /data/hls

nginx配置示例 直接用这段覆盖整个nginx.conf内容,需要的话再根据自己实际情况改nginx.conf

user  pi;
worker_processes  auto;

events {
    worker_connections  1024;
}
http {

    server {
      listen 9080;
      location / {
            root   html;
            index  index.html index.htm;
      }

      location /stat {
          rtmp_stat all;
          rtmp_stat_stylesheet stat.xls;
      }

      location /stat.xls {
         root /data/git/nginx-rtmp-module; 
      }
    }
}
rtmp {
    #本地推流服务器配置,接收之后再转发给外网的推流服务
    server {
        listen 1935; 
    
        chunk_size 4000;

        application hls {   
            live on;
            hls on;
            #本地文件缓存目录,需要事先创建目录
            hls_path /data/hls; 
            hls_fragment 10s;
            #你自己的推流地址
            push rtmp://livepush.walkye.com/live/demo2?txSecret=62cab0d2dba54331d1af2bd6b3d69d21&txTime=5F0570A6;
        }
   }
}

然后启动nginx # sudo /usr/local/nginx/sbin/nginx