【发布时间】:2012-05-09 08:14:20
【问题描述】:
我有一个应用程序可以发送原始 h264 NALU,这些 NALU 是使用 x264 x264_encoder_encode 动态编码生成的。我通过普通的 TCP 获取它们,所以我不会丢失任何帧。 我需要能够使用 Windows 中的硬件加速 (DXVA2) 在客户端中解码这样的流。我一直在努力寻找一种使用 FFMPEG 使其工作的方法。也许尝试 Media Foundation 或 DirectShow 可能更容易,但它们不会采用原始 H264。 我要么需要:
-
更改服务器应用程序的代码以返回 mp4 流。我对x264没有那么有经验。我可以通过调用 x264_encoder_encode 来获得原始 H264,方法是遵循这个问题的答案:How does one encode a series of images into H264 using the x264 C API?我如何才能从这个转到 MP4 中包装的东西,同时仍然能够实时流式传输它
李> 我可以在接收器处用 mp4 标头将其包装起来,然后将其输入到可以使用 DXVA 播放的东西中。我不知道该怎么做
我可以找到另一种方法来加速它,使用带有 FFMPEG 的 DXVA 或其他以原始格式获取它的东西。
一个重要的限制是我需要能够在显示每个解码帧之前对其进行预处理。任何一步完成解码和显示的解决方案都不适合我
两种解决方案都可以
【问题讨论】:
-
DXVA的美观和速度基本上假设视频是呈现给用户的,而不是从视频内存读回 RAM。请做好准备,从视频内存中读取可能会显得异常缓慢,并且会扼杀用于演示以外的其他目的的快速硬件辅助解码的整个想法。 -
是的...我想我现在必须接受这个事实。无论如何在某个阶段使用 DXVA 对帧进行预处理。也许写一个媒体基础过滤器或类似的东西?
标签: ffmpeg directshow x264 ms-media-foundation dxva