下面是一条推流的指令:
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 &
ffmpeg -re -rtsp_transport tcp -i \"%s\" -map 0:0 -c:v libx264 -s 640x360 -f flv %s -loglevel fatal > /dev/null 2>&1 &
原文:https://www.cnblogs.com/still-smile/p/13702292.html