可以执行 ffmpeg 而不使用他们的库吗?
Is it okay to execute ffmpeg and do not use their library?
我需要从视频中提取音频并保存。 FFmpeg 有用于此目的的命令。我想知道从我的代码中执行 ffmpeg 而不是使用它们的 API 函数编写代码是否是正确的方法。
这种方式的不足之处在于我使用的是Qt Framework,需要跨平台应用。有时(特别是在 windows 中,因为 PATH 变量不会自动设置,所以调用 ffmpeg 将不起作用)用户需要在命令行中向 运行 指示可执行文件的路径。
所以这两种变体都有可能实现,但哪个是最好的和正确的?
我真的不想用他们的 API 因为它不太容易理解,我自己写代码会花时间。
感谢任何建议!
免责声明:我自己从未将 Qt 与 ffmpeg
一起使用过,但对 Qt 尤其有丰富的经验。
Qt 倾向于尝试在他们的库中包含所有内容,为方便起见包装许多其他内容。大多数时候(我测试过的所有那些),仍然可以很容易地使用原始库而不会遇到麻烦,但是 Qt 促进了集成。
例如:QOpenGLWidget
是 OpenGL
的包装器及其小部件系统,添加了 signals
和 slots
等。我使用普通 OpenGL 进行了一些测试而且效果很好。
在另一个项目中,我们(我的团队,不是我)使用 ffmpeg 在 QtWidget 上显示视频。它适用于有限的问题(由于其他架构要求)。
考虑到您的用例,尤其是您使用 ffmpeg
进行后台处理而不是显示视频,在我看来,您成功的可能性很大。
在你的情况下,使用独立的 ffmpeg 似乎是首选。您必须将 ffmpeg 及其依赖项与您的应用程序捆绑在一起。但是,无需设置或使用 PATH
或其他环境变量来启动 ffmpeg。您应该通过提供 ffmpeg 可执行文件的完整路径来做到这一点。
使用 libav API 确实比较棘手。我想提一下,通常(取决于编解码器)ffmpeg 和 libav 不应被认为是稳定的,在这种情况下,您也应该生成一个单独的进程来保护主要可执行文件免受潜在的崩溃。因此,与第一种方法相比,这种方法的复杂性要高得多。
我需要从视频中提取音频并保存。 FFmpeg 有用于此目的的命令。我想知道从我的代码中执行 ffmpeg 而不是使用它们的 API 函数编写代码是否是正确的方法。
这种方式的不足之处在于我使用的是Qt Framework,需要跨平台应用。有时(特别是在 windows 中,因为 PATH 变量不会自动设置,所以调用 ffmpeg 将不起作用)用户需要在命令行中向 运行 指示可执行文件的路径。
所以这两种变体都有可能实现,但哪个是最好的和正确的?
我真的不想用他们的 API 因为它不太容易理解,我自己写代码会花时间。
感谢任何建议!
免责声明:我自己从未将 Qt 与 ffmpeg
一起使用过,但对 Qt 尤其有丰富的经验。
Qt 倾向于尝试在他们的库中包含所有内容,为方便起见包装许多其他内容。大多数时候(我测试过的所有那些),仍然可以很容易地使用原始库而不会遇到麻烦,但是 Qt 促进了集成。
例如:QOpenGLWidget
是 OpenGL
的包装器及其小部件系统,添加了 signals
和 slots
等。我使用普通 OpenGL 进行了一些测试而且效果很好。
在另一个项目中,我们(我的团队,不是我)使用 ffmpeg 在 QtWidget 上显示视频。它适用于有限的问题(由于其他架构要求)。
考虑到您的用例,尤其是您使用 ffmpeg
进行后台处理而不是显示视频,在我看来,您成功的可能性很大。
在你的情况下,使用独立的 ffmpeg 似乎是首选。您必须将 ffmpeg 及其依赖项与您的应用程序捆绑在一起。但是,无需设置或使用 PATH
或其他环境变量来启动 ffmpeg。您应该通过提供 ffmpeg 可执行文件的完整路径来做到这一点。
使用 libav API 确实比较棘手。我想提一下,通常(取决于编解码器)ffmpeg 和 libav 不应被认为是稳定的,在这种情况下,您也应该生成一个单独的进程来保护主要可执行文件免受潜在的崩溃。因此,与第一种方法相比,这种方法的复杂性要高得多。