Mac使用FFmpeg进行屏幕录制,并使用VLC本地播放

这是一篇关于如何在Mac上使用FFmpeg进行屏幕录制,并使用VLC播放器进行本地播放的教程,默认读者已经安装好了FFmpegVLC播放器。 本文将介绍如何使用FFmpeg命令行工具进行屏幕录制,并通过VLC播放器进行实时播放,对于FFmpegVLC的安装和基础使用,读者可以参考相关文档。

1. Mac上捕获屏幕的FFmpeg输入源

在Mac上,FFmpeg可以使用avfoundation输入源来捕获屏幕内容。要查看可用的设备列表,可以运行以下命令:

bash 复制代码
ffmpeg -f avfoundation -list_devices true -i ""

你会看到类似如下的输出:

bash 复制代码
AVFoundation video devices:
[0] Capture screen 0
[1] FaceTime HD Camera

AVFoundation audio devices:
[0] MacBook Pro Microphone
[1] Multi-Output Device

2. 直播Mac屏幕

假设你要推流到一个 RTMP 服务器(例:rtmp://localhost/live/stream)

2.1 不包含音频的屏幕录制命令:

bash 复制代码
ffmpeg \
  -f avfoundation -framerate 30 -i "0:none" \
  -c:v libx264 -preset veryfast -f flv rtmp://localhost/live/stream

2.2 包含音频的屏幕录制命令:

bash 复制代码
ffmpeg \
  -f avfoundation -framerate 30 -i "0:0" \
  -c:v libx264 -preset veryfast -maxrate 3000k -bufsize 6000k \
  -c:a aac -b:a 128k \
  -f flv rtmp://localhost/live/stream

解释:

  • "0:0" → (屏幕设备 ID : 音频设备 ID)
  • 0 = 主屏幕
  • 0 = 麦克风
  • -framerate 30 → 流畅度佳,CPU占用适中
  • -f flv → RTMP 必须使用 FLV 封装
  • libx264 → 网络直播最稳定

2.3 配置nginx-full

通常路径:

bash 复制代码
/opt/homebrew/etc/nginx/nginx.conf

nginx.conf中添加RTMP模块配置:

nginx 复制代码
rtmp {
    http { ... }

    # 下面是要添加的内容
    server {
        listen 1935;

        application live {
            live on;
            record off;
        }
    }
}

2.4 启动nginx-full

bash 复制代码
brew services start nginx-full

2.5 验证RTMP是否启动成功

bash 复制代码
lsof -i :1935

如果看到 nginx 在监听该端口,说明启动成功

bash 复制代码
nginx   12345   ...   LISTEN

2.6 推流FFmpeg

bash 复制代码
ffmpeg \
  -f avfoundation -framerate 30 -i "0:none" \
  -c:v libx264 -preset veryfast -f flv rtmp://localhost/live/stream

2.7 使用VLC播放RTMP流

打开VLC播放器,选择"打开网络串流",输入以下URL:

bash 复制代码
rtmp://localhost/live/stream

点击"播放",即可观看实时屏幕录制内容。

3. 最后

在本文中,除了介绍如何使用FFmpeg在Mac上进行屏幕录制外,还涵盖了如何配置nginx-full以支持RTMP流的推送和播放。关于nginx-full的更多配置和使用,可以参考相关文档。

我的博客地址

相关推荐
用户84913717547165 小时前
想做护眼工具却脑子一片空白?我用 OpenSpec 把模糊想法聊成了 v0.1
github·vibecoding
wangruofeng6 小时前
git-filter-repo 把 .git 从 112MB 砍到 1.4MB,但漏推 tag 让 clone 又胖回来
github·devops
峰向AI7 小时前
Block 放出大招!Buzz:一个中继统一代码、聊天、CI 全流程
github
dong_junshuai7 小时前
每天一个开源项目#47 4.4K Stars 的 LikeC4:让架构图随代码进化
github
独立开阀者_FwtCoder10 小时前
最近做了一个健身小程序:智形健身助手,健身的佬们来提点意见
前端·javascript·github
paokuflying13 小时前
ffmpeg提取视频中的音频
ffmpeg·音视频
夕夕木各13 小时前
从第一个 PR 到 Vite 官方中文文档维护者
github·vite
隔窗听雨眠15 小时前
GitHub Actions自动化运维实战:从零构建一体化CI/CD流水线
运维·自动化·github
Tirzano15 小时前
java 精简使用ffmpeg
java·开发语言·ffmpeg
dong_junshuai1 天前
每天一个开源项目#46 World Monitor:6.6万星、56层地图的全球情报中枢
github