当前位置: 首页 > news >正文

做品牌网站找谁绍兴建设局网站

做品牌网站找谁,绍兴建设局网站,电商网站制作公司,公司域名注册查询录屏软件,我们去网上下载,发现有很多软件都是要收费的!但是录屏功能很难做吗?为啥都需要收费呢? 于是我整了个小demo,用于实现基础的屏幕录制功能。 思路很简单,考虑到 FFMpeg.exe是一个非常成…

录屏软件,我们去网上下载,发现有很多软件都是要收费的!但是录屏功能很难做吗?为啥都需要收费呢?

于是我整了个小demo,用于实现基础的屏幕录制功能。

思路很简单,考虑到 FFMpeg.exe是一个非常成熟的音视频处理软件,而且是开源的。我们完全可以基于 FFMpeg.exe来实现我们的要求。

使用 FFMpeg录屏通常有两种方式:

  1. 基于 gdigrab (使用CPU录制)

  2. 基于 DirectShow (使用显卡录制)

考虑到 gdigrab方式实现更简单,更轻量,兼容性也更好,所以我们采用 gdigrab方案。DirectShow方案需要额外下载 screen-capture-recorder!

基于该方法,主要核心就是 ffmpeg的命令编写,具体命令如下:

ffmpeg -f gdigrab -framerate 30 -offset_x 0 -offset_y 0 -video_size 1920x1080 -i desktop -r 30 -vcodec libx264 -pix_fmt yuv420p -y "output.mp4"

命令说明:


//注意:ffmpeg 的命令输入,也需要考虑输入顺序的。先指定输入参数,再指定输出参数。// -f 表示指定文件格式或采集数据的设备,如果是 DirectShow 方案,就需要指定为 screen-capture-recorder。    //对于输入,如果不指定-f, ffmpeg 会根据输入数据,来判断数据的封装格式.    //对于输出,如果不指定-f, ffmpeg 也可以通过输出文件名进行推导.    
//ffmpeg -formats 可以列出所有的formats
// -framerate 指定录制的视频帧率
// -offset_x -offset_y 指定录制的区域左上角坐标
// -video_size 指定录制的视频尺寸
// -i 指定从哪儿采集数据,它是一个文件索引号。这里是指定输入的视频源。(i 表示input,不一定是表示视频文件,表示输入。如也可以是音频文件输入等)
// -r 指定帧率
// -vcodec 指定编码格式。libx264 这种格式录制出来的视频,清晰度更清晰,占用的文件大小更小,推荐使用。
// -pix_fmt 像素格式,常规使用yuv420p
// -y 表示强制覆盖,如果输出文件已经存在,就覆盖
// 输出文件路径。这里需要注意下:输出文件路径带上 双引号 ,防止不合法路径将命令拆分了。

 为了更方便代码实现相关编码,下面贴上核心代码(附加音视频合并的示例代码):

/// <summary>/// 视频录制命令构建类/// </summary>public class FFMpegScreenRecordArgs : FFMpegArgs{public int Framerate { get; set; }public int Rate { get; set; }public Rect Region { get; set; }public VideoCodec Codec { get; set; }public PixelFormat PixelFormat { get; set; }public string SavePath { get; set; }public override string ToArgs(){ArgsBuilder.SetRecordDevice();ArgsBuilder.SetFramerate(Framerate);ArgsBuilder.SetRecordRect((int)Region.Left, (int)Region.Top);ArgsBuilder.SetVideoSize((int)Region.Width, (int)Region.Height);ArgsBuilder.SetInput();ArgsBuilder.SetRate(Rate);ArgsBuilder.SetCodec(Codec);ArgsBuilder.SetPixFarmat(PixelFormat);return $"{ArgsBuilder.GetArgs()} -y {SavePath}\"";}}/// <summary>/// 音视频合成构建类/// </summary>public class FFMpegAVSynthesisArgs : FFMpegArgs{public string InputAudioPath { get; set; }public string InputVideoPath { get; set; }public string OutputVideoPath { get; set; }public override string ToArgs(){this.ArgsBuilder.SetInput(InputAudioPath);this.ArgsBuilder.SetInput(InputVideoPath);this.ArgsBuilder.SetCodec(AudioCodec.copy);this.ArgsBuilder.SetCodec(VideoCodec.copy);return $"{ArgsBuilder.GetArgs()} \"{OutputVideoPath}\"";}}//基础命名构建类public class FFmpegArgsBuilder{protected readonly List<string> Args = new List<string>();public FFmpegArgsBuilder AddArg<T>(string Key, T Value){Args.Add($"-{Key} {Value}");return this;}public virtual string GetArgs(){return string.Join(" ", Args);}public void Reset(){Args.Clear();}#region argspublic FFmpegArgsBuilder SetRecordRect(int x, int y){AddArg("offset_x", x);AddArg("offset_y", y);return this;}public FFmpegArgsBuilder SetVideoSize(int width, int height){AddArg("video_size", $"{width}x{height}");return this;}public FFmpegArgsBuilder SetInput(string input = "desktop"){AddArg("i", input);return this;}public FFmpegArgsBuilder SetFramerate(int framerate){AddArg("framerate", framerate);return this;}public FFmpegArgsBuilder SetRate(int rate){AddArg("r", rate);return this;}public FFmpegArgsBuilder SetRecordDevice(string device = "gdigrab"){AddArg("f", device);return this;}public FFmpegArgsBuilder SetCodec(VideoCodec codec){            AddArg("vcodec", codec);return this;}public FFmpegArgsBuilder SetCodec(AudioCodec audioCodec){AddArg("acodec", audioCodec);return this;}public FFmpegArgsBuilder SetPixFarmat(PixelFormat x){AddArg("pix_fmt", x);return this;}#endregion}//像素格式public enum PixelFormat{///<summary>/// yuv420p///</summary>yuv420p,//……省略……}//编码格式public enum VideoCodec{///<summary>///      libx264///</summary>libx264,///<summary>///      copy///</summary>copy,//……省略……}/// <summary>///     Audio codec ("ffmpeg -codecs")/// </summary>public enum AudioCodec{///<summary>///      copy///</summary>copy,}

http://www.yayakq.cn/news/557058/

相关文章:

  • 学生怎样做网站wordpress 获取目录结构
  • 网站群建设调研报告windows搭建wordpress博客
  • 怎么用lofter做网站什么网站可以做长图攻略
  • 百度网站地图模板购物网站建设多少钱
  • 做房地产需要做网站吗做网站的职位叫什么
  • 京东商城网站地址宁波城乡建设网
  • 建一个收费网站 怎么收费服务器活动
  • 尤溪住房和城乡建设局网站湛江h5建站
  • 国外专门用于做网站图片的江苏建设职业技术学院
  • 宁波模板建站多少钱设计师培训班
  • 重生做二次元网站seo诊断分析报告
  • 长沙网站排名优化随州最新消息
  • asp网站只能打开首页黄冈app下载推广介绍
  • 有建设银行信用卡怎么登陆不了网站镇江网站建设方案
  • 如何选择企业网站开发wordpress 网站播放器插件下载
  • 体育视频网站建设公司网站是别人做的如何换logo
  • 东原ARC网站建设公司文登住房与建设局网站
  • iOS开发 隐私政策网站怎么做官方网站建设的重要性
  • 个人可以建购物网站吗seo和sem哪个工资高
  • 做外贸的阿里巴巴网站是哪个好汕头高端网站建设方法
  • 郑州做网站软件30天网站建设
  • 泸州网站开发哪个行业必须做网站
  • wordpress 获取当前位置河源网站建设1993seo
  • 天津平台网站建设推荐网站后台 栏目管理
  • 怎么查那家网络公司做的所以网站广东黄页企业名录
  • 网站开发用建立网站的基本条件
  • 如何开发网站帮人做分销网站违法么
  • 公司注册网站需要什么条件大沥南庄网站建设
  • 南沙营销网站建设从广州回来需要隔离吗?
  • 新网站做seo 的效果国内Wordpress博客平台