如何使用ffmpeg

时间:2016-09-27 20:21:31

标签: macos ffmpeg

我在安装了MacOS Sierra的Mac上。我用自制软件安装了ffmpeg。我通过以下方式列出我的设备:

ffmpeg -f avfoundation -list_devices true -i ""

返回:

[AVFoundation input device @ 0x7fc2de40e840] AVFoundation video devices:
[AVFoundation input device @ 0x7fc2de40e840] [0] FaceTime HD Camera
[AVFoundation input device @ 0x7fc2de40e840] [1] Capture screen 0
[AVFoundation input device @ 0x7fc2de40e840] AVFoundation audio devices:
[AVFoundation input device @ 0x7fc2de40e840] [0] Built-in Microphone

我不需要音频,所以我通过以下方式开始我的5秒屏幕录制:

ffmpeg -f avfoundation -t '5' -i '1' test.mov

它在工作目录中创建一个mov文件,但在5秒后不会停止。事实上,我甚至无法通过按'q'来停止录音。 Ctl-C也不起作用,我通过Activity Monitor强制退出。我尝试了同样的命令,但是使用设备0(FaceTime摄像头),它在5秒后停止。

如果有人可以解决这个谜题,我的下一个问题是如何在quicktime中观看新创建的文件(我想我需要编码或解码或其他东西)因为即使FaceTime视频文件也无法打开QuickTime的。它只是说“文件无法打开”。但是,它确实以VLC开放。

更新: 我在较旧的操作系统(Yosemite)上尝试过此操作并得到了相同的结果(认为它可能是破坏它的新操作系统)。< / p>

1 个答案:

答案 0 :(得分:4)

我猜大多数时候我们会忽略程序警告,但不会忽略这个警告。

如果没有其他选项的录制屏幕:

ffmpeg -f avfoundation -i "1" out.mov

您可能会看到一些警告:

[mov @ 0x7f7fcf19da00] Frame rate very high for a muxer not efficiently supporting it.
Please consider specifying a lower framerate, a different muxer or -vsync 2
No pixel format specified, yuv422p for H.264 encoding chosen.
Use -pix_fmt yuv420p for compatibility with outdated media players.
......
[mov @ 0x7f7fcf19da00] WARNING codec timebase is very high. If duration is too long,
file may not be playable by quicktime. Specify a shorter timebase
or choose different container.

输出视频流fps将为1000k,这是不合理的。

所以我设置了fps选项。我还将像素格式设置为yuv420p,否则quicktime无法播放默认的yuv422p色彩空间:

ffmpeg -f avfoundation -i "1" -pix_fmt yuv420p -r 25 -t 5 out.mov

我正在使用2013年中期的MBP与MacOS sierra,同时也安装了ffmpeg 3.1.1。