前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【FFmpeg】音视频录制 ① ( 查询系统中 ffmpeg 可录制的音视频输入设备 | 使用 ffmpeg 命令录制音视频数据 | 录制视频数据命令 |录制音频数据| 同时录制音频和视频数据命令 )

【FFmpeg】音视频录制 ① ( 查询系统中 ffmpeg 可录制的音视频输入设备 | 使用 ffmpeg 命令录制音视频数据 | 录制视频数据命令 |录制音频数据| 同时录制音频和视频数据命令 )

作者头像
韩曙亮
发布2024-05-08 08:10:23
3230
发布2024-05-08 08:10:23
举报
文章被收录于专栏:韩曙亮的移动开发专栏

一、查询系统中 ffmpeg 可录制的音视频输入设备

在 Windows 系统中 , 使用 ffmpeg 命令 录制 音视频 , 需要先获取 系统的 音视频设备 信息 , 录制 音视频 本质上是从 系统音视频设备 中获取数据 ;

执行

代码语言:javascript
复制
ffmpeg -list_devices true -f dshow -i dummy

命令 , 可以获取 系统中 ffmpeg 可用的 DirectShow 音视频输入设备 ;

命令参数解析 :

  • -list_devices true : 列出所有 ffmpeg 的 指定类型的可用设备 ;
  • -f dshow : 设置 输入设备 类型为 dshow , 这是 DirectShow 的简称 , DirectShow 是 Windows 的 音视频设备管理 框架 ;
  • -i dummy : -i 表示 ffmpeg 输入文件或设备 , dummy 指的是虚拟的输入设备 , 该参数的作用是 指定 ffmpeg 可用的 dshow 虚拟输入设备。

执行结果如下 :

代码语言:javascript
复制
[dshow @ 000001e0034ade00] DirectShow video devices (some may be both video and audio devices)
[dshow @ 000001e0034ade00] Could not enumerate video devices (or none found).
[dshow @ 000001e0034ade00] DirectShow audio devices
[dshow @ 000001e0034ade00]  "立体声混音 (Realtek(R) Audio)"
[dshow @ 000001e0034ade00]     Alternative name "@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{348B8A31-CF2E-42D5-A6B2-862A966A1ED0}"
dummy: Immediate exit requested

上述命令输出结果中 ,

  • 视频设备 DirectShow video devices 的查询结果是 " Could not enumerate video devices (or none found). " 没有找到可用的视频设备 ;
  • 音频设备 DirectShow audio devices 的查询结果是 “立体声混音 (Realtek® Audio)” 可使用该设备录制音频 ;

二、使用 ffmpeg 命令录制音视频数据


1、录制视频数据命令

执行

代码语言:javascript
复制
ffmpeg -f gdigrab -framerate 30 -offset_x 0 -offset_y 0 -video_size 1920x1080 -i desktop -c:v libx264 -preset ultrafast output.mp4

命令 , 可以在 Windows 中 , 捕获视频数据 ,

上述命令参数解析 :

  • -f gdigrab : 设置 录制视频 的 输入格式为 gdigrab , Windows 上使用该方式捕获视频 , Linux 中设置的是 -f x11grab 参数 ;
  • -framerate 30 : 设置 录制屏幕 的 帧率 为 30 FPS ;
  • -offset_x 0 -offset_y 0 : 设置 录制区域的偏移量 , 也就是 视频的左上角 所在的 屏幕中的位置 , 这里设置为屏幕的左上角 , 配合下面的 1920x1080 也就是全屏录制 ;
  • -video_size 1920x1080 : 设置 录制视频尺寸为 1920x1080 , 这也是屏幕的分辨率 ;
  • -i desktop : 设置录制视频的 输入设备或文件 为系统桌面 ;
  • -c:v libx264 : 设置 视频编码器 为 libx264 ;
  • -preset ultrafast : 设置编码速度为 ultrafast ;

执行过程中 , 最后一行实时动态更新当前的 帧数 , fps , 大小 等参数 ;

执行结果如下 , 输出的 output.mp4 文件属性如下 :

2、录制音频数据命令

执行

代码语言:javascript
复制
ffmpeg -f dshow -i audio="立体声混音 (Realtek(R) Audio)" -c:a aac output.aac

命令 , 执行过程中 会停在一行中 , 实时显示视频录制的信息 ,

参数解析 :

  • -f dshow : 指定输入设备类型为 dshow , 即 DirectShow 设备 , 在 Linux 中设置 -f x11grab 参数 ;
  • -i audio="立体声混音 (Realtek(R) Audio)" : 设置 音频输入设备为 系统声音 ;
  • -c:a aac : 设置 音频编解码器 为 AAC 格式 ;

按下 Ctrl + C 组合键后 , 就会终止音频录制 ;

3、同时录制音频和视频数据命令

执行

代码语言:javascript
复制
ffmpeg -f gdigrab -framerate 30 -offset_x 0 -offset_y 0 -video_size 1920x1080 -i desktop -f dshow -i audio="立体声混音 (Realtek(R) Audio)" -c:v libx264 -c:a aac -preset ultrafast -strict experimental output.mp4

命令 , 可以同时录制 视频 和 音频 到 输出文件中 , 录制视频的命令 与 上面的命令参数相同 , 只是在上述录制视频的基础上 , 增加了 -f dshow -i audio="立体声混音 (Realtek(R) Audio)" 选项 ,

这个音频的设备 是通过 执行

代码语言:javascript
复制
ffmpeg -list_devices true -f dshow -i dummy

命令 获得的 ;

执行过程中 , 在最后一行显示实时录制信息 ;

按下 Ctrl + C 键 停止录制 , 录制后的视频可以正常播放 ;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-05-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、查询系统中 ffmpeg 可录制的音视频输入设备
  • 二、使用 ffmpeg 命令录制音视频数据
    • 1、录制视频数据命令
      • 2、录制音频数据命令
        • 3、同时录制音频和视频数据命令
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档