VegoSong

记录点滴生活,学习心得,分享经验

利用 FFmpeg 压制直播弹幕小记

工作流程

以下工作流程均在设置了 ffmpeg 为环境变量的 win11 系统下进行;阅读时请注意时效。

利用 DanmakuFactory 将使用“B站录播姬”生成的 xml 弹幕文档转换成 .ass 字幕。DanmakuFactory 中已调整参数如下:

主界面选项:

-文字大小:42

礼物消息框选项:

-Y:770

-高:300

-礼物最低显示价格:0.01元(避免辣条等免费礼物刷屏)

2) 利用 ffmpeg 将弹幕压制进视频中。

在有 .flv 视频文件和 .ass 字幕文件的文件夹中右键选择“在终端中打开”,执行以下 ffmpeg 命令:

ffmpeg -hwaccel cuda -i "input.flv" -vf ass="subtitle.ass" -c:v libx264 -c:a copy -crf 18 "output.flv

字段解释及参数意义(个人理解)如下:

-hwaccel cuda : 利用 cuda 硬件加速(会损失部分画质,但会加快视频压制速度)

-i : 输入

input.flv subtitle.ass output.flv : 分别为输入视频,输入的 ass 字幕,输出视频

(关于 srt 字幕:b站支持自行上传 srt 字幕进行外挂,不再赘述)

-vf ass : 使用 ass 滤镜来过滤视频(添加字幕)(字幕压制命令见感谢列表及参考文献 [5])

-c:v libx264 : 使用 libx264 编码器(使用 cpu 压制,画质损失较少)

-c:a copy : 复制音频编码(无音质损失)

-crf 18 : crf设定为18(肉眼无损)

个人对“使用 gpu 压制并设定同原视频相同码率”与“使用 cpu 压制,设定如上”两者间差异存在一定疑惑,对视频压制及码率概念也只是入门,以上参数及意义仅供参考,欢迎解惑。后附 gpu 压制并使用固定码率的 ffmpeg 命令。

ffmpeg -i "input.flv" -vf ass="subtitle.ass" -c:v h264_nvenc -c:a copy -b:v 4000k "output.flv"

3) 等待压制完成后上传。

以下为学习使用 ffmpeg 笔记,请各位阅读的 bot 有序进化。

1. flv 文件转封装 mp4(便于导入 pr 进行切片)。

ffmpeg -i "input.flv" -c copy "output.mp4"

其中 -c copy 参数含义见下文。

2. 查询可以使用的编码器。

ffmpeg -codecs

输入查询后会得到类似如上结果
其中:

每一行左侧,第一、二位D/E分别代表 decoder (解码器)和 encoder (编码器),无相应字母代表不支持。
第三位 V/A/S 分别代表 video (视频)/ audio (音频)/ subtitle (字幕)三种类型的编/解码器/滤镜。

命令执行后也会有相应提示如下:

Codecs:
D….. = Decoding supported
.E…. = Encoding supported
..V… = Video codec
..A… = Audio codec
..S… = Subtitle codec
..D… = Data codec
..T… = Attachment codec
…I.. = Intra frame-only codec
….L. = Lossy compression
…..S = Lossless compression

需要查询的编码器位于每行尾部 (dncoders:xxx) (encoders:xxx) 并使用空格隔开,如何使用见下文。

3. 使用编码器:

-c:v #视频编/解码器(取决于放在输入前还是输出前)
-c:a #音频编/解码器(取决于放在输入前还是输出前)
-c copy #直接复制源,不解/编码
-crf 18 #影响输出画面码率,越小码率越大
自制码率对照表,数据来源为 Potplayer
关于 -crf 参数对码率、视频质量的影响可见“感谢列表及参考文献” [6] 。

感谢列表及参考文献:

B站录播姬 : https://rec.danmuji.org

DanmakuFactory : https://github.com/hihkm/DanmakuFactory

FFmpeg : https://ffmpeg.org

[VCB-Studio 科普教程 3] 视频格式基础知识 : https://vcb-s.com/archives/2726

FFmpeg系列教程03:玩转字幕样式,SRT ASS字幕压制

FFmpeg视频转码技巧之-crf参数(H.264篇) : https://blog.csdn.net/happydeer/article/details/52610060

Windows 下使用GPU加速ffmpeg处理任务 : https://blog.csdn.net/COCO56/article/details/89517157

点赞

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注