Нет прямого способа встроить файл в кодировке H.264 в контейнер MP4 без фактического построения всей файловой структуры с нуля. Это выполнимо , но для этого вам нужно понять формат контейнера mp4 (который в значительной степени основан на контейнере Quicktime MOV) и построить его, используя TypedArrays
, в результате чего вы можете сохранить его как Файл MP4 (я создал вставку здесь , описывающую структуру файла контейнера).
Альтернативный подход состоит в том, чтобы порождать FFmpeg из Node.js (или просто использовать это программное обеспечение напрямую) и предоставлять H.264 в качестве входных данных и сохранять его в виде файла MP4. Это довольно просто. Команда будет выглядеть примерно так:
ffmpeg -i yourH264encodedFileHere -c:v copy mp4FileContainer.mp4
Для запуска этого из узла можно использовать spawn
(см. Пример).
Альтернативой этому голому подходу является установка и использование модуля fluent-ffmpeg NPM , который выполняет всю тяжелую работу.
* * Пример тысяча двадцать-одина * * тысяча двадцать-дв
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)
.
- Чтобы установить FFmpeg на RPI, этот ресурс может быть полезен.