Taglib-Sharp支持大文件(64位文件)吗?

4
似乎Taglib-sharp不支持超过4GB的文件。我想编辑一些大型高清电影文件的标题、描述、艺术品等。我在代码中找到了一些评论,似乎暗示着不支持64位文件。有人知道这是否会被支持吗?我也可以考虑其他替代库方案。
参考链接:https://bugzilla.gnome.org/show_bug.cgi?id=739272

你有这个问题的证据吗?在这里查看主文件处理代码:https://github.com/mono/taglib-sharp/blob/master/src/TagLib/File.cs,它似乎处理64位大小的文件(在涉及大小和长度的地方使用“long”)。 - Simon Mourier
当然,问题在于64位文件中的原子大小/偏移量不同,因此当代码尝试读取“MVHD”框(打开文件时查找的第一个框)时,它无法获取正确的字节并失败,说它是无效的MPEG4。是的,我百分之百确定它是有效的MPEG4,使用其他软件读取和播放文件可以正常工作。 - Matthew M. Osborn
1
啊,你的意思是mvhd原子大小是64位。我们可以在网上找到这样一个MP4示例文件吗? - Simon Mourier
很遗憾,我没有一个,并且也找不到一个,但如果你有一个大于4GB的大文件,只需通过手动转码器运行它,并打开大文件支持选项即可。 - Matthew M. Osborn
1
我在2007年编写了这段代码,当时甚至无法想象一个4GB的文件。我想当时我只是针对音频进行编程 :) 看起来可能在转换过程中有一些数据丢失了。浏览一下,我发现Box.SizeBoxHeader.TotalBoxSize从long转换为int。这可能至少是问题的一部分。 - Brian Nickel
1个回答

2

好的,这里有个问题。默认情况下,64位MPEG4的moov盒子放在mdat盒子之后。在taglib-sharp中,只读取文件的前32个字节,如果moov盒子首先出现,则足够了。要解决这个问题,您可以使用mp4box.exe来交换盒子的位置,或者您可以在handbrake中选择“优化Web”选项,这将使moov盒子首先出现。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接