ffmpeg指令解读海康威视摄像头
这里贴一个官网链接:http://ffmpeg.org/ffmpeg.html
一、ffmpeg -re -rtsp_transport tcp -i "rtsp://admin:admin123@192.168.1.68:554/h264/ch1/main/av_stream" -f flv "rtmp://192.168.1.10:1935/webcam/cam01"
先来解读下一引号中的内容:
rtsp://[username]:[password]@[ip]:[port]/[codec]/[channel]/[subtype]/av_stream
rtsp和rtmp:都是一种实时的流传输协议,为什么要做rtsp到remp的转换的,我们知道监控摄像机获取的视频是 rtsp 流的格式。 只能在特用的软件中播放,并且只能在相同的网络下播放。用户要求开发一个管理软件根据业务需要来播放视频。最终的目地是要把rtsp 流视频 转换为能在浏览器,手机等主流的播放渠道上能播放的视频(rtmp,mp4,flv,m3u8等格式)。
①username: 用户名。例如admin
②password: 密码。例如admin123
③ip: 为设备IP。例如 192.168.1.68
④port: 端口号默认为554,若为默认可不填写
⑤codec:有h264、MPEG-4、mpeg4这几种
⑥channel: 通道号,起始为1。例如通道1,则为ch1
⑦subtype: 码流类型,主码流为main,辅码流为sub
rtmp://192.168.1.10:1935/webcam/cam01
①rtmp是在TCP之上,默认使用端口1935。
二、ffmpeg -re -rtsp_transport tcp -i %s -c:v libx264 -vf scale=600:-1 -f flv %s -loglevel fatal > /dev/null 2>&1 &
①%s处为流,如:rtsp://admin:admin123@192.168.1.68:554/h264/ch1/main/av_stream,这里是在代码中直接拷贝出来的,方便使用。
②-re :以本地帧频读数据,主要用于模拟捕获设备
③-rtsp_transport tcp: 强制使用tcp读取rtsp流
④-i:输入流
⑤-c:v :-vcodec和-codec:v都是一个意思,都是指定的流设置编码器
⑥libx264:一种编码器
⑦-vf:视频过滤器
⑧-vf scale=600:-1 :在未知视频分辨率的时候,-1的作用是保证纵横比,视频宽600。相关博客
⑨-f:官网中的解释为,强制输入或输出文件格式。 通常会自动为输入文件检测格式,并从输出文件的文件扩展名中猜测该格式,因此在大多数情况下不需要此选项。
⑩-f flv:FLASH VIDEO的简称
⑪-loglevel:字面意思,设置日志等级,fatal指的是指令的错误
⑫fatal > /dev/null 2>&1 :将错误输入到空设备文件,也就是不输出的意思,2表示的是标准错误(0标准输入,1标准输出),2>&1的意思就是讲标准错误(error信息)重定向到标准输出流。总的来说就是不报错,就算报错也只作为输出,不影响后续执行。
三、ffmpeg -re -rtsp_transport tcp -i %s -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 640x360 -q 10 %s -loglevel fatal > /dev/null 2>&1 &
①-vprofile:H.264有四种画质级别baseline, extended, main, high,介绍链接
②-acodec:设置音频编解码器。
③aac:AAC(Advanced Audio Coding),中文名:高级音频编码。
④-ar:设置音频采样频率,44100hz。
⑤-strict -2:跟标准的严格性。
⑥-ac 1:1就是单声道,2就是立体声
⑦-s:尺寸
⑧-q 10 :质量为十张图
shell 解释:ps -ef | grep "rtmp://192.168.1.10:1935/webcam/cam01" | grep -v grep | awk '{print $2}'
①ps -ef :是用标准的格式显示进程
②grep :查找字符串
③grep -v grep:为了去除包含grep的进程行 ,避免影响最终数据的正确性 。-v就是除了的意思
④awk '{print $2}':读取打印信息中以空格为间隔的第二个字段。awk是一种处理文本文件的语言,是一个强大的文本分析工具。
这个指令的作用是查找对应ffmpeg指令的进程号,方便管理。