繁体   English   中英

如何使用FFMPEG访问帧缓冲区?

[英]How to access framebuffer with FFMPEG?

我正在编写一个需要捕获屏幕的应用程序。 我一直在寻找解决方案,互联网说FFMPEG可以做到。 但是我找不到在CODE中执行此操作的方法。 FFMPEG文档似乎非常差。

有人可以告诉我如何使用FFMPEG访问帧缓冲区原始数据吗?

FFmpeg支持通过stdin输入原始帧:

使用arg -f rawvideo ffmpeg将期望帧来自标准输入

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运行QProcess并使用write()方法写入标准输入。

这大致是如何完成它:

QProcess* process;

process->start("ffmpeg.exe", args, QProcess::Unbuffered | QProcess::ReadWrite);
process->waitForStarted();

  ...

process->setProcessChannelMode(QProcess::ForwardedChannels);
videoFrame->GetBytes(&buffer);
process->write(buffer);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM