如何在Node js中解压缩.prproj文件(premier pro project)



Premiere pro files (.prproj( 是 xml 的压缩文件。如果我在 mac 上使用解压缩实用程序,我可以解压缩它们。但是当我尝试在节点中执行此操作时,我没有成功。

我已经在 npm 上尝试了一些流行的解压缩模块,但没有一个有效。

例:

const decompressUnzip = require('decompress-unzip')()
const main = async () => {
    const file = fs.readFileSync(path.join(__dirname, 'test-project.prproj'))
    console.log(file) // <Buffer 1f 8b 08 00 00 00 00 00 00 0a ec bd 6d 93 9c 38 b6 2e fa 79 f6 af c8 e8 1b d1 fd e5 90 c5 fb 4b bb a7 3b ec 2a 7b ba ce 94 db 15 ae 6a f7 39 e7 ce 8d ... >
    const files = await decompressUnzip(file)
    console.log(files) // []
}
main()

我相信1f 8b 08 00 00是gzip,不确定这是否有区别。

这是文件 https://www.mediafire.com/file/uzw7as8hntokst2/test-project._prproj/file

1f 8b 08是gz压缩文件的开头。 decompress-unzip是一个解压缩zip文件的模块,而不是gz压缩数据。

您可以使用内置的节点 zlib.gunzip 来解压缩该数据。

const fs = require('fs')
const zlib = require('zlib')
const path = require('path')
function main () {
  const file = fs.readFileSync(path.join(__dirname, 'test-project.prproj'))
  const files = zlib.gunzipSync(file)
  console.log(files.toString())
}
main()

作为任何解决方案:

const { promisify } = require('util')
const readFile = promisify(require('fs').readFile)
const gunzip = promisify(require('zlib').gunzip)
const path = require('path')
async function main () {
  const file = await readFile(path.join(__dirname, 'test-project.prproj'))
  const files = await gunzip(file)
  console.log(files.toString())
}
main()

最新更新