基于某种原因,需要将以前的摄像头利旧做成网络摄像头,因此开始查资料着手搭建
环境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