如何将ffplay作为无窗口进程运行?

23

我正在将ffplay作为后台进程运行,向我的主UI进程提供图像数据。我设置了“SDL_VIDEODRIVER=dummy”来禁止在SDL窗口中显示ffplay视频。

问题是,在视频输出窗口未显示的情况下,ffplay进程仍会出现为应用程序窗口(Dock、CMD+TAB条目等)。我该如何避免这种情况发生?

2个回答

27

对我来说,选项-nodisp很好用(和-autoexit一起使用)。

在Ubuntu 18.04、ffmpeg 3.4.6中测试过:

ffplay -f lavfi -i "sine=frequency=1000:duration=5" -autoexit -nodisp

来源: [FFmpeg-user] ffplay for audio only


已确认-nodisp在Windows 11上也可用。 - Trevor Sullivan

0

在 Mac 上播放 ffplay,需要将 dock 条目添加到 SDLMain.m 中(需要编译)。在 SDLMain.m 中注释以下行后,ffplay 将作为无窗口进程运行。

//#ifdef SDL_USE_CPS
//    {
//        CPSProcessSerNum PSN;
//        /* Tell the dock about us */
//        if (!CPSGetCurrentProcess(&PSN))
//            if (!CPSEnableForegroundOperation(&PSN,0x03,0x3C,0x2C,0x1103))
//                if (!CPSSetFrontProcess(&PSN))
//                    [NSApplication sharedApplication];
//    }
//#endif /* SDL_USE_CPS */

/* Set up the menubar */
//[NSApp setMainMenu:[[NSMenu alloc] init]];
//setApplicationMenu();
//setupWindowMenu();

编辑 这只影响 Mac,因为我们在其他平台上不需要 SDLMain.m 包装器来包装 int main()


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接