关于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 就可以了。

相关推荐
sweethhheart20 小时前
【typora激活使用】mac操作方式
前端·数据库·macos
奔跑吧邓邓子20 小时前
【C++实战(71)】解锁C++音视频开发:FFmpeg从入门到实战
c++·ffmpeg·实战·音视频
骄傲的心别枯萎20 小时前
项目1:FFMPEG推流器讲解(一):FFMPEG重要结构体讲解
linux·ffmpeg·音视频·视频编解码·rv1126
库奇噜啦呼1 天前
【iOS】简单的四则运算
macos·ios·cocoa
HoJunjie2 天前
macOS sequoia 15.7.1 源码安装node14,并加入nvm管理教程
macos·node.js
心灵宝贝2 天前
Principal v6.15 中文汉化版安装教程|Mac .dmg 文件安装步骤详解
macos
你好龙卷风!!!2 天前
mac | Windows 本地部署 Seata1.7.0,Nacos 作为配置中心、注册中心,MySQL 存储信息
windows·mysql·macos
源文雨2 天前
MacOS 下 Warp ping 局域网设备报错 ping: sendto: No route to host 的解决方法
运维·网络协议·安全·macos·网络安全·ping
骄傲的心别枯萎2 天前
项目1:FFMPEG推流器讲解(二):FFMPEG输出模块初始化
linux·ffmpeg·音视频·视频编解码·rv1126
筏.k2 天前
FFmpeg 核心 API 系列:av_read_frame / avcodec_send_packet / avcodec_receive_frame
ffmpeg