📅  最后修改于: 2023-12-03 15:30:45.300000             🧑  作者: Mango
本文将介绍如何使用 TypeScript 和 ffmpeg 批量转换文件夹中的 .ts(Transport Stream)文件为 .mp4(MPEG-4 Part 14)文件。
在开始之前,需要确保已经安装了 ffmpeg 工具和 TypeScript。
首先,打开终端或命令行界面,输入以下命令来安装 ffmpeg:
sudo apt update
sudo apt install ffmpeg
安装 TypeScript 可以使用以下命令:
npm install -g typescript
在创建 TypeScript 项目后,我们需要安装一些必要的库,包括 fs 和 child_process,它们将用于读写文件和执行命令。执行以下命令进行安装:
npm install --save-dev @types/fs @types/child_process
接下来,我们需要创建一个 TypeScript 文件,并将以下代码复制到其中:
import { exec } from 'child_process';
import * as fs from 'fs';
const inputFolder = './input';
const outputFolder = './output';
fs.readdir(inputFolder, (err, files) => {
if (err) {
console.error(`Could not read directory ${inputFolder}: ${err.message}`);
return;
}
for (const file of files) {
if (file.endsWith('.ts')) {
const inputFile = `${inputFolder}/${file}`;
const outputFile = `${outputFolder}/${file.replace('.ts', '.mp4')}`;
console.log(`Converting ${inputFile} to ${outputFile}`);
exec(`ffmpeg -i ${inputFile} -c:v copy -c:a copy ${outputFile}`, (error, stdout, stderr) => {
if (error) {
console.error(`Conversion failed for ${inputFile}: ${error.message}`);
return;
}
console.log(`Conversion successful for ${inputFile}`);
});
}
}
});
上述代码中,我们首先指定了输入和输出文件夹的位置。接下来,我们使用 fs.readdir 方法读取输入文件夹中的所有文件。对于每个以 .ts 结尾的文件,我们使用 exec 方法执行 ffmpeg 命令将其转换为 .mp4 文件。我们采用 -c:v copy -c:a copy 选项来直接复制视频和音频轨道以保留视频和音频质量。最后,在每次执行完 ffmpeg 命令后,我们打印出转换成功或失败的消息。
在代码准备好后,我们可以执行以下命令来运行 TypeScript 代码:
tsc && node ./dist/index.js
上述命令将首先编译 TypeScript 代码,并在成功后执行生成的 JavaScript 代码。在完成之后,您应该能够在输出文件夹中找到转换的 .mp4 文件。
在本文中,我们使用 TypeScript 和 ffmpeg 工具成功地批量转换了文件夹中的 .ts 文件为 .mp4 文件。此外,我们使用了一些 Node.js 库和 TypeScript 的功能,例如 fs 和 child_process 库和箭头函数等。通过此示例,我们可以看到 TypeScript 和 Node.js 始终是优秀的选择,无论是在构建新应用程序还是维护旧应用程序。