Nodejs 第十六章(ffmpeg)

2023年 9月 16日 53.7k 0

FFmpeg 是一个开源的跨平台多媒体处理工具,可以用于处理音频、视频和多媒体流。它提供了一组强大的命令行工具和库,可以进行视频转码、视频剪辑、音频提取、音视频合并、流媒体传输等操作。

FFmpeg 的主要功能和特性:
  • 格式转换:FFmpeg 可以将一个媒体文件从一种格式转换为另一种格式,支持几乎所有常见的音频和视频格式,包括 MP4、AVI、MKV、MOV、FLV、MP3、AAC 等。
  • 视频处理:FFmpeg 可以进行视频编码、解码、裁剪、旋转、缩放、调整帧率、添加水印等操作。你可以使用它来调整视频的分辨率、剪辑和拼接视频片段,以及对视频进行各种效果处理。
  • 音频处理:FFmpeg 可以进行音频编码、解码、剪辑、混音、音量调节等操作。你可以用它来提取音频轨道、剪辑和拼接音频片段,以及对音频进行降噪、均衡器等处理。
  • 流媒体传输:FFmpeg 支持将音视频流实时传输到网络上,可以用于实时流媒体服务、直播和视频会议等应用场景。
  • 视频处理效率高:FFmpeg 是一个高效的工具,针对处理大型视频文件和高分辨率视频进行了优化,可以在保持良好质量的同时提供较快的处理速度。
  • 跨平台支持:FFmpeg 可以在多个操作系统上运行,包括 Windows、MacOS、Linux 等,同时支持多种硬件加速技术,如 NVIDIA CUDA 和 Intel Quick Sync Video。
  • 安装

    ffmpeg.p2hp.com/download.ht…

    image.png

    选择对应的操作系统进行下载就可以了,下载完成配置一下环境变量就ok了

    输入 ffmpage -version 不报错即可

    image.png

    子进程配合ffmpeg

  • 简单的demo 视频转gif -i 表示输入的意思
  • const {execSync} = require('child_process')
    execSync(`ffmpeg -i test.mp4 test.gif`,{stdio:'inherit'})
    

    image.png

  • 添加水印
  • -vf 就是video filter

    drawtext 添加文字 fontsize 大小 xy垂直水平方向 fontcolor 颜色 text 水印文案 全部小写

    const {execSync} = require('child_process')
    
    execSync(`ffmpeg -i test.mp4 -vf drawtext=text="XMZS":fontsize=30:fontcolor=white:x=10:y=10 test2.mp4`,{stdio:'inherit'})
    

    image.png

  • 视频裁剪 + 控制大小
  • -ss 起始时间

    -to 结束事件

    ss写在 -i的前面可能会导致精度问题,因为视频还没解析就跳转到了相关位置,但是解析速度快

    ss写在 -i后面精度没问题,但是解析速度会变慢

    const {execSync} = require('child_process')
    
    execSync(`ffmpeg -ss 10 -to 20 -i test.mp4  test3.mp4`,{stdio:'inherit'})
    
  • 提取视频的音频
  • const {execSync} = require('child_process')
    execSync(`ffmpeg -i test.mp4 test.mp3`,{stdio:'inherit'})
    

    image.png

  • 去掉水印
  • w h 宽高
    xy 垂直 水平坐标
    delogo使用的过滤参数删除水印

    const {execSync} = require('child_process')
    
    execSync(`ffmpeg -i  test2.mp4 -vf delogo=w=120:h=30:x=10:y=10 test3.mp4`,{stdio:'inherit'})
    

    image.png

    相关文章

    服务器端口转发,带你了解服务器端口转发
    服务器开放端口,服务器开放端口的步骤
    产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
    如何使用 WinGet 下载 Microsoft Store 应用
    百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
    百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

    发布评论