音视频 day17 视频录制 – 命令行

1. 如何查看 avfoundation 支持的设备?

ffmpeg -f avfoundation -list_devices true -i ''
复制代码
  • 输出结果大致如下所示:
AVFoundation video devices:
[0] FaceTime HD Camera
[1] Capture screen 0
[2] Capture screen 1
AVFoundation audio devices:
[0] Built-in Microphone
复制代码
  • 0 号设备就是 Mac 自带的摄像头

2. 如何看出 avfoundation 支持的参数?

ffmpeg -h demuxer=avfoundation
复制代码
  • 输出结果大致如下所示
AVFoundation indev AVOptions:
  -list_devices      <boolean>    .D........ list available devices (default false)
  -pixel_format      <pix_fmt>    .D........ set pixel format (default yuv420p)
  -framerate         <video_rate> .D........ set frame rate (default "ntsc")
  -video_size        <image_size> .D........ set video size
复制代码

3. 录制视频

# 使用0号视频设备
ffmpeg -f avfoundation -video_size 1280x720 -i 0 out.yuv
复制代码
  • 然后你可能会遇到一个错误:这个设备(摄像头)不支持29.970030的帧率。
Selected framerate (29.970030) is not supported by the device
复制代码
  • 重新设置个 30 的帧率试试
ffmpeg -f avfoundation -video_size 1280x720 -framerate 30 -i 0 out.yuv
复制代码

然后你会看到以下提示信息。

  • 这个设备(摄像头)不支持yuv420p
  • 只支持uyvy422、yuyv422、nv12、0rgb、bgr0
  • 并且自动选择使用uyvy422来替代yuv420p
Selected pixel format (yuv420p) is not supported by the input device.
Supported pixel formats:
  uyvy422
  yuyv422
  nv12
  0rgb
  bgr0
Overriding selected pixel format to use uyvy422 instead.
复制代码

与此同时,也成功开始采集摄像头的视频数据了。

  • 像素格式:uyvy422
  • 分辨率:1280×720
  • 帧率:30
Input #0, avfoundation, from '0':
    Stream #0:0: Video: rawvideo, uyvy422, 1280x720
 
Output #0, rawvideo, to 'out.yuv':
    Stream #0:0: Video: rawvideo, uyvy422, 1280x720, 30 fps

复制代码
  • 播放录制好的YUV。
ffplay -video_size 1280x720 -pixel_format uyvy422 -framerate 30 out.yuv
复制代码
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享