首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >修改GDCL MP4 Muxer (不正确的页眉/页脚)

修改GDCL MP4 Muxer (不正确的页眉/页脚)
EN

Stack Overflow用户
提问于 2011-11-29 13:49:24
回答 2查看 587关注 0票数 1

我想修改GDLC MP4 Muxer,以便

  • 它不会将数据发送给其他作者,但它只会将自己记录到文件数据本身.

  • ,它将不是一个muxer,任何more...it都将是一个有mp4 muxer.

的作家

,但首先我必须弄清楚,最后一次被屏蔽的数据停留在哪里,这样我就可以将它写入一个文件.

要想得到一个可播放的文件,我必须把数据写在哪里?

My的尝试:

我输入了调试信息,并看到它调用了追加,并且这个方法定期调用替换.我编写了缓冲区[字节pBuffer],它是为MuxOutput .I的附加方法提供的,get二进制数据有一些标头,但没有把它放在错误的位置,或者我做了wrong.....Then,检查了什么调用- FillSpace methos和YUVVideoHandler::WriteDescriptor.但无法从其他方法中获得有用的信息.

更新

我可以在MuxOutput::Replace method...The上写数据到文件,问题是页眉信息和页脚(文件末尾的表)是错误的.其他数据有效载荷数据是正确的..。文件编写器记录的可播放文件以00 00 0 18...hexadecimal开始,但我的记录数据以00 0 0 0 08十六进制开始.当我使用十六进制编辑器工具用文件编写器生成的文件替换mp4页眉和页脚部件时,文件变得相同并播放。

,可能是什么问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-29 15:21:23

在mpeg4mux::MovieWriter中,MovieWriter是通过指向AtomWriter接口的指针创建的(在我的示例中,由输出引脚通过对下游文件编写器的调用来实现)。所有对文件的写入都是通过这个接口进行的。首先写入数据,然后在停止时写入索引数据(moov块),并更新文件头和数据块头。

G

票数 2
EN

Stack Overflow用户

发布于 2011-12-01 15:46:11

我认为您的问题是由Random File Access需求引起的,File Writer Filter默认支持该需求。您需要遵循的步骤是:

1)在开头创建一个空文件

代码语言:javascript
复制
std::ofstream outFile;
outFile.open("c:\\out.mp4", ios_base::out | ios_base::binary);
outFile.close();

2)打开文件进行随机访问

代码语言:javascript
复制
outFile.open("c:\\out.mp4", ios_base::in | ios_base::out | ios_base::binary);

3)在输出引脚的Write()方法之后添加这些行(用适当的变量名替换位置、缓冲区和bufferSize )

代码语言:javascript
复制
outFile.seekp(position);
outFile.write(buffer, bufferSize);

4)在记录会话结束时(类似于muxer的Close()方法)添加

代码语言:javascript
复制
outFile.close();

你就完蛋了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8311825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档