3
3月
2023
在 Linux 中使用 DVD,ffmpeg 程序
18:52

在 Linux 中使用 DVD,ffmpeg 程序

3 3月 2023 18:52

我的同事偶尔会把DVD光盘里保存的电影导入电脑,转换成MPEG4文件。我尝试解决这个问题,并分享一下我处理DVD的经验。

简介

这篇文章是为我自己写的 - 总结在 Linux 中使用 DVD 视频的应用程序的经验,例如:

  • 从完成的 DVD 中捕获视频
  • 提取视频和声音
  • 剪掉碎片
  • 将视频和声音转换为其他格式
  • 将多个片段合并到一个文件中
  • 录制到另一个磁盘。
    第 10 节提供了使用 DVD 的命令。
    还简要讨论了在 DVD 设计程序中创作 DVD 的问题。

DVD 视频的历史

最初,CD-R 的读取速度较低(1 倍速为 150 kbps,8 倍速为 1200 kbps),适合音频播放。 当时(1996-2000 年)使用的 MPEG 和 MPEG2 视频压缩算法不允许存储广播质量的视频(D1 或 PAL 720x576,每秒 50 场)。 DVD 发明后,传输速度提高了。 实际上,DVD 光盘的最低读取速度为每秒 1,385,000 字节 (1.352 MB/s),而“24th”速度为 33240000 kbit/s 或 32.4 MB/s。 相比之下,“演播室”视频质量为 25 Mbit/s,数​​字电视多路复用 DVB-T2 (MPEG4) 中的流约为 2.4-2.6 Mbit/s。录制视频的DVD光盘必须符合DVD视频格式,该格式不仅支持文件存储,还支持“封面”、“章节”、多声道音频5+1(6)声道和字幕。普通 DVD 光盘的容量为 4.7 GB,明显高于 CD-R 的 700 MB。使用 MPEG2 编解码器的家用 DVD 播放器的高画质以及杜比 AC3 中的立体声和多声道声音有助于 DVD 播放器在家庭娱乐行业消费者中的快速普及。 “家庭影院”时代已经到来。对于旅行爱好者来说,索尼便携式摄像机以较小的格式直接出现在 DVD 上 - 直径 8 厘米,容量 1.46 GB,可以在家里的 DVD 播放器或“video deuce”(带有内置 DVD 播放器的电视)上观看录制内容,而无需进行编辑。或配音。到 2000 年,DVD 视频完全取代了 VHS 和 VHS-C 录像带上的录制内容。 目前,DVD 的使用处于平稳状态,因为用于 4K 视频的大容量蓝光光盘由于价格昂贵而销售缓慢。

将DVD转换为MPEG4(AVC)/MKV文件问题的紧迫性

用户从 DVD 视频切换到将旧电影存储为 MPEG4 文件的原因是耐用性。 如果我们以DVD视频开始使用的原始日期为2000年,光盘的平均保质期为20-60年。 到 2023 年,DVD-R 光盘的某些部分可能会变得难以读取。 此外,用于家庭视频、电影和照片的 NFS(网络文件存储)家庭存储最近已变得普遍。 NFS 的优点是冗余,并且不存在因机械损坏(跌落、划伤等)而丢失 CD 或 DVD 光盘的风险。因此,2023 年将 DVD 视频转换为其他格式的问题是相关的。

1. DVD 光盘的工作方案

直到 2002 年,才有了一项将模拟 VHS 录像机中的旧录像带数字化的计划。
VHS方案

2002年后到现在,过渡到DVD后,旧视频没有数字化,
在 PC 上使用 DVD 和 AVI/MP4/MKV 文件完全处理数字视频循环。

DVD_方案

所有步骤将在本文后面进行解释。 方案简要说明:

  1. 左侧是带视频的原始 DVD-R 或 CD-R 光盘。

  2. 要从 DVD/CD 光盘中删除信息,需要使用“ripper”程序,该程序源自英语单词“rip”,即“撕开、撕下、拆除”。 您无需使用 DVD,只需在资源管理器中打开光盘并将其内容复制到本地 PC 即可。

  3. 图片右上部分,大方块是MPEG2格式的AVI“传输”文件,包含与原始DVD质量相同的视频和音频。 我们将将此 AVI 文件视为源材料。

如果用户要求剪切视频片段,您可以使用该实用程序 ffmpeg 处理文件并将部分视频保存在单独的文件中,从开始时间到结束时间不更改视频和音频。 视频编辑可以在视频编辑器程序中完成 开枪 (可在 flatpak“FlatHub”应用程序商店中获取,并作为系统包),并编辑视频。 在本文中,将很少关注安装问题。

  1. 如果请求还涉及视频转码,则原始 AVI 文件或从视频中剪切的片段将成为 MPEG-4 第 2 层 (AVC) 转换器的源材料。 图片的中心部分是结果:从容器输出的文件是 MP4 或 MKV,其中视频压缩为 MPEG-4 (AVC) 和 AC-3 音频,用于存储在 PC 上的存档中。 此类 MP4 或 MKV 文件的大小通常明显小于 DVD 光盘的大小。 由于 MPEG4 AVC 中的压缩效率更高,因此在质量相同的情况下,您可以使用较低的比特率。 例如一张DVD上录制了90分钟的视频,大小为4.7GB,其中视频4.2GB,声音0.5GB,这意味着视频码率为4.2*8*1024/(1.5*3600)=6.37Mbit/s,以2.4Mbit/s码率压缩为MP4时,占用体积小于2.4/6.37*4.2=1.58 GB 视频 + 0.5 GB 音频 = ~ 2.08 GB => 即电影现在占用的空间减少 56%。

  2. 将 MP4 直接刻录到 DVD 作为“数据光盘”是可能的,但它打开起来会很难看 - 不是作为光盘,而是作为带有文件的常规文件夹,如“闪存驱动器”。 要使用主菜单 - DVD 封面创建新的 DVD 或 CD-R 光盘的精美项目,请使用创作软件(DVD Workshop) - 例如 DVD造型器,这在上一篇文章中已经讨论过。 您可以在其中创建加载 DVD 时显示在电视屏幕上的主菜单。 开头菜单给出了光盘的整体印象,例如背景为夏日风景的“我的假期”,并且可能包含调用电影视频的各个章节的链接或按钮。 此外,一些程序有一个内置的视频转码器 - 一个“转换器”,它将视频压缩到所需的媒体大小。

  3. 转换器程序并不总是可用,只有当您需要在不同格式之间对视频进行转码时才可以使用,例如从 MPEG2 到 MPEG4 (AVC)。 FFmpeg 控制台实用程序可以充当转换器;本文将讨论其使用示例。

  4. 将 DVD 项目刻录到 DVD-R 或 CD-R“空白”上通常可以在作者的程序中完成。 但我认为,最好在专门的实用程序中使用 ISO 映像文件写入来将 ISO 刻录到 DVD/CD,例如,Xfburn,k3b布拉塞罗。 从映像刻录还可用于释放光盘的多个副本。

两种处理方法 - 带和不带重新编码:

  • 重新编码 如果在任何阶段视频或音频编解码器发生变化,就会发生重新编码,例如从 MPEG2 更改为 MPEG4。 结果,质量会下降,尤其是在移动场景中,并且如果源材料以非常高的比特率(工作室级别 25-50 Mbit/s)录制,而结果则以较低的比特率(0.8-1 Mbit/s)录制。 根据源视频的质量、编码器程序的设置、传递次数(建议 2),在播放转码结果(mp4 文件)时,在 2.5 - 3 Mbit/s 的比特率下,肉眼不会注意到损失。 对全分辨率 PAL 720x576i 视频进行强压缩时,视频中可能会出现伪影 - 清晰度损失、“方块”、“果冻”等。

    *直通处理。 如果在所有阶段都不使用视频和音频数据的转换(重新编码),则不会有质量损失。 这种方法称为“路径通过”;数据没有被扭曲、降级或改进——“按原样”。 MPEG2 文件将具有原始 DVD 的质量。 之后,该文件也可以刻录到 DVD,无需重新编码,采用 MPEG2 格式,声音与以前相同。

2. 在 Linux 中安装用于播放 DVD 和单个 AVI / MP4 文件的软件包

2.1 安装视频和音频编解码器

libavcodec-额外 是一个元文件夹,负责安装以下编解码器:

  • Libaom3 - AV1视频编解码库
  • Libaribbb24-0-lib 用于 Arib std-b24 解码(运行时文件)
  • Libavutil56 - FFMPEG 库,具有简化编程的功能 - 运行时文件
  • Libcairo2 - 开罗 2D 矢量图形库
  • libcodec2-1.0 - Codec2 运行时库
  • libdav1d5 - 快速且小型的 AV1 视频流解码器(共享库)
  • libgsm1 - GSM 语音压缩器的通用库
  • liblzma5 - XZ 格式压缩库
  • libmfx1 - 英特尔媒体 SDK - 共享库
  • libmp3lame0 - mp3 编码库
  • Libopencore -Amrnb0 - AMR 语音编解码器 - 共享库
  • Libopencore -Amrwb0 - AMR-WB 宽带语音编解码器 - 共享库
  • Libopenjp2-7 - JPEG 2000 图像压缩/解压缩库
  • Libopus0 - Opus 编解码器运行时库
  • Librsvg2-2 - SVG 文件的渲染库(运行时)
  • Libshine3 - MP3 定点编码库 - 运行时文件
  • libsnappy1v5 - 快速压缩/解压库
  • libspeex1 - Speex 代码的运行时库
  • libsresample3 - 用于音频修订、修订等的 FFMPEG 库 - 运行时文件
  • libsresample3 - Theora 视频压缩编解码器
  • libtwolame0 - 音频 MPEG 音频 2 编码库
  • libva2 - 适用于 Linux 的视频加速 (VA) API - 运行时
  • libvo-amrwbenc0-编码器库 Amr-WB Visualon Amr-WB
  • libvorbis0a - 用于通用 Vorbis 音频压缩编解码器的解码器库
  • libvorbisenc2 - Vorbis 通用音频编解码器的编码器库
  • libvpx7 - VP8 和 VP9 视频编解码器(共享库)
  • libwebp7 - 数字摄影图像的有损压缩 (WebP)
  • libwebpmux3 - 数字摄影图像的有损压缩
  • libx264-163 - x264 视频编码库
  • Libx265-199 - H.265/Vide - HEVC 流(共享库)
  • libxvidcore4 - 开源 MPEG-4 视频编解码器(库)
  • libzvbi0 - 垂直间隔解码器 (VBI) - 运行时文件
  • Zlib1g - 压缩库 - 运行时。

正如你所看到的,这个包 libavcodec-额外 通过依赖项,它将安装最重要的视频编解码器 MPEG-4、x264、h.265/HEVC 和音频编解码器 MP2、MP3。

1) 在 Ubuntu 和 Debian 中,“libavcodec-extra”包负责编解码器。

sudo apt install libavcodec-extra

2)在Linux Mint中,使用以下命令安装DVD编解码器

sudo apt install mint-meta-codecs

! 如果运行Linux Mint的PC没有连接到互联网,则需要下载编解码器包(apt download mint-meta-codecs),在没有互联网的机器上解压存档“mint-meta-codecs.tgz”并运行“sudo dpkg -i *.deb"

查看商业加扰光盘(如果会话受 CSS 保护)。 如果您仅使用消费类 DVD,则无需安装以下软件包。

su -
apt install libdvdcss2 libdvdread8
apt install libdvd-pkg
dpkg-reconfigure libdvd-pkg

附加套餐 libavcodec-extra58 (可选),包含用于蜂窝网络的 AMR 编解码器,DVD 不需要。

  • ARIB STD-B24 字幕(字幕解码器)
  • OpenCORE 自适应多速率 (AMR) 窄带(编码器/解码器)
  • OpenCORE 自适应多速率 (AMR) 宽带(解码器)
  • Android VisualOn 自适应多速率 (AMR) 宽带(编码器)

    su -
    apt install libavcodec-extra58

2.2 安装 ffmpeg - 用于从命令行处理视频的子系统

最新版本的 ffmpeg 的源文本位于网站上 ffmpeg.org,用于自组装(编译)。
对于懒惰的用户,您可以从存储库安装 ffmpeg。 命令“apt安装ffmpeg"

苏-
apt install ffmpeg

Debian 特性: 存储库 www.deb-multimedia.org/pool 包含针对 Debian OS 10 Buster、11 Bullseye、12 Bookworm 和不稳定版本“Sid”的最新 ffmpeg 版本。 网站上描述了连接存储库 https://deb-multimedia.org/- 您需要将密钥添加到密钥环,修复 apt-sources 文件,然后运行 apt-get update и apt-get dist-upgrade
-> 套餐 ffmpeg 并且所有依赖的都将更新到最新版本。

Fedora 功能 :ffmpeg 位于其他软件包的存储库中: https://rpmfusion.org/,其安装在最常用的 Fedora 和 Red Hat 版本的“配置”部分中进行了描述。

! 您可以使用以下命令查看 ffmpeg 版本 ffmpeg -version

在 Linux Mint 21.1 版本中:

  • ffmpeg 版本 4.4.2-0ubuntu0.22.04.1
  • libavutil 56.70.100
  • libav编解码器58.134.100
  • libav 格式 58.76.100
  • libav 设备 58. 13.100
  • libavfilter 7.110.100
  • libswscale 5.9.100
  • libsresample 3. 9.100
  • libpostproc 55.9.100

2.3 安装硬件视频加速库

集成显卡 英特尔:

乌班图:

sudo apt install libva2 libva-x11-2

德班:

su -
apt install libva2 libva-x11-2

软呢帽

sudo dnf install libva-intel-driver

图形 AMD(台面) 支持硬件视频解码:

乌班图:

sudo apt install mesa-va-drivers mesa-vdpau-drivers

德班:

su -
apt install mesa-va-drivers mesa-vdpau-drivers

软呢帽

sudo dnf swap mesa-va-drivers mesa-va-drivers-freeworld
sudo dnf 交换 mesa-vdpau-驱动程序 mesa-vdpau-驱动程序-freeworld

图形 AMD- 支持硬件加速的驱动程序:

sudo add-apt-repository ppa:oibaf/graphics-drivers
sudo apt-get update
sudo apt install -y radeon

图形 英伟达- 支持硬件视频加速的驱动程序:

Ubuntu:
在“系统”-“驱动程序”菜单中,将Nouveau源代码的驱动程序替换为nVidia显卡的“自定义”驱动程序,然后重新启动PC。

Linux Mint:
在菜单上 “选项”-“驱动程序管理器” 安装 nVidia 显卡的自定义驱动程序并重新启动 PC。

Fedora: 来源

sudo dnf install nvidia-vaapi-driver

2.4 程序 - 用于播放 DVD 或 AVI、MP4、MKV 文件的“视频播放器"

在 Linux 中观看 DVD 视频是在 MPV 命令行播放器或其图形外壳(程序“celluloid”)中完成的。

su -
apt install mpv celluloid

对于功能更强大的现代 PC,VLC 视频播放器更适合播放 DVD。

苏-
apt install vlc vlc vlc-l10n vlc-plugin-base

3. 在 Linux 中制作 DVD 视频

免费程序(免费水):
打开 DVD 制作器
托维德- 2105 您可以设置主菜单的背景图像和声音,并开始 DVD 制作过程。 源文本:https://github.com/tovid-suite/tovid
*瓦尔沙- 一个用 Java 编写的图形界面 (GUI) 创建 DVD 的程序,可以刻录 DVD。
*DVD造型器- 适用于 Linux、Mac 和 Windows 的 DVD 制作程序

安装 DVDStyler 已审查 在上一篇文章中。 由于该程序是跨平台的,因此在不同操作系统上使用该程序没有什么不同。

作为光盘上的视频或章节的材料,我推荐高质量的视频,例如这个:

优质原材料
视频分辨率 -720x576 隔行扫描 (隔行扫描,上边距在前)。
视频编解码器 -MPEG2/ H.262/MPEG-2 第 2 部分(带比特率) 20 或 25 兆比特/秒
音频编解码器 -PCM 16 位立体声

程序中可以看到容器文件内部的视频和音频流的参数 媒体信息

DVDstyler 程序既可以将材料转码为 MPEG4 / AVC,又可以录视频和音频流,无需直通处理,仅添加 x.264 视频和 AAC(或 MP2)音频复用。 DVDstyler 不支持字幕和图文电视。

用于刻录 DVD 的包含视频和音频的生成文件的参数:

参数 意义
图像
容器格式 AVI
视频格式 MPEG2 对于“经典”DVD;对于步步高等中国DVD播放器来说 XVID 或 DIVX3 / DIVX4。 DIVX5
双方关系 宽:高 4:3 或 16:9
色彩空间 YUV
颜色子采样 4:2:0 (基本格式)
4:2:2 (随着对色彩分辨率要求的提高)
颜色深度 8 位
扫描类型 交织 (Interlaced)
现场订单 上极是第一个。 (Top Field First)
压缩 损失
压缩比 位/(像素*帧) 从 0.8 到 2.2
宽度 720 像素
身高 576 像素
视频流速度(视频比特率) 720x576i 分辨率下,CBR 为 9000 kbps (其中9800 kbps为最大值)。VBR(流速度 5.0-8.0 Mbit/s)常用。
4 Mbit/s - 适用于 352x480 分辨率
1.5-2 Mbit/s - 适用于 352x288 QCIF 分辨率
原色、传输特性和矩阵系数 BT.709
音频
音频采样率 48 kHz
声道数 2(适用于 MP2 和 PCM),1 - 5.1(适用于 AC3)
编解码器 MP2(MPEG2 音频)、杜比 AC-3 (AC3)PCM (LPCM) 16 位,48 kHz - 适用于“经典”DVD;中国播放器可接受的音频格式:MP3,最高 256 kbps
音频比特率(音频比特率) 192 kbps AC3 立体声

4.光盘刻录-Xfburn

su -
apt install xfburn

XF烧伤

5. 从刻录的 DVD 光盘中捕获信息。 从 VIDEO_TS 文件夹复制文件

5.1 方法 1 - 从 DVD 视频光盘中提取文件

DVD 光盘在计算机上被识别为常规数字存储介质,带有 VIDEO_TS 文件夹。
您需要手动或使用实用程序将其复制到您的计算机 “DVD备份”
一个小型 dvdbackup 程序,用于从 Debian 和 Ubuntu 的 DVD 光盘中提取数据。

DVD备份安装:

 apt install dvdbackup

使用 DVD 备份:

cd ~; mkdir dvd123
dvdbackup -M -i /dev/cdrom -o ~/dvd123

主要参数 dvdbackup

-I- 输出有关 DVD 的信息。
-M--mirror 将 DVD 镜像到本地磁盘上的文件夹
-i DEVICE - исходное устройство, где DEVICE может быть /dev/cdrom 等等
-o DIRECTORY- 用于保存 DVD 中的文件的输出文件夹。 如果未指定目文件夹,则将使用当前目录。

5.2 方法 2 - 创建 DVD 视频磁盘映像 - *.ISO 文件

从DVD中检索信息(“DVD 翻录”)可以使用准工具执行—— DD 该程序:

sudo dd if=/dev/cdrom of=disk.iso bs=1M

可以在 PCmanFM 文件管理器中挂载 ISO 映像( http://sourceforge.net/projects/pcmanfm
在右键单击上下文菜单中: “打开方式”-“安装磁盘映像”。 ISO 映像将作为虚拟 DVD 装载。

6.VIDEO_TS文件夹中文件的说明

文件 尺寸 目的地 描述
视频_TS.BUP 12K 视频管理器,v11 VIDEO_TS.IFO 文件的备份副本 (BackUP),以防后者读取困难(由于划痕)
视频_TS.IFO 12K 视频管理器,v11 包含有关 DVD 光盘的信息的文件 (信息科学 )。 IFO 文件本身不包含任何视频信息。 相反,IFO 文件指的是视频数据。 它与 VOB 文件一起使用,VOB 文件存储电影的实际音频和视频数据。
视频_TS.VOB 76K MPEG 序列,v2,节目多路复用 内容的开头通常包含菜单和视频预告片。
VIDEO_01_0.BUP 18K 视频题集,v11 VTS_01_0.IFO 文件的备份副本 (BackUP),以防后者读取困难(由于划痕)
VTS_01_0.IFO 18K 视频题集,v11 菜单和字幕。 二进制文件。
VTS_01_0.VOB 234K MPEG 序列,v2,节目多路复用 视频文件、黑屏保护程序 720x576i 25fps PAL、MPEG2 视频/AAC 音频编解码器。 第 0 部分
VTS_01_1.VOB 500M MPEG 序列,v2,节目多路复用 主视频文件,720x576i 25 fps PAL 电影文件,MPEG2 视频/AAC 音频编解码器。 第 1 部分
VTS_01_2.VOB 500M MPEG 序列,v2,节目多路复用 主视频文件,720x576i 25 fps PAL 电影文件,MPEG2 视频/AAC 音频编解码器。 第 2 部分
VTS_01_3.VOB 500M MPEG 序列,v2,节目多路复用 主视频文件,cinema720x576i 25fps PAL 文件,MPEG2 视频/AAC 音频编解码器。 第 3 部分

7.在各种程序中播放DVD视频文件

多用途车:

mpv VIDEO_TS.IFO

赛璐珞:

celluloid VIDEO_TS.IFO

VLC - 与以前的程序不同,电影播放不会自动开始,而是在光盘菜单屏幕上调用(出现“菜单播放”)

vlc 视频_TS.IFO

8. 将 VOB 文件合并为一个,并将整个电影转换为 AVI 文件,无需重新编码(质量:“相同质量”)

cd ~/dvd123/VIDEO_TS
cat \*.VOB | pv | dd of=combined.vob
ffmpeg -i combined.vob -q:a 0 -q:v 0 -c copy -sn -y combined.avi

8.1 将一个特定的 VOB 文件从 MPEG2 格式的 DVD 转换为 AVI:

ffmpeg -i VTS_01_1.VOB -q:a 0 -q:v 0 -c copy out-part1.avi

通过复制方法将一个 DIVX、XVID、MPEG4、AVC 格式的 DVD VOB 文件转换为 AVI:

ffmpeg -i VTS_01_1.VOB -c:v libx264 -crf 0 -c copy out-x264.avi

关键在哪里 -crf заменяет ключи -q:v / -qscale:v libx264 会忽略它们。

CRF - 恒定速率因子( FFmpeg 维基 H.264 编码
-crf 0 意思是无损编码。

8.2 转换为 AVI,同时将多声道杜比 AC-3 音频转码为 MP3 立体声:

! 注意:在商业 DVD 和带有 3D 声音的摄像机上,原始音频可能是 AC3 格式(“Dolby AC-3”),那么音频仍然需要重新编码,以便该文件可以在大多数播放器中播放。

音频流 160 kbit/s,质量 -aq 2:

ffmpeg -i VTS_01_1.VOB -q:v 0 -vcodec copy -acodec libmp3lame -b:a 160k -aq 2 out-mp3.avi

在这些示例命令中,如果您想要转换整个电影,请将文件名 VTS_01_1.VOB 替换为combined.avi。

9.使用ffmpeg将视频片段从ss秒剪切到tt秒(质量:“相同质量”)

对于 DVD 文件到 MPEG2:

ffmpeg -i VTS_01_1.VOB -q:a 0 -q:v 0 -c copy -ss 0:28 -to 0:35 out-1_28-35.avi

对于 MPEG2 和 DIVX/XVID/MPEG4/AVC 格式的文件:

ffmpeg -i VTS_01_1.VOB -crf 0 -c copy -ss 0:28 -to 0:35 out-1_28-35.avi

哪里
-ss-开始; 0:28 - 从视频开始的时间 0 分 28 秒
-to - финиш ; 0:35 - время с начала видео 0 минут 35 секунд

10、使用ffmpeg工具对原始AVI视频文件进行转码

调用ffmpeg的一般方法是:

ffmpeg -i исходный_файл параметры ... конечный файл

10.1 将视频转码为 MPEG4 / MP3 128k 音频(lame 编解码器)

将 1.avi 文件转换为 MPEG2 格式的 out-mp4.avi
Кон生成的文件的容器是 AVI、比特率 1200 kbps CBR、MPEG4 格式。 音频格式 - MP3 128k。

ffmpeg -i 1.avi -f avi -c:v mpeg4 -b:v 1200k -g 300 -bf 2 -c:a libmp3lame -b:a 128k out-mp4.avi

10.2 将视频转码为 x264 格式/AAC 128k 音频,2 遍

流式传输 1200 kbit/s CBR - 恒定比特率,分两遍(第一遍“研究”材料,第二遍对视频进行转码并添加 AAC 格式的音频)。

ffmpeg -i 1.avi -pass 1 -vcodec libx264 -b:v 1200k -passlogfile 1_pass.log -f rawvideo -y /dev/null

ffmpeg -i 1.avi -pass 2 -vcodec libx264 -b:v 1200k -c:a aac -b:a 128k -passlogfile 1_pass.log out-avc.avi

10.3 将视频转码为 x264 格式/MP3 lame 128k 音频,并提高质量,分 2 次进行

流 1200 kbps CBR - 恒定比特率,视频编解码器 x264,音频 VBR aq=2(约 190 kbps,立体声)。

ffmpeg -i 1.avi -pass 1 -vcodec libx264 -b:v 1200k -passlogfile 1_pass.log -f rawvideo -y /dev/null
ffmpeg -i 1.avi -pass 2 -vcodec libx264 -b:v 1200k -acodec libmp3lame --aq 2 -passlogfile 1_pass.log out-avc.avi

对于大约 2Mbit/s 的流,质量为 23 (VBR) -crf 23 的视频:

ffmpeg -i 1.avi -pass 1 -vcodec libx264 -crf 23 -passlogfile 1_pass.log -f rawvideo -y /dev/null
ffmpeg -y -i 1.avi -pass 2 -vcodec libx264 -crf 23 -acodec libmp3lame -b:a 160k -aq 2 -passlogfile 1_pass.log out-avc-crf23.avi

10.4 视频转码为x264格式;复制声音而不进行处理

流式传输 1200 kbps CBR。

ffmpeg -i 1.avi -pass 1 -vcodec libx264 -b:v 1200k -passlogfile 1_pass.log -f rawvideo -y /dev/null
ffmpeg -y -i 1.avi -pass 2 -vcodec libx264 -b:v 1200k -c:a copy -q:a 0 -passlogfile 1_pass.log out-avc-acopy.avi

10.4 将视频转码为x264格式(MKV容器);声音复制(未经处理)

视频流 1200 kbps CBR:

ffmpeg -i 1.avi -pass 1 -vcodec libx264 -b:v 1200k -passlogfile 1_pass.log -f rawvideo -y /dev/null
ffmpeg -y -i 1.avi -pass 2 -vcodec libx264 -b:v 1200k -c:a copy -q:a 0 -passlogfile 1_pass.log out-avc.mkv

10.5 重新编码视频文件x264格式(MP4容器);声音复制(未经处理)

码流1200k

ffmpeg -i 1.avi -pass 1 -vcodec libx264 -b:v 1200k -passlogfile 1_pass.log -f rawvideo -y /dev/null
ffmpeg -y -i 1.avi -pass 2 -vcodec libx264 -b:v 1200k -c:a copy -q:a 0 -passlogfile 1_pass.log out-avc.mp4

10.6 将宽x高分辨率更改为360x288,将视频重新编码为x264文件(MP4容器);声音MP3蹩脚

码流1200k

`ffmpeg -i 1.avi -pass 1 -vf 比例=360:288,setsar=1:1 -vcodec libx264 -b:v 700k -passlogfile 1_pass.log -f rawvideo -y /dev/null

ffmpeg -y -i 1.avi -pass 2 -vf 比例=360:288,setsar=1:1 -vcodec libx264 -b:v 700k -acodec libmp3lame -b:a 160k -aq 2 -passlogfile 1_pass.log out-avc.mp4`

10.7 通过将宽x高分辨率更改为360x756,同时保持4x3宽高比,将视频重新编码为x264文件(MP4容器);声音MP3蹩脚

ffmpeg -i 1.avi -pass 1 -vf scale=360:576,setsar=2/1 -vcodec libx264 -b:v 700k -passlogfile 1_pass.log -f rawvideo -y /dev/null
ffmpeg -y -i 1.avi -pass 2 -vf scale=360:576,setsar=2/1 -vcodec libx264 -b:v 700k -acodec libmp3lame -b:a 160k -aq 2 -passlogfile 1_pass.log out_avc360x576.avi

10.8 通过将宽x高分辨率更改为720x288,同时保持4x3宽高比,将视频重新编码为x264文件(MP4容器);声音MP3蹩脚

ffmpeg -i 1.avi -pass 1 -vf scale=720:288,setsar=1/2 -vcodec libx264 -b:v 700k -passlogfile 1_pass.log -f rawvideo -y /dev/null
ffmpeg -y -i 1.avi -pass 2 -vf scale=720:288,setsar=1/2 -vcodec libx264 -b:v 700k -acodec libmp3lame -b:a 160k -aq 2 -passlogfile 1_pass.log out_avc720x288.avi

10.9 将分辨率 WxH 更改为 360x288 的视频重新编码为 hevc x265 格式的文件(MKV 容器);声音MP3蹩脚

ffmpeg -i 1.avi -pass 1 -vf scale=360:288,setsar=1/1 -vcodec libx265 -b:v 500k -passlogfile 1_pass.log -f rawvideo -y /dev/null
ffmpeg -y -i 1.avi -pass 2 -vf scale=360:288,setsar=1/1 -vcodec libx265 -b:v 500k -acodec libmp3lame -b:a 160k -aq 2 -passlogfile 1_pass.log out_x265.mkv

10.10 对 Web 文件进行转码(仔细设置志 - x264 配置文件高,级别 3.1),4:3 格式; MP3声音

视频格式4:3:

ffmpeg -i 1.avi -t 10 -vf scale=360:288,setsar=1/1 -vcodec libx264 -b:v 400k -level 21 -refs 2 -pix_fmt yuv420p -profile:v high -level 3.1 -color_primaries 1 -color_trc 1 -colorspace 1 -movflags +faststart -af "pan=mono|c0=c1" -acodec libmp3lame -b:a 60k -dn web.mp4

视频格式 16:9-

方面参数: -宽高比 16:9 在任何输入分辨率下。

ffmpeg -i 1.avi -t 10 -vf scale=640:360,setsar=1/1 -vcodec libx264 -level 21 -refs 2 -pix_fmt yuv420p -profile:v high -level 3.1 -color_primaries 1 -color_trc 1 -colorspace 1 -movflags +faststart -af "pan=mono|c0=c1" -acodec libmp3lame -b:v 500k -b:a 48k -dn web2.mp4

ffmpeg -i 1.avi -t 10 -vf scale=360:288,setsar=1/1 -vcodec libx264 -level 21 -refs 2 -pix_fmt yuv420p -profile:v high -level 3.1 -color_primaries 1 -color_trc 1 -colorspace 1 -movflags +faststart -af "pan=mono|c0=c1" -acodec libmp3lame -b:v 500k -b:a 48k -dn web2.mp4

-dn 表示不复制数据流(Data - no)。

声音:

! 对于单声道声音,添加音频滤波器 -af“平移=单声道|c0=c1”。 静音 - 参数 -安 (指音频 - 否)。

您可以使用中等质量参数,而不是最大速度 -b:a 112k
-aq 6 - 质量不错,比特率100-130k;
-aq 5 - 质量满意,比特率120-150;
-aq 4 - 默认140-185k;
-aq 2 质量非常好 170-210k。
使用 -aq 1 时,文件大小比使用 -aq 6 时大 1.5 倍,这对于编码(例如语音)来说是不合理的。

10.11 可变比特率编码,VBR速度从1 Mbit/s到2 Mbit/s(在困难地区),声音也是VBR,质量8(约56 kbit/s)

ffmpeg -i 1.avi -c:v libx264 -b:v 1M -maxrate 2M -bufsize 2M -pass 1 -f mp4 -passlogfile 1_pass.log -f rawvideo -y /dev/null
ffmpeg -i 1.avi -c:v libx264 -b:v 1M -maxrate 2M -bufsize 2M -pass 2 -passlogfile 1_pass.log -acodec libmp3lame -af "pan=mono|c0=c1" -aq 8 vbr.mp4

10.12 从视频中提取音频 - 转换为 AAC(立体声)或 WAV(单声道)

ffmpeg -i 1.avi -vn -ac 2 -acodec aac sound.aac
ffmpeg -i 1.avi -vn -ac 1 - sound.wav

另请参阅 这里

10.13 将音轨音量增加+2db

ffmpeg -i sound.wav -af "volume=+2dB" -y output.wav

10.14 准化、声音压缩

ffmpeg -i sound.wav -af loudnorm=I=-10:LRA=1:tp=0 -ac 1 -y output.wav

10.15 转换 WAV - MP2(单声道),比特率 80 kbit/s

ffmpeg -i output.wav -acodec mp2 -ac 1 -b:a 80k -y final.mp2

10.16 将 AVI 视频文件与新的 MP2 音轨合并(复制视频而不重新编码)

ffmpeg -i 1.avi -i final.mp2 -c:v copy -map 0:v:0 -map 1:a:0 Final.avi

10.17 用参数集编码

钥匙 -target pal-vcd 指定以下参数集:
-f vcd -muxrate 1411200 -muxpreload 0.44 -packetsize 2324
-s 352x288 -r 25
-codec:v mpeg1video -g 15 -b:v 1150k -maxrate:v 1150v -minrate:v 1150k -bufsize:v 327680
-ar 44100 -ac 2
-codec:a mp2 -b:a 224k
钥匙 -target pal-dvd 指定以下参数集:
-f DVD -muxrate 10080k -packetsize 2048
-s 720x576 -pix_fmt yuv420p -r 25
-codec:v mpeg2video -g 15 -b:v 6000k -maxrate:v 9000k -minrate:v 0 -bufsize:v 1835008
-ar 48000
-codec:a ac3 -b:a 448k

示例:源文件的分辨率为 1280x720(来自智能手机的视频),
任务是将其刻录到 DVD:

ffmpeg -i 2.mp4 -target pal-dvd -aspect 16:9 out.avi

结果:
mediainfo_dvd_16_9

11 立体声的推荐比特率

*交流3*>= 160k(对于 5.1 多声道音频)
亚克**>= 128k(低质量 - 语音 -b:a 128k )
*mp3>= 128k(推荐用于音乐 -b:a 192k -aq 2)

将比特率转换为所需的通道数:

*比特率 =(立体声比特率)(通道数/2)**

对于单声道:
*交流3>= 80k

*亚克*>= 64k(低质量 - 语音 -b:a 64k )
mp3**>= 64k(推荐用于音乐 -b:a 96k -aq 2)

12. 准视频分辨率及其建议比特率

|技术 |分辨率| P/I |帧/场频率,Hz |题 | 编解码器|比特率(网络、存档),Mbit/s |比特率(良好质量),Mbit/s |

|--------|----------------------------------------|---|---|:---------:|:--------------------------------------------:|
|模拟| 352x240p,4:3 PAL | p| 25/25 | 25/25 | CIF、PAL DVD - VHS | x.264 | 0.6 | 0.6 1.2 | 1.2
|模拟| 352x240p,4:3 NTSC | p| 29.97/29.97 | CIF、NTSC DVD@23.976fps | x.264 | 0.6 | 0.6 1.2 | 1.2

|模拟| 352x288p,4:3 PAL | p| 25/25 | 25/25 |完整CIF、FCIF| x.264 | 0.75 | 0.75 1.5 | 1.5
|模拟| 704x480i,4:3 PAL |我| 25/50 | 25/50 D1,PAL | x.264 | 0.8 | 0.8 2 |
|模拟| 720x480i,4:3 NTSC |我| 30/60 | 30/60 NTSC-D1 | x.264 | 0.9 | 0.9 2.2 | 2.2
|模拟| 720x288p,4:3 | 25/25 | 25/25 | p| 2CIF,半D1 | x.264 | 0.8 | 0.8 1.8 | 1.8
|模拟/数字| 720x576i、4:3 或 16:9 |我| 25/50 | 25/50全 D1、PAL 广播、光盘, SD | x.264 | 1.3 | 1.3 2.5 | 2.5
|数码| 544x576i,16:9 | 25/50 | 25/50我|广播质量下降| x.264 | 1.2 | 1.2 2.2 | 2.2
|数码| 480x576i,16:9 | 25/50 | 25/50我|广播质量下降| x.264 | 1 | 2 |
|数码| 352x576i,16:9 | 25/50 | 25/50我|广播质量下降| x.264 | 0.8 | 0.8 1.8 | 1.8
|数码| 352x288p,16:9 | 25/25 | 25/25 |我|广播质量下降| x.264 | 0.6 | 0.6 1.3 | 1.3
|模拟| 768x576i,16:9 | 25/50 | 25/50我| PAL-DV | x.264 | 1.3 | 1.3 2.5 | 2.5
|数码| 1280x720p,16:9 | p| 25/25 | 25/25 | 720p,高清 | x.264 | 2 | 4 |
|数字/模拟(视频监控系统:AHD、MHD)| 1920x1080 |我| 25/50 | 25/50全高清或 2K)| x.264 | 3 | 5 |
|数码| 1920x1080p | 30/30 | 30/30全高清 1080p 30fps 或 2K-30fps | p| 30| x.264 | 4 | 7 |
|数码| 1920x1080p | 60/60 | 60/60全高清 60fps 或 2K-60fps | p| 60| x.264 | 6 | 10 | 10
|数码| 2560x1440p | 25、| 3k| p| 25 | 25 x.265 | 12 | 12 22 | 22
|数码| 3840x2160p | 30、60、120 | 4k 或超高清 | p| 30、60 或 120 | x.265 | 12 | 12 22 | 22

应用。 通过帧结构关联视频格式

D1 = PAL 广播

D1=4CIF
到岸价格 = 1/4 D1

一半D1=1/2 D1
2CIF = 1/2 D1
2CIF=半D1

附录2. 视频格式的面积比(或图像元素数量-像素)

全高清 = 2K
全高清 = 5 * PAL 广播

全高清 = 2.25 高清
全高清 = 0.75 3K
全高清 = 1/2 超高清
全高清 = 1/4 8K


来源: https://trac.ffmpeg.org/wiki



相关出版物