首先,先下载相应工具:
Nginx:https://nginx.org/en/download.html
FFMPEG:https://ffmpeg.org/download.html
FFMPEG设置
将下载的最新预编译包解压出来:
添加环境变量,使命令行可直接执行程序命令:
添加完成之后,再打开cmd即可直接执行ffmpeg命令。
查看计算机上连接的视频音频设备:
ffmpeg -list_devices true -f dshow -i dummy
读取摄像头:
ffplay -f dshow -i video="@device_pnp_\\?\usb#vid_04f2&pid_b76b&mi_00#6&1b33f4e9&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global" -s 1280x720
Tips:其中的video=”name”中的name就是上面获取的 Alternative name中的内容。
设备名称太长,也可以使用vfwcap格式加索引id来读取:
使用此种方式,处理帧时会有一些错误提示“unable to decode APP fields: Invalid data found when processing input”。
转换为HLS的m3u8格式:
ffmpeg -fflags nobuffer -f dshow -i video="name" -r 30 -hls_flags split_by_time -hls_time 3 -hls_list_size 5 -hls_flags delete_segments -f hls live/stream.m3u8
参数说明
- -fflags nobuffer 减少初始输入流分析期间缓冲引入的延迟
- -r30 帧率为30
- -force_key_frames “expr:gte(t,n_forced*1)” 强制1秒产生一个关键帧;ts分片第一帧必须为关键帧,如果关键帧时长大于下面设置的分片时长,也必须等到下一个关键帧才会重新开始切片
- -hls_time 每个分片的时长(秒)
- -hls_list_size 播放列表中的条目数,0表示无限制
- -f hls 输出格式为HLS
- -hls_flags delete_segments 删除从播放列表中删除的段文件