使用Node JS将h264文件隐藏或包装到mp4

问题描述 投票:0回答:2

我正在使用覆盆子pi拍摄视频,我正在寻找将原始h264文件转换为mp4文件,或者将其包装在mp4中,就像使用命令行/ python一样。但是,我希望在Node JS中这样做。似乎有很多节点JS库在npm上使用raspberry pi的mp4-box库。但是,他们都没有适当的文档或似乎符合我的项目的需要。我不知道如果我遗失了什么或者这是不可能的。

javascript node.js raspberry-pi mp4 h.264
2个回答
3
投票

没有直接的方法将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,它可以完成所有繁重的工作。

Example

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需要预先安装并在全局路径中可用。如果您不希望它,您可以使用ffmpeg.setFfmpegPath(pathToFFmpegBin)代替。
  • 要在RPI上安装FFmpeg,this resource可能很有用。

-1
投票

知道mp4(如mkv)是一个容器非常重要。您可以为这些容器添加视频,音频,字幕“图层”。 H.264已经是压缩格式,它不是原始视频格式。

© www.soinside.com 2019 - 2024. All rights reserved.