首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DirectX对FFmpeg

DirectX对FFmpeg
EN

Stack Overflow用户
提问于 2019-01-19 07:04:07
回答 1查看 1.6K关注 0票数 0

我正在根据以下内容决定如何解码接收到的视频帧:

  1. 平台是Windows。
  2. 帧以H264或H265编码。
  3. GPU应该被大量使用。
  4. 当然,我们更喜欢更少的编码和最简单的代码。我们只需要解码并在屏幕上显示结果。不需要录音,什么也不需要。

我仍然是个新手,但我认为人们可以通过directx或ffmpeg直接解码一个帧。我说的对吗?如果是的话,选择哪一种?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-06 20:25:30

对于只使用GPU的简单方法和简单代码,请看一下我使用DirectX:H264Dxva2Decoder的项目

如果您已经准备好编写代码,可以使用我的方法。

如果没有,您可以使用MediaFoundation或FFMPEG,两者都可以完成这项工作。

MediaFoundation是面向C++和COM的。FFMPEG是面向C的。它能给你带来不同。

编辑

您可以使用我的程序,因为您有用H264或H265编码的帧。对于h265,您必须添加额外的代码。

当然,你需要做些修改。是的,您可以不使用文件就将帧发送到DirectX。此项目仅使用avcc视频文件格式,但可对其他情况进行修改。

您不需要原子解析器。例如,如果框架是附件b格式,则需要修改nalu解析器。如果帧为附件-b格式,则还需要修改缓冲机制。

如果您提供用H264编码的帧示例,我可以帮助您。

关于Ffmpeg,根据h264规范,它比我的程序有更少的限制,但没有提供渲染机制。您将不得不混合Ffmepg和我的渲染机制,例如。

或者研究一个像MPC这样的程序来显示这种混合。我再也帮不上忙了。

编辑2

有一件事要知道,你不能直接解码编码的数据包到GPU。你需要先解析它们。这就是为什么有一个nalu解析器(请参阅DXVA_PicParams_H264)。

如果您还没有准备好编写代码并了解它的工作原理,那么使用Ffmpeg,实际上会更简单。你可以专注于渲染,而不是解码。

同样重要的是要知道谁的结果更好,消耗的资源更少(CPU、GPU、RAM (系统内存和图形卡内存),支持更广泛的格式等等。

你需要一个真正的专家..。

如果您编写自己的程序,您将能够优化它,并肯定会得到更好的结果。如果您使用Ffmpeg,并且它在您的上下文中有性能问题,您可能会被阻塞.因为您不会修改Ffmpeg。

你说你会用博世相机。通常,所有编码的视频都将采用相同的格式。因此,一旦您的代码能够解码它,您就不需要所有的Ffmpeg特性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54264842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档