项目背景:所要实现的功能类似于直播。整个直播流程要打通,从摄像头拉流,到解码拆帧,然后处理之后编码推流,最后展示。
摄像头:海航威视 DS-IPC-B系列的摄像头。
开发工具:pycharm,ffmpeg/gstreamer
环境:mac,VLC
rstp/rtmp server: node-rtsp-rtmp-server,gst-rtsp-server, rtsp-server,EasyDarWin,Nginx
一、关于开发工具的选择
由于接到项目之前对于视频开发完全没有接触过,所以事先进行调研。之后为了迅速实现整个流程决定采用最简单的方式先跑通。
1. 编解码:ffmpeg
2. server:node-rtsp-rtmp-server。
二、环境搭建
1.安装ffmepg
brew install ffmpeg
2.安装node-rtsp-rtmp-server
按照git上步骤一步一步来就好
三、实验过程
第一步启动server。默认node-rtsp-rtmp-server会把rtmp服务起在1935端口,rtsp服务起在80端口。当然这些都是可以配置的。
第二步拉流加推流。ffmpeg一行命令
ffmpeg -i rtsp://username:password@ip:port -vcodec copy -acodec copy -f flv rtmp://localhost:1935/live/stream
node-rtsp-rtmp-server默认会加live后缀,然后可以自定义哥流名称,我这是用stream。执行ffmpeg命令之后就可以用VLC播放器去查看视频流了。海康摄像头会有2s的延迟,之后在解决这个问题。
这里解释一下上面一行命令,-i 值得是输入源,可以是本地视频文件,也可以直接指定摄像头。如果是本地文件 -i 后面直接跟视频名称。 -vcodec copy指的是视频编码按原来视频编码, -acodec copy指的是音频编码按照原来音频编码, -f 是format的缩写,指的是转换的格式是 flv。然后后面跟的是rtmp server的地址。