基本命令
ffmpeg获取摄像头信息
ffmpeg -list_devices true -f dshow -i dummy
-list_devices true: 这个参数告诉FFmpeg列出设备列表。true表示要显示详细信息,包括设备名称和描述。
-f dshow: 这个参数指定要使用DirectShow框架,它是Windows平台上的多媒体框架。dshow是DirectShow的缩写。
-i dummy: -i参数表示输入文件或设备。在这个命令中,dummy表示一个虚拟设备。使用虚拟设备可以获取系统中可用的音视频设备列表,而不是实际读取设备的内容。
ffplay 读取摄像头
ffplay -f dshow -i video=" name " -s 1280x720
name 是Alternative name,在摄像头信息中获取替换
推流
UDP推流
ffmpeg -re -i input.mp4 -c copy -f rtsp rtsp://127.0.0.1:8554/stream
TCP推流
ffmpeg -re -i input.mp4 -c copy -rtsp_transport tcp -f rtsp rtsp://127.0.0.1:8554/stream
循环推流
ffmpeg -re -stream_loop -1 -i input.mp4 -c copy -f rtsp rtsp://127.0.0.1:8554/stream
-re 以流的方式读取
-stream_loop 循环读取视频源次数,-1为无限循环
-i 输入的文件
-f 指定的格式
ffmpeg拉流
# ffmpeg:
ffmpeg -stimeout 30000000 -i rtsp://127.0.0.1:8554/stream -c copy output.mp4
-stimeout 30000000 为等待RTSP 流连接的时间,单位为us微秒,30000000 为等待 30 秒,如果连接失败则退出。特别注意该字段要放在rtsp地址之前,否者无效。
ffplay
ffplay rtsp://127.0.0.1:8554/stream
rtsp-simple-server工具
mediamtx
直接下载,双击打开,就能直接在Windows上搭建一个rtsp或rtmp服务器
实现直播效果
获取摄像头数据,推流到rtsp服务器
ffmpeg -f dshow -i video="@device_pnp_\\?\usb#vid_04f2&pidmi_00#6&1c9259a2&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f rtsp rtsp:127.0.0.1:8554/stream
拉流
ffplay -i rtsp:127.0.0.1:8554/stream