ffmpeg 5.0版本调试
写法:ffmpeg -rtsp_transport tcp -re -i rtsp://admin:BYTtest2019@192.168.1.2:554/h264/ch1/main/av_stream -q 5 -f mpegts -fflags nobuffer -c:v mpeg1video -an -s 960x540 http://127.0.0.1:12345/demo
本地写法 ffmpeg -timeout 5000000 -rtsp_transport tcp -r 25 -re -i rtsp://admin:hik12345@192.168.11.234:554/h264/ch1/sub/av_stream -q 0 -f mpegts -codec:v mpeg1video -r 25 -an -s 1920x1080 http://localhost:8200/api/stream/upload/
参数
-rtsp_transport tcp:强制使用TCP方式处理rtsp流
-re:以本地帧频读数据,主要用于模拟捕获设备
-i:指定要转换视频的源文件
-q:质量因子
-f:官网中的解释为,强制输入或输出文件格式。 通常会自动为输入文件检测格式,并从输出文件的文件扩展名中猜测该格式,因此在大多数情况下不需要此选项。
-fflags: 设置读取或者写出的格式的形式的标签,分为多种方式:flush_packets,ignidx,genpts,nofillin,noparse,igndts,discardcorrupt,sortdts,keepside,fastseek,latm,nobuffer,bitexact,下面针对这些format读写方式进行一一详解;
flush_packets: 立即将packets数据刷新入文件中;
genpts: 输出是产生pts;
nofillin: 不填写可以精确计算缺失的值;
igndts: 忽略dts;
discardcorrupt: 丢弃损坏的帧;
sortdts: 尝试以dts的顺序为准输出;
keepside: 不合并数据;
fastseek: 快速seek,但是不够精确;
latm: 设置RTP MP4_LATM 生效;
nobuffer: 直接读取或者写出,不存buffer;
bitexact: 不写入随机或者不稳定的数据;
seek2any: 支持随意seek,这个seek可以不以keyframe为参考;
analyzeduration: 指定解析媒体所需要花销的时间,这里设置的值越高,解析的越准确,如果在直播中为了降低延迟,这个可以设置得低一些
codec_whitelist: 设置可以解析的codec的白名单;
format_whitelist: 设置可以解析的format的白名单;
-c:v :-vcodec和-codec:v都是一个意思,都是指定的流设置编码器
-s:视频转换后视频的分辨率
-an 不使能音频纪录
ffmpeg 5.01 static版本 转码服务
ffmpeg -i '1.mp4' -c:v h264 -flags +cgop -g 30 -hls_time 10 -hls_list_size 0 -hls_segment_filename index%3d.ts 'index.m3u8'