我正在使用覆盆子pi拍摄视频,我正在寻找将原始h264文件转换为mp4文件,或者将其包装在mp4中,就像使用命令行/ python一样。但是,我希望在Node JS中这样做。似乎有很多节点JS库在npm上使用raspberry pi的mp4-box库。但是,他们都没有适当的文档或似乎符合我的项目的需要。我不知道如果我遗失了什么或者这是不可能的。
没有直接的方法将H.264编码文件嵌入到MP4容器中,而无需从头开始实际构建整个文件结构。这是可行的,但为了做到这一点,你需要了解mp4容器格式(它主要基于Quicktime MOV容器)并使用TypedArrays
构建它,结果你可以保存为MP4文件(我创建了一个paste here描述容器文件结构)。
另一种方法是从Node.js生成FFmpeg(或直接使用该软件)并提供H.264作为输入并将其保存为MP4文件。这很直接。该命令将类似于:
ffmpeg -i yourH264encodedFileHere -c:v copy mp4FileContainer.mp4
要从Node运行它可以使用spawn
(参见示例)。
这种裸骨方法的替代方法是安装和使用fluent-ffmpeg NPM module,它可以完成所有繁重的工作。
var ffmpeg = require("fluent-ffmpeg");
var inFilename = "video.h264";
var outFilename = "video.mp4";
ffmpeg(inFilename)
.outputOptions("-c:v", "copy") // this will copy the data instead or reencode it
.save(outFilename);
几个笔记:
ffmpeg.setFfmpegPath(pathToFFmpegBin)
代替。知道mp4(如mkv)是一个容器非常重要。您可以为这些容器添加视频,音频,字幕“图层”。 H.264已经是压缩格式,它不是原始视频格式。