【FFMPEG】FFMPEG程序捕获Mac设备流媒体

1. 从ffmpeg官网下载ffmpeg版本,选择Mac版本,其中static版本的程序包含了所有的库,先用这个版本。这个版本只有一个执行程序文件ffmpeg

p.s. 正规做法是用brew install ffmpeg。据说很久以前brew install ffmpeg安装要加个-clang参数,现在已经不用加了。


2. 运行 ./ffmpeg -devices 查看机器上的所有设备

./ffmpeg -devices

ffmpeg version 3.0-tessus Copyright (c) 2000-2016 the FFmpeg developers

  built with Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn)

中间信息略过

Devices:

 D. = Demuxing supported

 .E = Muxing supported

 --

 D  avfoundation    AVFoundation input device

 D  lavfi           Libavfilter virtual input device

其中  avfoundation 就是摄像头的流媒体格式

ffmpeg支持的格式可以用 ./ffmpeg -formats查看


3. 现在 ./ffmpeg -favfoundation -list_devices true -"" 查看device信息

-f 指定的是输入输出格式, -i指定输入的文件/流

./ffmpeg -f avfoundation -list_devices true -i ""

中间信息略过

[AVFoundation input device @ 0x7fd391419da0] AVFoundation video devices:

[AVFoundation input device @ 0x7fd391419da0] [0] FaceTime HD Camera

[AVFoundation input device @ 0x7fd391419da0] [1] Capture screen 0

[AVFoundation input device @ 0x7fd391419da0] AVFoundation audio devices:

[AVFoundation input device @ 0x7fd391419da0] [0] Built-in Microphone

可以看到视频采集有两个设备FaceTime HD CameraCapture screen 0,音频采集有一个设备Built-in Microphone


4. 在ffmpeg中,默认是用序号(index)表示输入输出设备的,[0] FaceTime HD Camera的序号是0,就是第一个设备。[1] Capture screen 0的序号是1,就是第二个设备。

现在试试捕获流

./ffmpeg -f avfoundation -i "1" -target pal-vcd ./hello.mpg

这个打开avfoundation 输入流指定为1,就是捕获屏幕,然后用-target设置输出格式为pal-vcd,文档上说-target支持

vcd, svcd, dvd, dv, dv50 这些格式,并且有时候需要加上pal- ntsc- film-前缀,输出文件为./hello.mpg


捕获摄像头试试

./ffmpeg -f avfoundation -i "0" -target pal-vcd ./hello.mpg

上面方法应该是失败的,提示码率不符,

[avfoundation @ 0x7fd088808400]   1280x720@[1.000000 30.000000]fps

[avfoundation @ 0x7fd088808400]   640x480@[1.000000 30.000000]fps

[avfoundation @ 0x7fd088808400]   320x240@[1.000000 30.000000]fps

0: Input/output error


现在加上码率

./ffmpeg -f avfoundation -framerate 30 -i "0" -target pal-vcd ./hello.mpg

已经可以捕获摄像头了

也可以再加上分辨率

 ./ffmpeg -f avfoundation -framerate 30 -video_device_index 0 -i -s 1280x720 -target pal-vcd ./hello.mpg

这里还可以显式的声明使用视频索引 -video_device_index

还有很多参数可以尝试就不再细说了。

想停止捕获就在shell里面按q键。

Press [q] to stop, [?] for help

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值