惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Jina AI
Jina AI
S
SegmentFault 最新的问题
D
DataBreaches.Net
H
Help Net Security
有赞技术团队
有赞技术团队
M
MIT News - Artificial intelligence
Martin Fowler
Martin Fowler
IT之家
IT之家
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
腾讯CDC
罗磊的独立博客
Y
Y Combinator Blog
阮一峰的网络日志
阮一峰的网络日志
云风的 BLOG
云风的 BLOG
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
WordPress大学
WordPress大学
Microsoft Security Blog
Microsoft Security Blog
J
Java Code Geeks
Vercel News
Vercel News
Hugging Face - Blog
Hugging Face - Blog
aimingoo的专栏
aimingoo的专栏
Stack Overflow Blog
Stack Overflow Blog
Recent Announcements
Recent Announcements
博客园 - 三生石上(FineUI控件)

泠泫凝的异次元空间

通过串口安装Linux | 泠泫凝的异次元空间 curl自编译 | 泠泫凝的异次元空间 Minecraft 认证服务器代理 | 泠泫凝的异次元空间 飞塔分流配置实战 | 泠泫凝的异次元空间 Windows 安全启动证书检查 | 泠泫凝的异次元空间 Lxn-OneDriveCLI | 泠泫凝的异次元空间 华三交换机配置 ERPS 环网 | 泠泫凝的异次元空间 PVE 配置 VLAN 感知 | 泠泫凝的异次元空间 MT7922 无线网卡安装 | 泠泫凝的异次元空间 无显示输出 Linux 主机配置桌面显示 | 泠泫凝的异次元空间 Wireguard 部署 SOP 手册(自用) | 泠泫凝的异次元空间 Zabbix 7.4 通过钉钉发送告警提醒 | 泠泫凝的异次元空间 Debian with xfce 通过 VNC 共享屏幕 华三S6860 IRF堆叠 | 泠泫凝的异次元空间 iPad 应用侧载 | 泠泫凝的异次元空间 Smart DNS 分区解析 | 泠泫凝的异次元空间 建立 NFS 服务器并挂载到客户端 | 泠泫凝的异次元空间 将 Android 以 MTP 方式连接至 Debian PVE 虚拟机迁移至 vCenter | 泠泫凝的异次元空间 vCenter 虚拟机迁移至 PVE | 泠泫凝的异次元空间 PVE迁移时提示密钥验证失败 | 泠泫凝的异次元空间 修改Windows设备设置区域 | 泠泫凝的异次元空间 恢复 SecureCRT 7.x 保存的密码 | 泠泫凝的异次元空间 PVE 超融合下电与上电流程 | 泠泫凝的异次元空间 记一次Zabbix异常处理 | 泠泫凝的异次元空间 苹果设备保存SHSH2 | 泠泫凝的异次元空间 PVE超融合部署 | 泠泫凝的异次元空间 树莓派启用zram | 泠泫凝的异次元空间 在 Hyper-V 上安装 EVE-NG | 泠泫凝的异次元空间 Zabbix 部署与 Windows 硬件信息收集 | 泠泫凝的异次元空间
ffmpeg 日常使用命令 | 泠泫凝的异次元空间
Lxn's Area · 2022-08-01 · via 泠泫凝的异次元空间

自用ffmpeg压制命令详解

公共参数

  • -i:输入(input)文件;
  • -crf:控制输出文件质量,该参数取值范围为0~51,该参数值越大文件质量越差,但文件会越小,值为0时为无损(输出和输出质量相同),同时该参数对压制时间也有影响;
  • -lavfi "subtitles=sub.ass":定义一个复杂的过滤图,这里是相当于将输入文件当作底片,将subtitles覆盖于“底片”之上;
  • -c:v-c:a:控制编码过程中对视频(v)和音频(a)的编码方式,当该参数为copy时代表复制源文件的编码格式(不做编码直接复制),执行ffmpeg -codecs可以查看本机支持的编解码格式;

软字幕

软字幕是相对于硬字幕而言的,硬字幕是以图形方式直接“写”在帧上方(参考Ps中的“合并图层”);软字幕则是以文本的方式存储于文件中单独的某个轨道上(参考Pr的多轨道)。

提取

1
ffmpeg -i Source.mkv -map 0:s:0 subs-out.srt

以上代码假设了视频的名称为Source.mkv,其中:

  • -i参数后面跟随输入带有软字幕的文件;
  • -map指出提取的是视频中的哪部分;
  • 后面跟着的第一个0是指「第一个视频(流)」(这里只有一个视频(流));
  • s指的是「subtitles字幕」;
  • 最后的0指字幕中的第一个(因为视频可以含有多个字幕文件);
  • 最后的文件名subs-out.srt是输出的文件名。

删除

使用-sn开关删除软字幕。

1
ffmpeg -i "Source.mkv" -vcodec copy -acodec copy -sn "Output-No-Subs.mkv"

压入

1
ffmpeg -i "Source.mkv" -i sub.ass -codec copy -map 0 -map 1 "Output.mkv"

精准切割

1
ffmpeg -ss 00:00:00.000 -accurate_seek -to 00:14:07.468 -i Source.mkv -lavfi "subtitles=sub.ass" -crf 21 -c:a copy "Output.mp4"

该行命令的解释为:从00:00:00.000开始在Source.mkv精确寻找00:14:07.468并裁切下来,同时压入名为sub.ass的字幕,质量参数为21,音频轨道编码方式直接复制源文件编码格式,输出文件为"Output.mp4"

注意,只有在输入文件(-i)在查找参数(-accurate_seek)后面时精确查找才会生效。

压制

1
ffmpeg -i "Source.mkv" -c:v h264_nvenc -lavfi "subtitles=sub.ass" -crf 21.5 -c:a copy "Output-Main.mp4"

关于NVENC

NVENC是由NVIDIA开发的一个API,允许使用NVIDIA GPU显卡执行h.264和HEVC(H.265)编码。FFmpeg通过h264_nvenchevc_nvenc编码器支持NVENC。

要想在ffmpeg中使用NVENC,你需要一个支持硬件编解码的英伟达GPU、英伟达GPU驱动程序(最好是最新的Studio(SD)版)、在编译时配置了--enable-nvenc的ffmpeg二进制文件。

查看是否支持,只需在命令窗口执行ffmpeg -codecs,在返回中查找:

  1. configuration(编译配置参数)中必须要有--enable-nvenc
  2. 在下方的编解码器支持中必须有如下行(Encoder中必须要有h264_nvenc):
1
DEV.LS h264              H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (decoders: h264 h264_qsv h264_cuvid ) (encoders: libx264 libx264rgb h264_amf h264_mf h264_nvenc h264_qsv )

如果显卡驱动版本过低或硬件不支持会报错,根据错误提示升级显卡驱动或升级硬件即可。

 上一篇

ubuntu MySQL