如何从V4L2读取H.264数据并使用Bento4写入MP4文件

时间:2018-12-06 15:15:33

标签: mp4 h.264 bento

我想将Bento4与Video For Linux 2一起使用,以从硬件编码器读取原始H.264帧并将其写入MP4容器文件中。

HW接口和V4L2部分可以正常工作以写入原始YUV文件。但是Bento4文档尚不清楚如何执行此操作。使用AP4_MemoryByteStream似乎是正确的方向。

  

类AP4_File表示有关MP4文件的所有信息。   在内部,AP4_Atom对象和其他辅助对象的树包含   实际信息。

     

要创建类的实例,调用者   必须传递对AP4_ByteStream对象的引用,该对象代表   文件数据存储。 SDK包含两个抽象的子类   AP4_ByteStream类:用于读取/写入的AP4_FileByteStream   基于磁盘的文件和AP4_MemoryByteStream用于处理内存   文件图像。

有一个将文件从H.264转换为.MP4​​的示例(请参见GitHub source code here)。但是,如何重做以一点一点地获取数据还不清楚...

硬件编码器通过V4L2输出H.264帧,如下所示:

while (running)
{
    // Dequeue a video frame
    ioctl(pThis->mDevFd, VIDIOC_DQBUF, &v4l2Buffer);
    writeBufferToDisk(v4l2Buffer);
}
closeOutputFile();

我将如何替换writeBufferToDisk而不是写入AP4_MemoryByteStream,然后在完成后写出.MP4输出文件?

0 个答案:

没有答案