最近因为汉化PSP游戏的缘故,了解了一些PSP专用视频文件PMF格式的一些知识,因为网上的资料大都年代久远,一些细节语焉不详,所以在尝试制作PMF的过程中遇到了一些问题,经过反复的测试,终于弄明白了一些事情,为了记录这些经验,特写此文,供后来人参考。
一、PMF文件是什么
PMF文件是PSP专用的视频文件格式,本质是封装了H264/AVC编码视频和ATRAC3plus编码音频的容器,这也是为什么一些播放器(如:完美解码)可以播放PMF文件的原因。但是因为ATRAC3plus是索尼的私有编码,没有公开的解码器,所以完美解码虽然可以播放PMF的视频,却无法播放音频。
二、准备工作
1.AVI视频文件,分辨率480x272,无压缩(即编码是Uncompressed)
2.WAV音频文件,44.1kHz,16bit,无压缩(即编码是PCM)
※AVI和WAV文件的编码和参数如果不符合上述要求,在制作过程中可能会报错,无法正确生成目标文件。我测试过FFV1、Huffyuv编码的AVI文件和48kHz的WAV文件,在后续编码阶段会报system error错误。转换软件根据个人喜好选择,我用的是VirtualDub2。
3.索尼官方出品的Umd Stream Composer软件,版本是1.50,网上有泄露版,用于将AVI和WAV文件转换封装为MPS文件。
4.pmftools或PMFCreater,用于将Umd Stream Composer编码完成的MPS文件转换为PMF文件。pmftools是网上大多数资料提到的软件(其实就是个批处理),不太好用,至少我这里测试是失败的。PMFCreater有图形界面,使用非常简单,推荐。
三、具体步骤
1.运行Umd Stream Composer
因为该软件非常古老,根据自述文档,只能运行在WindowsXP以下系统中。我的系统是Win10 x64,直接运行软件会闪退,在XP和98se的虚拟机中同样无法运行,就是下图这个样子。

闪退
经过在外网反复搜索,其实有个非常简单粗暴的解决办法,就是将UmdStreamComposer.exe改名,我这里是改成了Composer.exe,改完之后就不会闪退了。
如果报找不到某某DLL的错误,只需要将runtime文件夹中的三个DLL文件复制到bin文件夹中,就不会报错了。

报错

复制这三个DLL到bin文件夹
如果报下面这个错误,表示软件在当前设备下不支持预览,没关系,我们不需要预览,点确定就行。

不支持预览
2.新建项目
软件运行起来以后,点击左上方的New,弹出Create new clip窗口,Clip name和Project name随便填写,Comment可以不填,点击下一页。

Create new clip
勾选PSP Movie Format选项,点击完成。(如果不勾选PSP Movie Format,后续无法添加视频源。)

勾选PSP Movie Format
3.导入视频源和音频源
点击工具栏的Video Source,弹出Video Source Setting窗口,点击Open,选择准备好的AVI文件,再点击OK。

Video Source Setting
点击工具栏的Audio Source,弹出Audio Source Setting窗口,点击Open,选择准备好的WAV文件,再点击OK。

Audio Source Setting
4.编码
如果AVI和WAV文件都符合要求,在下方的Timeline Viewer窗口中会出现1条Video轨道和2条Audio轨道,两条Audio轨道分别表示左右声道(如果导入的WAV是单声道,这里可能只有一条轨道,未测试)。至于那两个黄灯是什么意思,我也没弄明白,反正不用管。网上还说要把黄灯左边的灯点绿,我猜测那是在有多条轨道时,设定默认轨道用的,这里就不点了。

Timeline Viewer
以上准备就绪后,点击菜单栏Run下面的Encode+Multiplex,弹出Project Progress窗口。

Run
这里有三个进度条,其中Stream1 (2Pass)这个是最慢的,我测试的视频时长1分多钟,这里编码用了几十秒吧。

Project Progress
等到三个进度条都变成Complete时,编码就完成了。Umd Stream Composer的任务结束。

Complete
5.重封装
打开我的文档\UmdStreamComposer\MuxWork\项目名称\00001目录,这里有一个00001.MPS文件。没有的话,说明前面编码没有成功。

00001.MPS
运行PMFCreater,点击左边的browse选择00001.MPS,点击右边的browse选择保存PMF文件的路径,Total Time下面的M或S随便填写一个数字,这里在M处填了1,不管填多少,都没有影响。然后点击Convert。

PMFCreater
弹出Done提示,转换完成,在目标路径下找到PMF文件。

Done
6.测试
把PMF文件拖动到完美解码图标上即可播放视频,如果要测试音频,需要将PMF文件替换ISO中的原文件(一般是用WQSG_UMD,此处不赘述),再用实机或模拟器运行ISO。这里用PPSSPP测试视频和音频都是正常的。

完美解码测试

PPSSPP测试
四、其他说明
以上步骤,除了特别提到的之外,都是使用软件默认设置,即视频平均比特率1000kbps、最大比特率2000kbps、编码模式2PassVBR,音频编码ATRAC3plus、44.1KHZ 2CH、128kbps,测试的视频编码后比ISO中的原视频略小,可以正常替换而不用重新生成ISO。

原版和重新制作的PMF文件大小对比

Video Encode Setting

Audio Encode Setting
如果调高了码率导致文件变大,就不能直接替换原文件了,只能重新生成ISO。当然也可以调低码率达到ISO瘦身的目的,不过应该不会有人这么做了吧。
(完)
mszl100
2023.10.01