dpg_dpg格式 -名词解释
关于DPG
此格式是由日本的moonlight先生所写,应用在nds的非官方moonshell软件上,可以让NDS游戏主机播放的影片的格式称谓
所谓dpg,是由mpeg1video与mpeg2 audio两部分构成的
dpg_dpg格式 -详细规格
关于DPG内部详细规格
dpg = moonlight先生特制的header + mpeg2 audio + mpeg1 video
(header的意思为一个文件开头描述内部文件内容的重要信息文件资料)
注意虽然理论上要制作dpg档只需要将mpeg2 audio + mpeg1 video前面放置一个特殊header然后组合即可,但是在转置参数的使用上需要特别注意,否则会造成播放不能或是播放出现意外问题.在最强的画面与最佳的体积间进行抉择,什么才是最佳的转置方式恐怕连月光先生都不是很清楚吧?
如何自行制作DPG档
制作dpg档最大的问题在于,由于header区域需要有对于video frame的总数定义,因此如何正确撷取video frame的数量就是转置的问题关键所在
就是因为需要frame的信息参数去建立header,所以moonlight先生的转档软件支持的格式才有限(目前moonlight支持的格式有限,可以转置的都是文件本身就带有frame数量参数在的格式文件),另一款BatchDPG软件利用的是menocder在转档时的stdout信息,撷取其最后统计出的frame数目,来当成建立header所需的参数
至于如何撷取mencoder在转档时输出的信息画面,这就看个人技术了,但是也并非是很复杂的技巧.
BatchDPG里面有附一个headrmaker.exe,可以用于建立必要的header信息档,使用参数是
headermaker.exe frames fps audio_sample_rate mp2_file_size m1v_file_sizeheader_name
frames : 影片frame张数
fps : 影片播放正确的速率
audio_sample_rate : 播放取样率
mp2_file_szie : mp2文件大小,单位是byte
m1v_file_szie : m1v mpeg1 video文件大小,单位是byte
header_name : 输出的header名称
最后你之需要将header.m1v.mp2文件copy在一起就好了.
copy/b"xxx.head"+"xxx.mp2"+"xxx.m1v""xxx.dpg"
注意上面指令的关系前后不能改变,header要放在开头,mp2其次,m1v最后.
上面的信息与技巧参考于网络与BatchDPG与mooshell dpgenc两个转档程序的原始码分析.
后记
实话说NDS播放DPG的效果并不让人满意,而且DPG档案的建立略显烦琐,文件格式的设计不很严谨,相关的转档软件也极少(似乎只有BatchDPG与moonshell dpgenc两种),画面品质更是尚待加强,希望日后有以MPEG4为基础的播放程序出现(ARM946E-S67MHz处理器可能有些吃紧,但相信若是完美最佳化,应该可以达成)。。。