• FFmpeg部署及操作指南


    什么是FFmpeg

    FFmpeg是一个开源的跨平台音视频处理工具集,可以用于处理、转换、编辑和流媒体音视频文件。它提供了一组强大的命令行工具,可以实现音视频的解码、编码、封装、过滤、转码等功能。

    FFmpeg的功能

    FFmpeg的功能非常多,以下仅列举部分功能:

    1️⃣ 音视频转码、转换: 可以转换音频和视频格式,实现截取、剪辑、合并音视频等操作。
    2️⃣ 流媒体服务器: 可以用于搭建流媒体服务器,实现直播、点播等功能。
    3️⃣ 码流分析: 可以对音视频进行码流分析,获取音视频的编码信息、帧率、码率等参数。
    4️⃣ 多媒体处理: 可以用于提取音视频中的关键帧、添加水印及字幕等操作。
    5️⃣ 音视频参数调整: 可以调整音视频的参数,如分辨率、帧率、码率等。
    6️⃣ 视频剪辑和合并: 可以从视频文件中提取特定片段或者将多个视频文件合并成一个。
    7️⃣ 图片序列转换为视频: 可以将一系列的图片文件转换成视频文件,实现动画效果。
    8️⃣ 视频截图和缩略图生成: 可以从视频中提取静态图像,即截取视频的某一帧作为图片,也可以生成视频的缩略图。
    9️⃣ 视频录制: 可以用来录制屏幕及摄像头等视频。

    安装ffmpeg

    Windows 和 Linux 中安装 ffmpeg 的方法略有不同,下面分别介绍。

    Windows 中安装 ffmpeg

    1. 访问 ffmpeg 官方网站(https://ffmpeg.org/download.html)下载最新版本的二进制文件。
    2. 解压下载的文件到指定目录,例如 C:\Program Files\ffmpeg
    3. 将 ffmpeg 添加到系统环境变量中,以便在命令行中直接使用。具体方法为:右键点击“此电脑”->“属性”->“高级系统设置”->“环境变量”,在“系统变量”中找到“Path”并编辑,将 ffmpeg 的 bin 目录路径添加到其中。
    4. 验证是否安装成功,打开命令提示符或 PowerShell,输入 ffmpeg -version,如果能够输出版本号则说明安装成功。

    Linux 中安装 ffmpeg

    以下是在各个 Linux 发行版中安装 ffmpeg 的命令:

    Debian/Ubuntu

    sudo apt update
    sudo apt install ffmpeg
    
    • 1
    • 2

    Fedora

    sudo dnf update
    sudo dnf install ffmpeg
    
    • 1
    • 2

    CentOS/RHEL

    sudo yum update
    sudo yum install ffmpeg
    
    • 1
    • 2

    Arch Linux

    sudo pacman -Syu
    sudo pacman -S ffmpeg
    
    • 1
    • 2

    openSUSE

    sudo zypper refresh
    sudo zypper install ffmpeg
    
    • 1
    • 2

    请注意,这些命令可能因不同的 Linux 发行版而略有不同。如果您使用的是其他发行版,请查阅其官方文档以获取正确的安装命令

    FFmpeg文件说明

    FFmpeg的Static版本的bin文件夹中只有三个件,分别是:ffmpeg、ffplay、ffprobe,这三个是FFmpeg源代码编译后生成的可执行文件,也就是FFmpeg的三大工具。

    ffmpeg: 用于编解码,ffmpeg的主要工作流程相对比较简单,首先读取输入源。
    ffplay: 用于实时音视频处理及播放。
    ffprobe: 用于分析码流。

    1、格式转换:

    FFmpeg提供了丰富的音视频格式转换功能,其格式转换命令格式为:

    ffmpeg -i 输入文件路径 -b:v 输出视频码率 输出文件路径
    
    • 1

    2、流媒体服务器

    使用FFmpeg搭建流媒体服务器的命令与具体的操作系统和使用的网络协议有关,下面是在Ubuntu系统上使用RTMP协议的示例命令:

    ffmpeg -i input_file.mp4 -f flv rtmp://server_address/app_name/stream_name
    
    • 1

    其中,input_file.mp4是要转码的视频文件,rtmp://server_address/app_name/stream_name是RTMP流的地址,server_address是服务器地址,app_name是应用程序名称,stream_name是流的名称。
    如果需要更详细的信息,请参考FFmpeg官方文档或搜索相关教程。

    3、码流分析

    FFmpeg的码流分析命令是ffprobe。

    FFprobe是用于分析音视频格式信息的一个工具,它可以读取并分析多媒体文件的元数据,比如文件格式、编码方式、封装格式、视频参数、音频参数等。
    使用方法为:ffprobe [options] input_file。

    ffprobe -show_format [FORMAT] filename=[/path/to/]file。
    
    • 1

    4、多媒体处理

    FFmpeg的多媒体处理命令有很多,例如:

    • 剪切某段视频:
    ffmpeg -ss 开始时间 -t 持续时间 -i input_file -vcodec copy -acodec copy output_file
    
    • 1
    • 分离视频音频流并保存为不同文件:
    ffmpeg -i input_file -vcodec copy -an output_file_videoffmpeg -i input_file -acodec copy -vn output_file_audio
    
    • 1
    • 视频解复用:
    ffmpeg -i input_file -vcodec copy -an output_file
    
    • 1
    • 视频转码:
    ffmpeg -i input_file -vcodec new_codec -s new_size -an output_file
    
    • 1

    5、视频合并

    使用FFmpeg视频合并的命令因具体需求而异,但以下是一些常见的命令示例:

    • 横向合并多个视频:
    ffmpeg -i input1.mp4 -i input2.mp4 -lavfi hstack output.mp4
    
    • 1

    其中,input1.mp4和input2.mp4是待合并的视频文件,output.mp4是输出的合并后的视频文件。

    • 纵向合并多个视频:
    ffmpeg -i input1.mp4 -i input2.mp4 -lavfi vstack output.mp4
    
    • 1

    其中,input1.mp4和input2.mp4是待合并的视频文件,output.mp4是输出的合并后的视频文件。

    • 网格合并多个视频:
    ffmpeg -i input1.mp4 -i input2.mp4 -lavfi grid=rows=2:columns=2 output.mp4
    
    • 1

    其中,input1.mp4、input2.mp4等是待合并的视频文件,output.mp4是输出的合并后的视频文件。

    6、录制屏幕

    用 ffmpeg 来录制屏幕,可以使用以下命令:

    ffmpeg -f x11grab -s 分辨率 -i :0.0 -framerate 帧率 输出文件名
    
    • 1

    参数说明:

    • -f 指定输入格式为 X11 Grab(X11 屏幕捕捉)。
    • -s 设置输出视频的分辨率,例如 “1280x720”。
    • -i 后面接 “:0.0”,表示捕获整个屏幕。如果你只想捕获特定窗口,可以将 “:0.0” 替换为相应的窗口编号。
    • -framerate 设置帧率,例如 “30”。
    • 最后是输出文件名,例如 “output.mp4”。

    例如,如果您想要录制一个分辨率为 1280x720、帧率为 30 的视频文件,可以运行以下命令:

    ffmpeg -f x11grab -s 1280x720 -i :0.0 -framerate 30 output.mp4
    
    • 1

    7、录制摄像头

    要使用 ffmpeg 录制摄像头视频,可以使用以下命令:

    ffmpeg -f v4l2 -i /dev/video0 output.mp4
    
    • 1

    其中,-f v4l2 表示使用 Video4Linux2(v4l2)驱动程序进行输入设备的选择。/dev/video0 是摄像头设备的路径,可以根据实际情况进行修改。output.mp4 是输出的视频文件名。

    如果需要指定分辨率和帧率等参数,可以使用类似下面的命令:

    ffmpeg -f v4l2 -i /dev/video0 -s WIDTHxHEIGHT -r FRAME_RATE output.mp4
    
    • 1

    其中,WIDTHxHEIGHT 表示视频的分辨率,例如 1280x720FRAME_RATE 表示视频的帧率,例如 30

  • 相关阅读:
    leetcode每天5题-Day04
    【学习笔记】 CF850F Rainbow Balls
    第二章 基础知识(5) - 异常处理
    S曲线步进电机控制算法 ChatGPT
    js基础之对象
    vite vue3 规范化与Git Hooks
    【工具】MarkDown+Github+PicGo使用
    (附源码)ssm介绍信智能实现系统 毕业设计 260930
    力扣第24题 两两交换链表中的节点 c++精讲 。
    2022年最新宁夏建筑施工物料提升(建筑特种作业)模拟题库及答案
  • 原文地址:https://blog.csdn.net/no1xium/article/details/132192227