Node.js:获取一个mp4文件的视频和音频格式信息

Node.js: get video and audio format information of an mp4 file

本文关键字:的视频 文件 mp4 音频 信息 格式 一个 js 获取 Node      更新时间:2023-09-26

我是node.js的新手。我需要为给定的视频文件提取音频和视频格式(编解码器)信息。多亏了这样的mplayer,我知道如何在bash中做到这一点:

$ mplayer -vo null -ao null -identify -frames 0 myvideo.mp4 2>/dev/null | grep FORMAT
ID_VIDEO_FORMAT=H264
ID_AUDIO_FORMAT=MP4A

我想知道是否有一个npm模块(库)可以让我获得相同的信息。或者,我可以启动上面的命令表单node.js并读取/解析stdout(我认为周围有很多例子)。不过,我更愿意使用node.js的"原生"解决方案。

好的,找到了…

该模块是流畅的ffmpeg(npm install fluent-ffmpeg),以下是如何获取信息:

var ffmpeg = require('fluent-ffmpeg');
ffmpeg.ffprobe('/path/to/my/video.mp4',function(err, metadata) {
  console.log(metadata);
});

或者更具针对性的例子:

var ffmpeg = require('fluent-ffmpeg');
ffmpeg.ffprobe('/path/to/my/video.mp4',function(err, metadata) {
    var audioCodec = null;
    var videoCodec = null;
    metadata.streams.forEach(function(stream){
        if (stream.codec_type === "video")
            videoCodec = stream.codec_name;
        else if (stream.codec_type === "audio")
            audioCodec = stream.codec_name;
    });
    console.log("Video codec: %s'nAudio codec: %s", videoCodec, audioCodec);
});

输出:

Video codec: h264
Audio codec: aac