美文网首页
18_视频录制01_命令行

18_视频录制01_命令行

作者: 咸鱼Jay | 来源:发表于2022-11-07 21:31 被阅读0次

本文的主要内容:演示如何利用命令行采集摄像头的视频数据。
阅读本文之前,建议先阅读《07_音频录制01_命令行》对常用命令作一个基本认识。

Windows

dshow支持的设备

ffmpeg -f dshow -list_devices true -i dummy

输出结果大致如下所示。

DirectShow video devices (some may be both video and audio devices)
  "Integrated Camera"
DirectShow audio devices
  "麦克风阵列 (Realtek(R) Audio)"

Integrated Camera是我笔记本上自带的摄像头,等会我们就是通过这个摄像头采集视频数据。

dshow支持的参数

ffmpeg -h demuxer=dshow

输出结果大致如下所示。

dshow indev AVOptions:
  -video_size        <image_size> set video size given a string such as 640x480 or hd720.
  -pixel_format      <pix_fmt>    set video pixel format (default none)
  -framerate         <string>     set video frame rate
  -list_devices      <boolean>    list available devices (default false)
  -list_options      <boolean>    list available options for specified device (default false)
  • -video_size:分辨率
  • -pixel_format:像素格式
  • -framerate:帧率(每秒采集多少帧画面)
  • -list_devices:true表示列出dshow支持的所有设备
  • -list_options:true表示列出特定设备支持的所有参数

摄像头支持的参数

ffmpeg -f dshow -list_options true -i video="Integrated Camera"

输出结果大致如下所示。

DirectShow video device options (from video devices)
 Pin "捕获" (alternative pin name "捕获")
  vcodec=mjpeg  min s=1280x720 fps=30 max s=1280x720 fps=30
  vcodec=mjpeg  min s=320x180 fps=30 max s=320x180 fps=30
  vcodec=mjpeg  min s=320x240 fps=30 max s=320x240 fps=30
  vcodec=mjpeg  min s=352x288 fps=30 max s=352x288 fps=30
  vcodec=mjpeg  min s=424x240 fps=30 max s=424x240 fps=30
  vcodec=mjpeg  min s=640x360 fps=30 max s=640x360 fps=30
  vcodec=mjpeg  min s=640x480 fps=30 max s=640x480 fps=30
  vcodec=mjpeg  min s=848x480 fps=30 max s=848x480 fps=30
  vcodec=mjpeg  min s=960x540 fps=30 max s=960x540 fps=30
  pixel_format=yuyv422  min s=1280x720 fps=10 max s=1280x720 fps=10
  pixel_format=bgr24  min s=1280x720 fps=10 max s=1280x720 fps=10
  pixel_format=yuyv422  min s=320x180 fps=30 max s=320x180 fps=30
  pixel_format=bgr24  min s=320x180 fps=30 max s=320x180 fps=30
  pixel_format=yuyv422  min s=320x240 fps=30 max s=320x240 fps=30
  pixel_format=bgr24  min s=320x240 fps=30 max s=320x240 fps=30
  pixel_format=yuyv422  min s=352x288 fps=30 max s=352x288 fps=30
  pixel_format=bgr24  min s=352x288 fps=30 max s=352x288 fps=30
  pixel_format=yuyv422  min s=424x240 fps=30 max s=424x240 fps=30
  pixel_format=bgr24  min s=424x240 fps=30 max s=424x240 fps=30
  pixel_format=yuyv422  min s=640x360 fps=30 max s=640x360 fps=30
  pixel_format=bgr24  min s=640x360 fps=30 max s=640x360 fps=30
  pixel_format=yuyv422  min s=640x480 fps=30 max s=640x480 fps=30
  pixel_format=bgr24  min s=640x480 fps=30 max s=640x480 fps=30
  pixel_format=yuyv422  min s=848x480 fps=20 max s=848x480 fps=20
  pixel_format=bgr24  min s=848x480 fps=20 max s=848x480 fps=20
  pixel_format=yuyv422  min s=960x540 fps=15 max s=960x540 fps=15
  pixel_format=bgr24  min s=960x540 fps=15 max s=960x540 fps=15

可以看到摄像头支持的分辨率、像素格式、帧率等参数。

录制

ffmpeg -f dshow -i video="Integrated Camera" out.yuv

输出结果大致如下所示。

Input #0, dshow, from 'video=Integrated Camera':
    Stream #0:0: Video: mjpeg, yuvj422p, 1280x720, 30 fps

Output #0, rawvideo, to 'out.yuv':
    Stream #0:0: Video: rawvideo, yuvj422p, 1280x720, 30 fps

根据输出结果,不难看出:

  • 从摄像头采集的数据,最终存成了YUV格式

  • 摄像头的默认参数

    • 分辨率:1280x720
    • 像素格式:yuvj422p
    • 帧率:30fps

所以,播放YUV时的命令如下所示。

  • 需要注意的是:YUV文件中只存储了图像信息,并没有声音信息
  • 因此,播放YUV时是听不到任何声音的
  • ffplay的framerate默认值是25
ffplay -video_size 1280x720 -pixel_format yuvj422p -framerate 30 out.yuv

可以自定义参数进行录制。

ffmpeg -f dshow -video_size 640x480 -pixel_format yuyv422 -framerate 30 -i video="Integrated Camera" out.yuv

播放录制好的YUV。

ffplay -video_size 640x480 -pixel_format yuyv422 -framerate 30 out.yuv

Mac

avfoundation支持的设备

ffmpeg -f avfoundation -list_devices true -i ''

输出结果大致如下所示。

AVFoundation video devices:
[0] FaceTime高清摄像头(内建)
[1] Capture screen 0
AVFoundation audio devices:
[0] Soundflower (64ch)
[1] Edu Audio Device
[2] MacBook Pro麦克风
[3] Soundflower (2ch)

0号设备就是Mac自带的摄像头。

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
  • -video_size:分辨率
  • -pixel_format:像素格式
    • 默认是yuv420p
  • -framerate:帧率(每秒采集多少帧画面)
    • 默认是ntsc,也就是30000/1001,约等于29.970030
  • -list_devices:true表示列出avfoundation支持的所有设备

录制

# 使用0号视频设备
ffmpeg -f avfoundation -i 0 out.yuv

然后你可能会遇到一个错误:这个设备(摄像头)不支持29.970030的帧率。

Selected framerate (29.970030) is not supported by the device

重新设置个30的帧率试试。

ffmpeg -f avfoundation -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
  • 分辨率:1280x720
  • 帧率: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

相关文章

  • 18_视频录制01_命令行

    本文的主要内容:演示如何利用命令行采集摄像头的视频数据。阅读本文之前,建议先阅读《07_音频录制01_命令行[ht...

  • FFmpeg视频录制

    一、Mac 平台 FFmpeg 命令行视频录制 FFmpeg 命令行视频录制的步骤和音频录制步骤类似,首先查看 M...

  • 音视频-视频录制编程

    Mac下ffmpeg视频录制 Mac下ffmpeg音频录制 对比命令行的录制音频和视频. 其实可以猜得到, 视频...

  • 这些有趣的Python库一定会亮到你

    图片处理 Parse Redis dump.rdb youtube-dl下载国外视频 asciinema录制命令行...

  • YUV图像旋转

    手机竖屏录制的视频,PC 播放时需要对解码后的数据做下旋转。 视频旋转角度获取 命令行获取 使用 ffprobe....

  • 这些有趣的Python库一定会亮到你

    图片处理 youtube-dl下载国外视频 asciinema录制命令行操作 查看对象的全部属性和方法 Pytho...

  • 2022.8.12(晴)

    今天核酸检测。18_

  • 专业正版一键解锁,不要太爽,低调使用...

    录制视频是一个很常见的需求,比如给别人录制操作步骤,做B站等视频平台需要录制视频,录制网课等教学课程,录制游戏视频...

  • 《录制视频》

    讲师四期翟冲【原创】分享第604天2018.08.29今天我们几个伙伴一块录制视频,完成幸福家第三阶的作业。因为昨...

  • 视频录制

    https://www.jianshu.com/p/fe00883ad3d2https://www.jianshu...

网友评论

      本文标题:18_视频录制01_命令行

      本文链接:https://www.haomeiwen.com/subject/vyrvtdtx.html