• ffmpeg@音视频工具@音视频合并


    ffmpeg

    • FFmpeg中文网 (github.net.cn)

    • FFmpeg 是一款强大的开源跨平台音视频处理工具集,它包含了一系列命令行工具以及用于音频和视频编码解码、格式转换、抓取、流化等功能的库。FFmpeg 支持多种视频、音频格式和编解码器,能够进行音视频的压缩、封装、转码、分割、合并、过滤、抓取屏幕、推流到服务器等多种操作。

      它的主要组成部分包括:

      1. ffmpeg:命令行工具,用于转换音频、视频文件格式,或者对它们进行各种复杂的处理操作,例如混流、抽取音轨、添加字幕等。
      2. ffprobe:用于获取媒体文件的元数据信息,包括容器格式、音视频流的具体参数等。
      3. ffplay:轻量级的媒体播放器,主要用于快速测试FFmpeg编码或解码的效果。
    • FFmpeg 项目拥有高度可移植性,可以在 Linux、Windows、Mac OS X 及其他多种操作系统环境下编译运行。其内部的 libavcodec 库包含了大量的音频视频编解码器实现,其中许多是从零开始开发的,旨在提供高效、高质量的编解码能力。

    • FFmpeg 使用 LGPL 或 GPL 许可证,这意味着它是自由软件,允许用户自由下载、使用、修改和分发代码。由于其广泛的功能和灵活性,FFmpeg 在多媒体开发领域被广泛应用,是许多视频编辑软件、流媒体服务、网络传输工具背后的基石技术之一。

    特点

    • 强大,免费,灵活,无广告
    • 命令行操作

    下载

    • Download FFmpeg

    • windows版本:Builds - CODEX FFMPEG @ gyan.dev,提供了多个版本,点击文件名直接下载即可(可能没有提供单独的下载按钮)

      • 可执行文件

        PS>ls
        
                Directory: C:\exes\ffmpeg\bin
        
        
        Mode                LastWriteTime         Length Name
        ----                -------------         ------ ----
        -a---         2/29/2024   6:06 PM       84847616 󰣆  ffmpeg.exe
        -a---         2/29/2024   6:06 PM       84639744 󰣆  ffplay.exe
        -a---         2/29/2024   6:06 PM       84680704 󰣆  ffprobe.exe
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
    • 其他版本下载比较直接

    使用

    • 如果只是偶尔用用简单的功能,可以借助**大模型**来使用,比如我们要合并一个视频和音频,如果不想查看文档,可以用大模型搜一下,看看例子就行,总体来说还算方便,不需要下载一个软件,也不需要安装就能够运行(顶多配置以下路径,或者把需要处理的文件拖到ffmpeg所在目录下进行操作)
    • 事实上,命令行工具的使用,现阶段大模型可以直接给出教程,复制粘贴,稍微修改一下就能用,但是图形界面的软件使用,大模型给出的结果往往有偏差,并且难以给出图文教程
    • ffmpeg主要是命令行的形式的,这意味着我们可以编制脚本做批处理,或者嵌入到其他应用中,是比图形界面灵活的
    • 其他的软件有的插入广告啊,教程里也有广告烦得很,找到一个好用的还不容易

    将视频和音频合并

    • 相关软件很多,比如VLC等,这里用ffmpeg

    • 假设我从某处下载了音视频分离的资源,可以使用ffmpeg合并它们

    • 使用FFmpeg合并音频和视频,你可以根据不同的需求和场景采用不同方法。这里提供一种基本的无损合并方法,前提条件是音频和视频流已经同步并且具有兼容的参数(如帧率、分辨率、采样率等)。

    • 假设你有一个视频文件 input_video.mp4 和一个音频文件 input_audio.mp3,你想将音频替换到视频文件中,同时保持视频部分不变,可以这样做:

      ffmpeg -i input_video.mp4 -i input_audio.mp3 -c:v copy -c:a aac -map 0:v:0 -map 1:a:0 output.mp4
      
      • 1

      这个命令的意思是:

      • -i input_video.mp4-i input_audio.mp3 分别指定输入的视频和音频文件。
      • -c:v copy 表示视频流直接复制(无损),不进行转码。
      • -c:a aac 指定输出音频流编码为AAC(如果目标容器支持aac,且原mp3音频需要被转码以适应容器要求)。
      • -map 0:v:0 选取第一个输入文件的第一个视频流。
      • -map 1:a:0 选取第二个输入文件的第一个音频流。
      • output.mp4 是合并后输出的文件名。
    • PS BAT [11:37:09 AM] [C:\Users\cxxu\Downloads]
      [🔋 102%] MEM:71.01% [5.57/7.85] GB |ls
      
              Directory: C:\Users\cxxu\Downloads
      
      
      Mode                LastWriteTime         Length Name
      ----                -------------         ------ ----
      d----         2/28/2024   8:58 PM                  Documents
      d----          3/4/2024  11:20 AM                  ffmpeg-2024-02-29-git-4a134eb14a-essentials_build
      -a---          3/4/2024  11:06 AM       32204639   DownKyi-1.6.1.zip
      -a---          3/4/2024  11:19 AM       27260421   ffmpeg-2024-02-29-git-4a134eb14a-essentials_build.7z
      -a---          3/4/2024  11:16 AM        1379060   kk.mp3
      -a---          3/4/2024  10:56 AM        4960232   kk.mp4
      -a---          3/4/2024  11:25 AM        7739933   output.mp4
      
      PS BAT [11:37:21 AM] [C:\Users\cxxu\Downloads]
      [🔋 102%] MEM:72.27% [5.67/7.85] GB |ffmpeg -i kk.mp4 -i kk.mp3 -c:v copy -c:a aac -map 0:v:0 -map 1:a:0 output2.mp4
      ffmpeg version 2024-02-29-git-4a134eb14a-essentials_build-www.gyan.dev Copyright (c) 2000-2024 the FFmpeg developers
        built with gcc 13.2.0 (Rev5, Built by MSYS2 project)
        configuration: --enable-gpl --enable-version3 --enable-static --pkg-config=pkgconf --disable-
        
        ..........
        
        libavfilter     9. 17.100 /  9. 17.100
        libswscale      7.  6.100 /  7.  6.100
        libswresample   4. 13.100 /  4. 13.100
        libpostproc    57.  4.100 / 57.  4.100
      Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'kk.mp4':
        Metadata:
          major_brand     : iso5
          minor_version   : 1
          compatible_brands: iso5dsmsmsixdash
          encoder         : Lavf58.29.100
          description     : Packed by Bilibili XCoder v2.0.2
        Duration: 00:02:44.03, start: 0.000000, bitrate: 241 kb/s
        Stream #0:0[0x1](und): Video: hevc (Main) (hev1 / 0x31766568), yuv420p(tv, bt709), 640x360 [SAR 1:1 DAR 16:9], 6 kb/s, 29.97 fps, 29.97 tbr, 16k tbn (default)
            Metadata:
              handler_name    : VideoHandler
              vendor_id       : [0][0][0][0]
      Input #1, mov,mp4,m4a,3gp,3g2,mj2, from 'kk.mp3':
        Metadata:
          major_brand     : iso5
          minor_version   : 1
          compatible_brands: avc1iso5dsmsmsixdash
          encoder         : Lavf57.71.100
          description     : Packed by Bilibili XCoder v2.0.2
        Duration: 00:02:44.05, start: 0.000000, bitrate: 67 kb/s
        Stream #1:0[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 2 kb/s (default)
            Metadata:
              handler_name    : SoundHandler
              vendor_id       : [0][0][0][0]
      Stream mapping:
        Stream #0:0 -> #0:0 (copy)
        Stream #1:0 -> #0:1 (aac (native) -> aac (native))
      Press [q] to stop, [?] for help
      Output #0, mp4, to 'output2.mp4':
        Metadata:
          major_brand     : iso5
          minor_version   : 1
          compatible_brands: iso5dsmsmsixdash
          description     : Packed by Bilibili XCoder v2.0.2
          encoder         : Lavf60.22.101
        Stream #0:0(und): Video: hevc (Main) (hev1 / 0x31766568), yuv420p(tv, bt709), 640x360 [SAR 1:1 DAR 16:9], q=2-31, 6 kb/s, 29.97 fps, 29.97 tbr, 16k tbn (default)
            Metadata:
              handler_name    : VideoHandler
              vendor_id       : [0][0][0][0]
        Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s (default)
            Metadata:
              handler_name    : SoundHandler
              vendor_id       : [0][0][0][0]
              encoder         : Lavc60.40.100 aac
      [out#0/mp4 @ 0000024831eaa980] video:4782KiB audio:2573KiB subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead: 2.767128%
      size=    7559KiB time=00:02:43.89 bitrate= 377.8kbits/s speed=58.8x
      [aac @ 0000024831f7d540] Qavg: 621.202
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
      • 31
      • 32
      • 33
      • 34
      • 35
      • 36
      • 37
      • 38
      • 39
      • 40
      • 41
      • 42
      • 43
      • 44
      • 45
      • 46
      • 47
      • 48
      • 49
      • 50
      • 51
      • 52
      • 53
      • 54
      • 55
      • 56
      • 57
      • 58
      • 59
      • 60
      • 61
      • 62
      • 63
      • 64
      • 65
      • 66
      • 67
      • 68
      • 69
      • 70
      • 71
      • 72
      • 73
      • 74
      • 75
  • 相关阅读:
    前端与后端:程序中两个不同的领域
    MySQL MHA高可用集群部署
    毕业工具大全:开题、答辩、格式排版等&stata、spss等多种统计软件、绘图软件(附送教学视频)超200G资料
    Javascript知识【BootStrap】
    骨传导耳机伤耳朵吗?带你一分钟了解骨传导耳机
    windows server2012搭建邮箱服务器+客户端界面(hmailserver+afterlogic)+批量创建邮箱
    这些软件测试面试题如果都会,月薪最少20k+【内附面试宝典】
    C# 泛型详解(泛型类,方法,接口,委托,约束,反射 )
    kohya_ss环境部署及训练
    Golang对接Ldap(保姆级教程:概念&搭建&实战)
  • 原文地址:https://blog.csdn.net/xuchaoxin1375/article/details/136448335