使用树莓派进行直播

文章目录[x]
  1. 1:RTMP
  2. 1.1:安装NGINX
  3. 1.2:配置NGINX
  4. 1.3:安装FFmpeg
  5. 2:RTSP
  6. 2.1:如何用rtsp直播
  7. 3:参考文章

当然我并不是真的想直播,这个只是项目需要,需要远距离传输视频数据,所以我才顺便使用它来测试一下直播而已,废话不多说,直接开始

目前市面上视频流有两种主流的协议一个是RTMP一个是RTSP,前面一个直播用的多,后面一个主要是摄像头用的多。

我们这里两个都讲一下。

RTMP

首先我们需要打开树莓派的摄像头

输入sudo raspi-config

大概在第5项  Interfacing option。自己打开即可,打开后需要重启树莓派。

安装NGINX

#更新
sudo apt-get update
#安装NGINX
sudo apt-get -y install nginx
#移除(因为直接安装的没用,我们只需要它配置的环境)
sudo apt-get -y remove nginx
sudo apt-get clean
#清空 nginx 的配置文件
sudo rm -rf /etc/nginx/*
#安装编译用的模块
sudo apt-get install -y curl build-essential libpcre3 libpcre3-dev libpcre++-dev zlib1g-dev libcurl4-openssl-dev libssl-dev
#创建存放网页的目录给 nginx 使用
sudo mkdir -p /var/www
#创建编译用的目录
mkdir -p ~/nginx_src
cd ~/nginx_src
#下载 nginx 源码包
wget http://nginx.org/download/nginx-1.11.8.tar.gz
#下载 nginx-rtmp-module 源码包
wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
tar -zxvf nginx-1.11.8.tar.gz
unzip master.zip
cd nginx-1.11.8
#设定编译参数
./configure --prefix=/var/www --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --pid-path=/var/run/nginx.pid --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --with-http_ssl_module --without-http_proxy_module --add-module=/home/pi/nginx_src/nginx-rtmp-module-master
#开始编译安装
make
sudo make install

编译安装如果有错误可以用这个:make CFLAGS='-Wno-implicit-fallthrough'

最后查看一下NGINX版本:nginx -v

如果没问题那么就说明安装成功。

配置NGINX

sudo nano /etc/nginx/nginx.conf

关键代码

# 关键配置
rtmp {
    server {
        listen 1935;
        chunk_size 4000;
        application hls {
            live on;
            hls on;
            hls_path /ect/nginx/html/hls; # 缓冲区目录
            hls_fragment 5s; # 设置HLS分段(切片)长度。默认为5秒钟
        }
    }
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    server {
        listen       99;
        server_name  localhost;
        location / {
            root   /etc/nginx/html;
            index  index.html index.htm;
        }
    }
}

重启NGINX:sudo service nginx restart

安装FFmpeg

sudo apt install ffmpeg

直接推流

raspivid -o - -t 0 -vf -hf -w 640 -h 480 -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 -s 640x480 -strict experimental -f flv rtmp://0.0.0.0:1935/hls/live

然后就可以在VLC里面看到视频了

# 推流后得到地址(自己可以换成树莓派的IP地址)
# rtmp://127.0.0.1:1935/hls/live
# http://127.0.0.1:99/hls/live.m3u8
ffplay rtmp://127.0.0.1:1935/hls/live
# 或者浏览器访问 http://127.0.0.1:99/hls/live.m3u8

如果你想直播,也很简单,这里以B站举例子。

raspivid -o - -t 0 -vf -hf -w 640 -h 480 -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 -s 640x480 -strict experimental -f flv 你的rtmp地址直码+你的直播码

RTSP

这个实现比较难,我尝试了一些方法,但是发现有些软件根本装不上。。所以最后我到国外网站找了找,发现一个大神的项目

项目地址

我们不需要自己编译,直接用别人编译好的deb包就可以了,自己下载然后放到树莓派里面。

安装命令 dpkg -i xxx.deb

安装好后就可以直接使用非常简单的命令来开始rtsp:v4l2rtspserver

访问地址:rtsp://树莓派地址:8554/unicast

这个也可以用vlc打开。

还可以指定地址和端口:v4l2rtspserver -I 192.168.123.61 -P 8555

如何用rtsp直播

这个我们需要借助OBSstudio来实现。

自己到OBS里面添加VLC视频源,然后添加URL,把rtsp地址直接粘贴进去就可以啦。

 

参考文章

本文章从我的文档里面整理过来的,下面是文档地址

1.http://book.xiaoyou66.com/read/pi/blank

2.http://book.xiaoyou66.com/read/pi/a1

 

点赞

发表评论

昵称和uid可以选填一个,填邮箱必填(留言回复后将会发邮件给你)
tips:输入uid可以快速获得你的昵称和头像

Title - Artist
0:00