RaspberryPi+Raspivid+FFMEPG
RaspberryPi的摄像头模块是500万像素,加载驱动后可以用ffmpeg编码设备
/dev/video0
输出流,也可以用Raspivid直接调用摄像头编码模块输出h264流。
FFMEPG
摄像头的驱动是在树莓派的内核中的,不用下载和重新编译,直接加载:
sudo modprobe bcm2835_v4l2
可以看到设备就存在了:
winlin@raspberrypi:~$ ll /dev/video0
crw-rw----+ 1 root video 81, 0 Jan 15 03:52 /dev/video0
FFMPEG可以使用SRS来编译:
git clone https://github.com/ossrs/srs.git &&
cd srs && ./configure --pi --with-ffmpeg
流媒体服务器可以用Oryx,具体参考
Usage采集摄像头并输出RTMP:
sudo ~/srs/objs/ffmpeg/bin/ffmpeg -f v4l2 -i /dev/video0 \
-c libx264 -profile:v main -preset:v fast \
-b:v 300k -s 640x480 -r 25 \
-an \
-f flv -y rtmp://127.0.0.1/live/livestream
还可以使用raspivid编码后用ffmpeg转封装输出:
sudo raspivid -fl -t 0 -w 640 -h 480 -b 1200000 -fps 15 \
-pf baseline -o - | ~/srs/objs/ffmpeg/bin/ffmpeg -f h264 -i - \
-c copy -an -f flv -y rtmp://127.0.0.1/live/livestream
可以修改profile为high, main, baseline
可是修改preset为veryfast, fast, medium, slow, slower
FFMEPG+1200kbps+veryfast
本节为采用preset=veryfast,输出1200kbps码率的数据。
| Profile | Preset | Bitrate | Size | FPS | CPU | Memory |
---|
baseline | veryfast | 1200kbps | 640x480 | 15fps | 120% | 81MB |
main | veryfast | 1200kbps | 640x480 | 15fps | 155% | 92MB |
high | veryfast | 1200kbps | 640x480 | 15fps | 156% | 92MB |
以上为480p的数据。
| Profile | Preset | Bitrate | Size | FPS | CPU | Memory |
---|
baseline | veryfast | 1200kbps | 768x576 | 15fps | 160% | 93MB |
main | veryfast | 1200kbps | 768x576 | 15fps | 200% | 109MB |
high | veryfast | 1200kbps | 768x576 | 15fps | 220% | 109MB |
以上为576p的数据。
| Profile | Preset | Bitrate | Size | FPS | CPU | Memory |
---|
baseline | veryfast | 1200kbps | 960x720 | 15fps | 241% | 115MB |
main | veryfast | 1200kbps | 960x720 | 15fps | 308% | 139MB |
high | veryfast | 1200kbps | 960x720 | 15fps | 313% | 140MB |
以上为720p的数据。
| Profile | Preset | Bitrate | Size | FPS | CPU | Memory |
---|
baseline | veryfast | 1200kbps | 1440x1080 | 15fps | 360% | 190MB |
以上为1080p的数据。
FFMEPG+1200kbps+fast
本节为采用preset=fast,输出1200kbps码率的数据。
| Profile | Preset | Bitrate | Size | FPS | CPU | Memory |
---|
baseline | fast | 1200kbps | 640x480 | 15fps | 352% | 103MB |
main | fast | 1200kbps | 640x480 | 15fps | 303% | 115MB |
high | fast | 1200kbps | 640x480 | 15fps | 326% | 115MB |
以上为480p的数据。
| Profile | Preset | Bitrate | Size | FPS | CPU | Memory |
---|
baseline | fast | 1200kbps | 768x576 | 15fps | 366% | 123MB |
以上为576p的数据。
FFMEPG+500kbps+veryfast
本节为采用preset=veryfast,输出500kbps码率的数据。
| Profile | Preset | Bitrate | Size | FPS | CPU | Memory |
---|
baseline | veryfast | 500kbps | 640x480 | 15fps | 116% | 80MB |
main | veryfast | 500kbps | 640x480 | 15fps | 136% | 91MB |
high | veryfast | 500kbps | 640x480 | 15fps | 140% | 92MB |
以上为480p的数据。
| Profile | Preset | Bitrate | Size | FPS | CPU | Memory |
---|
baseline | veryfast | 500kbps | 768x576 | 15fps | 152% | 92MB |
main | veryfast | 500kbps | 768x576 | 15fps | 194% | 108MB |
high | veryfast | 500kbps | 768x576 | 15fps | 189% | 108MB |
以上为576p的数据。
| Profile | Preset | Bitrate | Size | FPS | CPU | Memory |
---|
baseline | veryfast | 500kbps | 960x720 | 15fps | 220% | 114MB |
main | veryfast | 500kbps | 960x720 | 15fps | 264% | 139MB |
high | veryfast | 500kbps | 960x720 | 15fps | 277% | 138MB |
以上为720p的数据。
| Profile | Preset | Bitrate | Size | FPS | CPU | Memory |
---|
baseline | veryfast | 500kbps | 1440x1080 | 15fps | 305% | 188MB |
main | veryfast | 500kbps | 1440x1080 | 15fps | 381% | 239MB |
以上为1080p的数据。
FFMEPG+500kbps+fast
本节为采用preset=fast,输出500kbps码率的数据。
| Profile | Preset | Bitrate | Size | FPS | CPU | Memory |
---|
baseline | fast | 500kbps | 640x480 | 15fps | 296% | 102MB |
main | fast | 500kbps | 640x480 | 15fps | 260% | 114MB |
high | fast | 500kbps | 640x480 | 15fps | 290% | 115MB |
以上为480p的数据。
| Profile | Preset | Bitrate | Size | FPS | CPU | Memory |
---|
baseline | fast | 500kbps | 768x576 | 15fps | 366% | 122MB |
main | fast | 500kbps | 768x576 | 15fps | 369% | 138MB |
以上为576p的数据。
FFMEPG+500kbps+medium
本节为采用preset=medium,输出500kbps码率的数据。
| Profile | Preset | Bitrate | Size | FPS | CPU | Memory |
---|
baseline | medium | 500kbps | 640x480 | 15fps | 334% | 114MB |
main | medium | 500kbps | 640x480 | 15fps | 306% | 128MB |
以上为480p的数据。
| Profile | Preset | Bitrate | Size | FPS | CPU | Memory |
---|
baseline | medium | 500kbps | 768x576 | 15fps | 364% | 139MB |
以上为576p的数据。
RASPIVID
本节采用
raspivid
编码,输出码率不同分辨率的数据。
| Profile | Preset | Bitrate | ABitrate | Size | FPS | CPU | Memory |
---|
high | - | 1200kbps | 488kbps | 640x480 | 15fps | 1% | 4MB |
high | - | 1200kbps | 1280kbps | 768x576 | 15fps | 1% | 4MB |
high | - | 1200kbps | 1440kbps | 960x720 | 15fps | 1% | 4MB |
high | - | 1200kbps | 2000kbps | 1440x1080 | 15fps | 1% | 4MB |
因为raspvid指定的是profile、分辨率和码率,实际上的码率还是根据分辨率和profile决定的,所以指定的码率只是参考。