我想编写一个可以找到媒体文件元信息的程序。我对流行的视频格式很感兴趣,比如avi,mkv,mp4,mov(也可能是其他流行的)。我基本上想得到:
已有mediainfo,但在我的程序中,我想获取有关远程文件的信息,可以通过ftp,http,samba访问;甚至洪流(有一些洪流解决方案,允许读取尚未下载的文件)。
MediaInfo库不支持samba(smb://)和mkv格式(用于运行时)。
另外,我想知道,应该下载多少数据来获取此信息。我不想下载完整的视频文件,因为我没有足够的磁盘空间。
此信息是文件的前1或10或100 KiloBytes吗?如果我知道容器名称和总文件大小,它是否可预测的偏移量?
PS:平台是Linux,语言是C / C ++
答案 0 :(得分:2)
不,您无法预测从文件的“前X字节”中找到您要查找的信息(对于任何已知的X值小于媒体文件的完整大小)。一些容器列出标题中的所有信息。某些(如QuickTime)在文件末尾具有元数据,并且标题中包含元数据偏移量。一些(如AVI)在标题中列出流偏移,在每个流的标题中具有特定的流信息(即,散布在整个文件中)。并且一些使用不同的样式取决于编码方法(例如,快速流式传输与即时编码)。
也就是说,通过请求适当的字节范围,理论上可以做你正在寻找的东西。例如,请求前10K左右,并根据容器类型,解析出您需要读取/解析的其他字节范围,以便查找元数据。但这将是一个非常大的项目。
答案 1 :(得分:1)
这取决于容器格式,avi / mp4 / mkv
的来源答案 2 :(得分:0)
在一般情况下根本没有办法说出来。这一切都取决于远程文件的容器格式,即便如此,您可能需要跳过很多环节才能从50%的文件中获取所有元数据。限制自己使用ISO媒体(QuickTime,MPEG-4,3GPP等),你可以将命中率提高,但即便如此,它也是不明显的。