zoukankan      html  css  js  c++  java
  • 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指令的进程号,方便管理。

  • 相关阅读:
    Linux 之dhcp服务搭建
    常用网络指令
    图解:光缆、终端盒、尾纤的作用和接法
    Excel2007给表格设置成只读加密属性 让他人无法修改
    CentOS 安裝 VMware Workstation / VMware Player
    Linux 命令之 grep
    iOS开发UI篇—从代码的逐步优化看MVC
    iOS开发UI篇—字典转模型
    iOS开发UI篇—九宫格坐标计算
    iOS开发UI篇—懒加载
  • 原文地址:https://www.cnblogs.com/still-smile/p/13702292.html
Copyright © 2011-2022 走看看