通过混合视频和音频字节数组 FFmpeg & C++ 创建视频文件

问题描述

我捕捉音频和视频。

视频是使用桌面复制 API 捕获的,因此,我获得了 2D 纹理。 这些 2D 纹理是字符数组。

m_immediateContext->copyResource(currTexture,m_acquiredDesktopImage.Get());

D3D11_MAPPED_SUBRESOURCE* resource = new D3D11_MAPPED_SUBRESOURCE;
UINT subresource = D3D11CalcSubresource(0,0);

m_immediateContext->Map(currTexture,subresource,D3D11_MAP_READ_WRITE,resource);

uchar * buffer = new uchar[(m_desc.Height * m_desc.Width * 4)];
const uchar * mappedData = static_cast<uchar *>(resource->pData);
memcpy(buffer,mappedData,m_desc.Height * m_desc.Width * 4);

然后将纹理 2D 转换为 cv::Mat 并使用 OpenCV 编写视频。

使用 WASAPI 捕获的音频,因此,我得到了样本。

BYTE * buffer = new BYTE[(numFramesAvailable * pwfx->nBlockAlign)];
memcpy(buffer,pData,numFramesAvailable * pwfx->nBlockAlign);

这些样本是字节数组,然后写入 WAV 文件

结果,我得到了两个文件 - 视频和音频,它们使用 FFmpeg 合并。

我想跳过视频和音频文件的创建,并立即从原始数据创建一个由两个片段(视频和音频)组成的文件

为了做到这一点,我需要有关 FFmpeg 代码的帮助。 具体来说,就是如何创建和设置正确的输出上下文和输出流,以及如何对原始数据进行编码。

我已经学习了 doc/examples FFmpeg,但仍然无法制作工作代码。所以,我真的需要你们的帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)