windows利用ffmpeg采集摄像头画面,支持服务启动,支持一键启动

项目情况

1. 我们在windows 系统下采用ffmpeg去采集笔记本电脑摄像头和麦克风的时候需要先获取摄像头和麦克风的信息

2. 因为每台电脑摄像头和麦克风的信息不一样,如果名称不对会导致不能采集 

解决方案

bat脚本实现,先去获取摄像头信息,筛选出摄像头的信息,作为变量传入到ffmpeg采集命令中,去进行采集

脚本 



REM 自动判断权限问题,主动获取管理员权限
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" 
 
if '%errorlevel%' NEQ '0' (  
    goto UACPrompt  
) else ( goto gotAdmin )  
   
:UACPrompt  
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs" 
    echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs" 
    "%temp%\getadmin.vbs" 
    exit /B  
   
:gotAdmin  
    if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )  
    pushd "%CD%" 
    CD /D "%~dp0" 
 
:begin

@echo off&setlocal enabledelayedexpansion
 
::method 1: 固定设备名称
REM ::延时2秒
REM ::ping -n 1 127.0.0.1>nul
REM ffmpeg -f dshow -i audio="麦克风 (HD Webcam C310)"  -ar 16000 -ac 1 %1
 
REM ::del /f /s /q %1
REM ::del /f /s /q plot\\data\\img\\*.*
 
REM ::录制音视频图片
REM ::ffmpeg -f dshow -rtbufsize 200M -i video="Logitech HD Webcam C310":audio="麦克风 (HD Webcam C310)" -pix_fmt yuv420p -ar 48000 -vcodec libx264 -crf 23 -preset veryslow -x264opts b-adapt=2:bframes=0:aq-strength=1:psy-rd=0.8,0 -vsync vfr -acodec aac -bsf:a aac_adtstoasc -f flv %1  -r 1000 -f image2 plot\\data\\img\\image%%3d.jpg
 
 
 
::method 2: 自动获取设备名称
::ffmpeg默认输出utf-8
ffmpeg -list_devices true -f dshow -i dummy 2>temp_utf.txt
 
::utf-8 转 gbk,批处理不支持utf-8文件
iconv.exe -f utf-8 -t gbk temp_utf.txt > temp_gbk.txt


for /f tokens^=2^ delims^=^" %%i in (temp_gbk.txt) do (
    @REM echo  %%i 
    echo  "%%i" > tmp
    goto :end
)


:end

set /p video_device=<./tmp

@REM 从临时文件中获取视频采集设备名称,去掉前后的空格
del /f /s /q mycamera7.mkv
@REM ffmpeg -f dshow -i video=%video_device:~1,-1%  -vcodec libx264   mycamera7.mkv

:: 获取电脑本机IP
for /f "tokens=16" %%i in ('ipconfig ^|find /i "ipv4"') do set ip=%%i
echo %ip%

ffmpeg -r 30  -f dshow -i video=%video_device:~1,-1%  -vcodec libx264 -max_delay 100  -rtsp_transport udp  -g 5 -b 700000  -f rtsp  rtsp://192.168.0.88:554/live/%ip%?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc


::删除临时文件
del /f /s /q temp_utf.txt
del /f /s /q temp_gbk.txt


双击执行bat脚本即可

推流效果

 vlc播放效果

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
敬告:该系列的课程在抓紧录制更新中,敬请大家关注。敬告:本课程项目仅供学习参考,请不要直接商用,概不负责任何法律责任。 该系列的课程涉及:FFmpeg,WebRTC,SRS,Nginx,Darwin,Live555,等。包括:音视频、流媒体、直播、Android、视频监控28181、等。 我将带领大家一起来学习使用FFmpeg开发视频监控项目,并动手操练。具体内容包括: 一、视频监控的架构和流程二、FFmpeg4.3+SDL2+Qt5开发环境的搭建三、FFmpeg的SDK编程回顾总结并操练四、SDL2.0的编程回顾总结并操练五、颜色空间转换RGB和YUV的原理与实战六、Qt5+FFmpeg本地摄像头采集预览实战七、代码封装:摄像头h264/5编码并存储八、Qt5+FFmpeg单路网络摄像头采集预览九、Qt5+FFmpeg单路网络摄像头采集预览录制会看十、onvif与GB/T-28181的简介  音视频与流媒体是一门很复杂的技术,涉及的概念、原理、理论非常多,很多初学者不学 基础理论,而是直接做项目,往往会看到c/c++的代码时一头雾水,不知道代码到底是什么意思,这是为什么呢?   因为没有学习音视频和流媒体的基础理论,就比如学习英语,不学习基本单词,而是天天听英语新闻,总也听不懂。 所以呢,一定要认真学习基础理论,然后再学习播放器、转码器、非编、流媒体直播、视频监控、等等。   梅老师从事音视频与流媒体行业18年;曾在永新视博、中科大洋、百度、美国Harris广播事业部等公司就职,经验丰富;曾亲手主导广电直播全套项目,精通h.264/h.265/aac,曾亲自参与百度app上的网页播放器等实战产品。  目前全身心自主创业,主要聚焦音视频+流媒体行业,精通音视频加密、流媒体在线转码快编等热门产品。  

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三希

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值