📌  相关文章
📜  ffmpeg 批量转换文件夹中的 ts 为 mp4 文件 - TypeScript (1)

📅  最后修改于: 2023-12-03 15:30:45.300000             🧑  作者: Mango

以 ffmpeg 批量转换文件夹中的 ts 为 mp4 文件 - TypeScript

本文将介绍如何使用 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 项目后,我们需要安装一些必要的库,包括 fschild_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 始终是优秀的选择,无论是在构建新应用程序还是维护旧应用程序。