[TOC] ### 说明 最近打算用树莓派做一个远程监控,可以在外网访问,最初使用`mjpg_streamer`,然后使用frp进行转发,虽然说能实现在外网看到视频,但是视频效果卡的跟ppt一样;在查询相关资料之后决定使用`ffmpeg`推流到外网`nginx + rtmp`服务器上,果然效果好了太多太多,在外网服务器带宽只有1M的情况下,能实现比较流畅的视频监控。 ### 准备 - 树莓派3B+ - 外网服务器一台 - CSI接口摄像头 ### 安装sdl2 ```shell sudo apt-get install libsdl2-dev ``` ### 安装x264 ```shell git clone git://git.videolan.org/x264.git cd x264 ./configure --host=arm-unknown-linux-gnueabi --enable-static --disable-opencl --enable-shared make -j4 sudo make install ``` ### 安装ffmpeg - 下载地址: [http://ffmpeg.org/download.html](http://ffmpeg.org/download.html "http://ffmpeg.org/download.html") ```shell git clone git://source.ffmpeg.org/ffmpeg.git cd ffmpeg ./configure --arch=armv7l --target-os=linux \ --enable-gpl --enable-libx264 \ --enable-nonfree \ \ --enable-omx \ --enable-omx-rpi \ --enable-encoder=h264_omx \ \ --enable-mmal \ --enable-hwaccel=h264_mmal \ --enable-decoder=h264_mmal \ \ make -j4 sudo make install ``` - 报错——ERROR: OMX_Core.h not found. - 解决——sudo apt-get install libomxil-bellagio-dev ### 测试ffmpeg - 输入ffmpeg [![result](/upload/微信图片_20190419205020.png "result")](/upload/微信图片_20190419205020.png "result") ------------ ### 安装nginx依赖 apt-get install libpcre3 libpcre3-dev apt-get install openssl libssl-dev ### 下载nginx-rtmp-module git clone https://github.com/arut/nginx-rtmp-module.git ### 安装nginx - 下载地址:[http://nginx.org/download/](http://nginx.org/download/ "下载地址") ```shell ./configure --add-module=../nginx-rtmp-module --with-http_ssl_module make make install ``` - nginx默认安装路径为/usr/local/nginx ### 配置rtmp ```shell http { ··· server { ··· location /on_publish{ default_type text/html; set $pass 0; if ($query_string ~* "pass=(.+)$") { set $pass $1; } if ($pass = password) { return 200; } if ($pass != password) { return 404; } } ··· } } ··· rtmp { server { listen 1935; #监听的端口 chunk_size 4000; application live { #rtmp推流请求路径: rtmp://ip:1935/live live on; notify_method get; on_publish http://localhost/on_publish; #开启推流回调 on_play http://localhost/on_publish; #开启拉流回调 } } } ``` ### 测试 raspivid -rot 180 -o - -t 0 -vf -hf -fps 25 -b 500000 | ffmpeg -re -ar 44100 -ac 2 -acodec pcm_s16le -f s16le -ac 2 -i /dev/zero -f h264 -i - -vcodec copy -acodec aac -ab 128k -g 50 -strict experimental -f flv rtmp://ip:1935/live/user?pass=password - 使用vlc打开:rtmp://ip:1935/live/user?pass=password ### 下载地址 - [ffmpeg](http://ffmpeg.org/download.html "ffmpeg") - [nginx](http://nginx.org/download/ "nginx") - [nginx-rtmp-module](https://github.com/arut/nginx-rtmp-module.git "nginx-rtmp-module")