[Linux]搭建USB摄像头转RTSP服务一例

基于某种原因,需要将以前的摄像头利旧做成网络摄像头,因此开始查资料着手搭建

环境Debian 8.6(arm)

一句话概括,用ffmpge将摄像头/dev/video0流数据压入ffserver,ffserver对外提供流服务

直接上操作

1.首先更新apt源,把靠谱的ffmpeg源加进去

修改/etc/apt/sources.list,添加

deb http://archive.deb-multimedia.org jessie main non-free

2.更新并安装

apt-get install deb-multimedia-keyring
apt-get update
apt-get install ffmpeg libx264-dev

无事安装完成

3.配置文件
(从参考网页拷贝了一例,实际参考http://trac.ffmpeg.org/wiki/ffserver#Creatingtheconfigurationfile)

vim /etc/ffserver.conf

4.启动服务
服务开始提供网络输出,接受设备输入。直接运行

ffserver

5.将设备信号压入服务

ffmpeg -f v4l2 -i /dev/video0 -s 352x240 -r 24 -vcodec libx264 -an http://127.0.0.1:8090/feed1.ffm

我报了2个错,顺便记录下解决过程
a.报error: Missing Audio stream which is needed for this ffm.
解决:在对应<Stream>标签里打开NoAudio标签即可,因为我摄像头不需要声音,需要声音的还没研究
(https://askubuntu.com/questions/644102/ffserver-ffmpeg-missing-audio-stream-which-is-needed)


b.提示我参数有问题(原文找到贴上来),意思是我的比特率,视频宽高设置不匹配,需要调整。
解决:检查屏幕输出,找到

Input #0, video4linux2,v4l2, from '/dev/video0':
Duration: N/A, start: 17745.741744, bitrate: N/A
Stream #0:0: Video: mjpeg, yuvj422p(pc, bt470bg/unknown/unknown), 640x480, 31 tbr, 1000k tbn, 1000k tbc

以及

Output #0, ffm, to 'http://127.0.0.1:8090/feed1.ffm':
Metadata:
creation_time : now
Stream #0:0: Video: mpeg1video, none, 352x240, q=2-31, 256 kb/s, 30 fps, 15 tbc
Metadata:
encoder : Lavc56.26.100 mpeg1video
Stream #0:1: Video: msmpeg4v3 (msmpeg4), none, 352x240, q=2-31, 256 kb/s, 31 fps, 15 tbc
Metadata:
encoder : Lavc56.26.100 msmpeg4
Stream mapping:
Stream #0:0 -> #0:0 (mjpeg (native) -> mpeg1video (native))
Stream #0:0 -> #0:1 (mjpeg (native) -> msmpeg4v3 (msmpeg4))

这两块,检查差异,同时调整/etc/ffserver.conf里的配置项,调整Stream编码和输入编码一致,我这里是mjpeg对应配置文件里的mpjpeg,改了就好了。

6.访问
用播放工具打开http://192.168.0.x:8090/test1.mpg这个地址就可以了。

跑起来了其他的各位就慢慢研究吧。


参考0:https://www.cnblogs.com/chay/p/10553787.html
参考1:https://blog.csdn.net/gaisylly/article/details/50625214
参考2:http://www.deb-multimedia.org/
参考3:https://blog.csdn.net/zong596568821xp/article/details/88540455
参考4:https://github.com/revmischa/rtsp-server(没用过改天用用)
参考5:https://askubuntu.com/questions/644102/ffserver-ffmpeg-missing-audio-stream-which-is-needed

-----
原文地址:https://www.cnblogs.com/boneking/p/15693585.html