我想将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输出文件?