Windows下使用FFMPEG摄像头转换m3u8流并通过Nginx展示

首先,先下载相应工具:

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 删除从播放列表中删除的段文件

发表评论

error: Content is protected !!