关于ffplay在macos上运行奔溃的问题

这个问题大概是由于 MacOS 的问题引起的,奔溃的地方在 SDL2 的代码中,如果直接使用 brew 安装 SDL2就会遇到这个问题,所以需要修改 SDL2源码然后再编译安装。

我这里采用的是 origin/release-2.28.x 分支,修改部分如下:

src/video/cocoa/SDL_cocoamouse. m 文件中:

c 复制代码
/*
把下面这个函数的函数体删除或者注释掉,让他直接返回NULL
*/
@implementation NSCursor (InvisibleCursor)
+ (NSCursor *)invisibleCursor
{
    static NSCursor *invisibleCursor = NULL;
    return invisibleCursor;
}
@end

根目录的 CMakeLists 中:

cmake 复制代码
# set(SDLMAIN_SOURCES ${SDLMAIN_SOURCES} ${N3DS_MAIN_SOURCES}) 注释这一行
set(SDLMAIN_SOURCES ${SDLMAIN_SOURCES} ${N3DS_MAIN_SOURCES} # 添加下面的内容
        src/video/cocoa/SDL_cocoamouse.h
        src/video/cocoa/SDL_cocoamouse.m)

还有一个地方,我没有修改就可以跑了,但是最好修改一下,在 src/video/cocoa/SDL_cocoawindow. m 文件里 :

c 复制代码
/*
把下面这个函数中的部分注释掉就可以了
*/
- (void)resetCursorRects
{
    /* KJSL: temp workaround for crash on Intel MacOS Sequioa 15.1.1 (24B91)

//    [super resetCursorRects];
//    [self addCursorRect:[self bounds]
//                 cursor:Cocoa_GetDesiredCursor()];
     */
}

- (BOOL)acceptsFirstMouse:(NSEvent *)theEvent

然后重新编译,我是吧 SDL2 和 ffmpeg 全部重新编译了一遍,但我估计只要重新编译 SDL2 就可以了。

相关推荐
兵叔物联16 小时前
基于FFmpeg的短视频自动剪辑工具
ffmpeg·音视频
寒水馨17 小时前
macOS下载、安装openclaw-v2026.7.1(附安装包OpenClaw-2026.7.1.dmg)
macos·大模型·github·开源软件·ai助手·openclaw·gpt-5.6
白玉cfc20 小时前
【iOS】MRC和ARC
macos·ios·cocoa
飞雪金灵21 小时前
mac电脑 Maven下载安装和配置环境变量
macos·maven·maven下载安装·mac电脑环境
雨声不在21 小时前
macos 12使用docker
macos·docker·容器
一叶龙洲21 小时前
ubuntu26.04 xfce美化成mac
服务器·ubuntu·macos
李小白杂货铺1 天前
Oh My Zsh 简记
macos·macbook·zsh·主题·插件·oh my zsh·omz
fukai77222 天前
macOS防止休眠的菜单栏小工具
macos
web守墓人2 天前
【go语言】gotar:使用go语言复刻tar命令,并加入7z支持,可独立运行在windows、linux、macos上
linux·macos·golang
之歆3 天前
从 Mac 回到 Windows:用 PowerToys + AutoHotkey 找回熟悉手感
windows·macos