Ffmpeg 将生H264 NALUs液流包装到类似MP4的容器中

Ffmpeg 将生H264 NALUs液流包装到类似MP4的容器中,ffmpeg,directshow,x264,ms-media-foundation,dxva,Ffmpeg,Directshow,X264,Ms Media Foundation,Dxva,我有一个应用程序,它使用x264 x264_encoder_encode发送通过动态编码生成的原始h264 NALU。我让他们通过简单的TCP,所以我没有错过任何帧。 我需要能够解码这样的流在客户端使用硬件加速在Windows(DXVA2)。我一直在努力寻找一种使用FFMPEG实现这一点的方法。也许更容易尝试媒体基金会或DirectShow,但他们不会接受原始H264。 我需要: 更改服务器应用程序中的代码以返回mp4流。我对x264没有那么丰富的经验。我能够通过调用x264_encoder_e

我有一个应用程序,它使用x264 x264_encoder_encode发送通过动态编码生成的原始h264 NALU。我让他们通过简单的TCP,所以我没有错过任何帧。 我需要能够解码这样的流在客户端使用硬件加速在Windows(DXVA2)。我一直在努力寻找一种使用FFMPEG实现这一点的方法。也许更容易尝试媒体基金会或DirectShow,但他们不会接受原始H264。 我需要:

  • 更改服务器应用程序中的代码以返回mp4流。我对x264没有那么丰富的经验。我能够通过调用x264_encoder_encode获得原始H264,方法是按照这个问题的答案:如何在仍然能够实时流式传输的情况下,从这一点到MP4中包装的内容

  • 我可以在接收端用mp4报头将其包装,并将其输入到可以使用DXVA播放的内容中。我不知道该怎么做

  • 我可以找到另一种方法来加速它,使用DXVA和FFMPEG或者其他一些原始格式的东西

  • 一个重要的限制是,我需要能够在显示每个解码帧之前对其进行预处理。任何在一个步骤中解码和显示的解决方案对我来说都不起作用


    我相信,无论是哪种解决方案,

    < p>我相信你都可以用媒体基础把H.264的包用掉。这本书的第298页有一个例子,它使用了HTTP流媒体基础。
    <>我只是学习媒体基金会,我正试图对你做类似的事情,在我的例子中,我想从RTP包中使用H.264有效载荷,从我的理解来看,这需要定制。从我读到的内容来看,访问解码帧也应该是可能的,因为将组件链接到拓扑结构中似乎具有完全的灵活性。

    DXVA的美丽和速度基本上假设视频呈现给用户,而不是从视频内存读回RAM。要做好准备,从视频存储器中读取数据可能会显得出人意料地慢,并且会扼杀除演示之外的快速硬件辅助解码的整个想法。是的。。。我想我现在必须接受这个事实。是否在某个阶段使用DXVA对帧进行预处理。也许写一个媒体基础过滤器之类的东西?谢谢链接。那本书很好。我敢肯定,如果我建立一个媒体基础改造,我将能够做我想做的事。我还没做完,但看起来很有希望