C#基于FFMPEG进行录制音视频(一)

当前有需求在window系统录制视频(带声音的),需要支持USB摄像头 或者 支持RTSP的网络摄像头  录制的视频文件需要带压缩的,减少文件储存体积

Fmpeg 是领先的多媒体框架,能够解码、编码、转码、混合、解密、流媒体、过滤和播放人类和机器创造的几乎所有东西(百度的),可以使用现成的  此处 [\狗头]

本次开发采用 C#语言 + ffmpeg  来实现录制 一个录制工具

开发环境 .Net 4.0  +  VS2019

录制视频用到的几个FFmpeg的命令行参数说明

参数描述
-threads 2指定使用CPU核数(要控制下,要不然CPU的消耗很高)
-f dshow使用微软的DirectShow采集
-s  1280x360指定使用摄像头的分辨率  (前提是摄像头支持该分辨率)
-i video="摄像头的名字"指定某个摄像头
-vcodec h264视频编码  这里使用h264编码
-i video="麦克风名字"指定某个麦克风
-acodec aac音频编码  这里使用aac编码
-strict -2双声道  可加可不加
-t   120可以指定要录多久就自动停止 单位秒   如果不需要自动停止就不加这项
-vf drawtext=\"格式\"可以设置画面上的遮罩标题
-f  mp4指定输出的视频格式
-s 1280x360指定输出的视频文件的分辨率(和上面的作用不一样哦,有前后之分的)
-y同名就自动覆盖

例如 

ffmpeg.exe  -threads 2  -f dshow  -s  1280x360 -i video="USB Camera"  -vcodec h264 -i video="USB (麦克风)" -acodec aac -f  mp4 -s 1280x360 -y "D://video//test.mp4"


如果要获取MP4视频文件的某帧转为图片,方便做视频的缩略图 可以使用该指令

ffmpeg.exe  -i "D://video//test.mp4" -ss 1 -r 1 -vframes 1 -y  "D://video//test.mp4.jpeg"

思路:

1、创建一个录制的任务管理类,监控当前录制的,等待录制的,需要结束录制的(主要是监控进程句柄是否存在) 

2、创建一个生产录制任务的工厂类,用于生成一个指令和创建一个Process进程任务

3、回调消息,比如录制开始,录制报错(可能没有摄像头,没有麦克风,要考虑进去),录制完成的后续逻辑

使用到的ffmpeg的 shared文件  本次开发使用 ffmpeg-3.4.2-win32   文件列表如下:

您可以网上下载

 

下一章就开始写代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值