如何在 Node.js 中使用 ffmpeg2025年5月3日 | 阅读4分钟 将 FFmpeg 的功能与 Node.js 结合起来,处理音频和视频以进行各种多媒体活动,可以轻松地自动化复杂的流程。本文将引导我们了解在 Node.js 环境中安装和操作 FFmpeg 所需的步骤。 什么是 FFmpeg?它是一个用于流式传输、转换和录制音乐和视频的综合跨平台解决方案,即 FFmpeg。 Libavcodec 是音频/视频编解码器中最出色的库之一。 设置我们的 Node.js 项目首先,确保我们的计算机上安装了 npm 和 Node.js。如果没有,我们可以从官方 Node.js 页面获取它们。 为了开始一个新的 Node.js 项目,为其创建一个新目录 必须安装 fluent-ffmpeg 包,它提供了一种在 Node.js 中使用 FFmpeg 的简单方法 标准用法FFmpeg 将视频文件从一种格式转换为另一种格式的示例。 输出 ![]() 高级功能Node.js 中 ffmpeg() 函数的一些高级功能如下 1. 添加水印视频加水印是一种常见操作。下面是如何在 Node.js 中使用 FFmpeg 为视频添加水印 输出 ![]() 2. 从视频中提取音频此外,ffmpeg 也可用于从视频文件中提取音频。在此示例中,我们可以看到如何在 Node.js 中从视频中提取音频。 输出 ![]() 3. 使用元数据FFmpeg 也可用于读取和写入多媒体文件的元数据。此示例演示如何读取元数据 输出 Metadata: { streams: [ { index: 0, codec_name: 'h264', codec_long_name: 'H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10', profile: 'High', codec_type: 'video', codec_time_base: '1/48', codec_tag_string: 'avc1', codec_tag: '0x31637661', width: 1280, height: 720, coded_width: 1280, coded_height: 720, closed_captions: 0, has_b_frames: 2, sample_aspect_ratio: '1:1', display_aspect_ratio: '16:9', pix_fmt: 'yuv420p', level: 31, color_range: 'tv', color_space: 'bt709', color_transfer: 'bt709', color_primaries: 'bt709', chroma_location: 'left', refs: 1, is_avc: 'true', nal_length_size: '4', r_frame_rate: '24/1', avg_frame_rate: '24/1', time_base: '1/12288', start_pts: 0, start_time: '0.000000', duration_ts: 588288, duration: '47.900000', bit_rate: '1305680', nb_frames: '1150', disposition: { default: 1, dub: 0, original: 0, comment: 0, lyrics: 0, karaoke: 0, forced: 0, hearing_impaired: 0, visual_impaired: 0, clean_effects: 0, attached_pic: 0, timed_thumbnails: 0 }, tags: { creation_time: '2020-01-01T00:00:00.000000Z', language: 'eng', handler_name: 'VideoHandler' } }, { index: 1, codec_name: 'aac', codec_long_name: 'AAC (Advanced Audio Codec)', codec_type: 'audio', codec_time_base: '1/44100', codec_tag_string: 'mp4a', codec_tag: '0x6134706d', sample_fmt: 'fltp', sample_rate: '44100', channels: 2, channel_layout: 'stereo', bits_per_sample: 0, r_frame_rate: '0/0', avg_frame_rate: '0/0', time_base: '1/44100', start_pts: 0, start_time: '0.000000', duration_ts: 2110464, duration: '47.861451', bit_rate: '128000', max_bit_rate: '128000', nb_frames: '2087', disposition: { default: 1, dub: 0, original: 0, comment: 0, lyrics: 0, karaoke: 0, forced: 0, hearing_impaired: 0, visual_impaired: 0, clean_effects: 0, attached_pic: 0, timed_thumbnails: 0 }, tags: { creation_time: '2020-01-01T00:00:00.000000Z', language: 'eng', handler_name: 'SoundHandler' } } ], format: { filename: 'input.mp4', nb_streams: 2, nb_programs: 0, format_name: 'mov,mp4,m4a,3gp,3g2,mj2', format_long_name: 'QuickTime / MOV', start_time: '0.000000', duration: '47.900000', size: '7939828', bit_rate: '1305740', probe_score: 100, tags: { major_brand: 'mp42', minor_version: '0', compatible_brands: 'mp42isom', creation_time: '2020-01-01T00:00:00.000000Z', encoder: 'HandBrake 1.3.3 2020061300' } } } 写入元数据输出 ![]() 4. 错误处理任何程序都需要处理错误。我们可以监听 Fluent-ffmpeg 提供的许多事件来处理失败和其他重要状态 输出 ![]() 结论总而言之,fluent-ffmpeg 包提供了一个强大的工具包,用于处理各种媒体文件操作,使 FFmpeg 易于集成到我们的 Node.js 应用程序中。我们可以转换视频格式。它可以应用水印、提取音频流媒体或管理元数据变得简单。FFmpeg 和 Node.js 提供了一个强大的解决方案。掌握这些方法将使我们能够创建高效、高性能的程序,以优雅和适应性地处理多媒体文件。 |
我们请求您订阅我们的新闻通讯以获取最新更新。