C++ 如何使用FFMPEG访问帧缓冲区?
我正在编写一个需要捕获屏幕的应用程序。我已经找到了解决方案,互联网上说FFMPEG可以做到这一点。但我找不到在代码中实现这一点的方法。FFMPEG文档似乎很差C++ 如何使用FFMPEG访问帧缓冲区?,c++,qt,ffmpeg,C++,Qt,Ffmpeg,我正在编写一个需要捕获屏幕的应用程序。我已经找到了解决方案,互联网上说FFMPEG可以做到这一点。但我找不到在代码中实现这一点的方法。FFMPEG文档似乎很差 有人能告诉我如何使用FFMPEG访问帧缓冲区原始数据吗?FFMPEG支持通过标准输入输入的原始帧: 对于arg-f rawvideo,ffmpeg将期望帧来自stdin ffmpeg -r 60 -f rawvideo -pix_fmt uyvy422 -s 1280x720 -i - -threads 0 -preset fast -y
有人能告诉我如何使用FFMPEG访问帧缓冲区原始数据吗?FFMPEG支持通过标准输入输入的原始帧: 对于arg-f rawvideo,ffmpeg将期望帧来自stdin
ffmpeg -r 60 -f rawvideo -pix_fmt uyvy422 -s 1280x720 -i - -threads 0 -preset fast -y -pix_fmt yuv420p output.mp4
你可以检查这个,它有有用的信息
在Qt中,您将使用-f rawvideo运行一个带有ffmpeg的函数,并使用方法写入stdin
这大致是如何完成的:
QProcess* process;
process->start("ffmpeg.exe", args, QProcess::Unbuffered | QProcess::ReadWrite);
process->waitForStarted();
...
process->setProcessChannelMode(QProcess::ForwardedChannels);
videoFrame->GetBytes(&buffer);
process->write(buffer);
我可以通过不启动流程来实现这一点吗?我已经下载了ffmpeg-3.4.1-win32-dev,但是我找不到应该使用哪些函数。ffmpeg还有一个Qt包装器,但是它使用了现在不推荐的方法。您要么使用旧版本的ffmpeg,要么修复代码中的一些方法和定义。