录播教程 怎样制作弹幕版录播?(1.普通弹幕篇) 您所在的位置:网站首页 斗鱼如何还原弹幕 录播教程 怎样制作弹幕版录播?(1.普通弹幕篇)

录播教程 怎样制作弹幕版录播?(1.普通弹幕篇)

2024-06-05 14:35| 来源: 网络整理| 查看: 265

本文根据我和朋友们的探索写成,可能过于啰嗦并存在错误或者未解决问题,敬请见谅。如果各指出文章中的问题并提供解决方法,我会修改文章改正错误,请大家不吝赐教!

更多相关内容,请点击:那个啥和那个啥的录播组教程- 文集

省流版:

1.用录播软件(本文为录播姬)录制带xml的直播视频,提前下载好弹幕转换工具(本文为DanmakuFactory)和ffmpeg

2.直播结束后用弹幕转换工具转换xml为ass文件

3-1.源帧率源分辨率压制:shanaencoder或者消极压制(这是个软件名,不是行为描述)

3-2.或者提高帧率和分辨率压制:在地址栏打开cmd,或者用批处理输入.\ffmpeg.exe -hwaccel auto -c:v h264_qsv -y -hide_banner -i 例子.flv -vf fps=fps=60,scale=1920:1080,subtitles=例子.ass -preset veryfast -b:v 5000k -vcodec h264_qsv -c:a aac -b:a 320k 输出.mkv压制弹幕

回复“TD”退订

下面为详细步骤:

需要用到的软件

能下载弹幕的直播录制软件(本文以弹幕姬为例)

弹幕转换软件(本文以DanmakuFactory为例)

ffmpeg

弹幕姬的设置

下载弹幕姬并且安装,填写录制房间号(不知道的房间号的打开网页端直播间,网址最后面的数字就是房间号),点击左侧齿轮按钮,打开“弹幕录制”,为保证视频不断,选择“不自动分段”,其他参数自定义。

注:录制模式中,标准模式可以自动修复时间轴错乱的录播,建议开启,不必和图中完全一致。

录播姬设置

录制完成且不出意外的话,我们非常容易的获得一个flv视频文件和xml弹幕文件。(如果出现不止一个视频,可能是网络波动导致视频断开,建议参考专栏cv11284495修复,再合并,合并教程见cv13929485)

拿到两个文件后,将xml文件转换为ass弹幕文件方便调整样式,所以我们打开DanmakuFactory。

DanmakuFactory界面

DanmakuFactory的注意事项

首次使用DanmakuFactory请点击弹幕设置进行设置,需要注意的是,1.62版本之前的部分版本存在弹幕转换后乱码,请下载最新版本使用。弹幕设置中,请关闭画面设置中的“统计图”“直方图”。

完成弹幕设置后,点击“打开文件”输入xml,点击“转换”,出现以下窗口即为转换成功,有需要的用aegisub进行修改,请用文本软件删除unknown错误,删除后aegisub才能正常打开ass文件。不需要修改的直接把ass文件名重命名成视频名一致即可看效果。

补充:删除ass文件中的unknown行(没有修改需要的可酌情跳过,跳转至“补充结束”)

用DanmakuFactory转换为ass字幕文件,遇到第一个绊脚石,Aegisub打不开这个字幕文件。

PlanA:用Sublime Text打开发现有大量的unknown语句(没有Sublime Text不要急,慢慢看)

使用Sublime Text的正则表达式功能进行替换,替换Comment: NO.*:unknow type为空

替换完成后效果如下图,保存后可以正常打开。

正常打开

PlanB:没有Sublime Text或者不会正则表达式的,这么做:设置打开方式为记事本,Ctrl+A全选文本,复制,粘贴到Excel中

选中该列,启用“筛选”功能,筛选内容为“comment”

选中第一个comment,用Ctrl+Shift+方向下 组合键,选中所有的comment,右键-删除-整行,关闭筛选功能。

Ctrl+A全选表格内所有内容,复制到记事本内保存,这样也可以打开。

补充结束

进入关键环节,弹幕压制。

收到视频文件和ass文件之后,有一部分用户会想到使用小丸工具箱进行压制,这是一种方法,但速度过于缓慢不推荐用来制作长时间的弹幕版录播。本文将着重介绍使用ffmpeg的显卡压制制作弹幕视频,并进行弹幕分辨率(不是视频分辨率)和弹幕帧率(不是视频补帧)的提升。

当然,可视化的操作更适合大部分使用者,ShanaEncoder、消极压制、XMedia Recode均可以调用显卡进行压制,可移步至cv14214321的压制部分,使用XMedia Recode进行高帧率弹幕压制。

如果不需要提高帧率和分辨率,那就直接用shanaencoder或者消极压制吧。这两个上手简单,设好压制参数后把同名视频和参数一拖。

另外不知道什么原因,shanaencoder压出的弹幕版录播很容易糊,请注意这个问题。建议各位在正式压制前,先截取一到两分钟进行试验。

shanaencoder消极压制

打开网址 http://ffmpeg.org/ 点击“download”进入ffmpeg下载界面。

Windows 用户点击相应图标,并点击比较长的链接进入下一个页面。

找到ffmpeg-git-full.7z,单击下载获得一个压缩包,把这个压缩包内的ffmpeg.exe放置到能记住的位置,有能力的人请在网上自行以“ffmpeg 环境变量”为关键词设置环境变量。

所有需要的文件和软件准备完毕,进入弹幕压制环节。

这里会分情况进行讲解说明,弹幕压制基本语法会基于下面这一行代码进行扩展。

ffmpeg -i 输入视频路径 -vf subtitles=弹幕.ass -vcodec h264_qsv -c:a aac -b:a 320k 输出视频路径

为什么输出设为mkv格式?因为如果设置成mp4格式,只能等压制完成后才能看到压制效果,中间如果弹幕文件乱码,浪费的时间不能接受,设置为mkv格式是为了在压制的同时可以看到效果,一旦发现任何错误都可以停下重新设置。

第一步,打开cmd指令。

不建议win+R,输入cmd打开cmd进行压制,因为这样的话弹幕.ass要加的斜杠太多啦,譬如本文这样的环境,应该在cmd输入的代码是这样的。

"D:\例子\ffmpeg.exe" -i "D:\例子\例子.flv" -vf subtitles=\'D:/例子/例子.ass\' -vcodec h264_qsv -c:a aac -b:a 320k "D:\例子\out.mkv"

如果在前文设置了环境变量,"D:\例子\ffmpeg.exe"可以简单替换为ffmpeg(后文将全部以ffmpeg使用,请没设置环境变量的读者自行替换成ffmpeg.exe所在的路径)

推荐的两种方法:

第一种:直接在地址栏输入“cmd”并敲击回车,弹出cmd窗口。

这样的话我们只需要简单输入

ffmpeg -i 例子.flv -vf subtitles=例子.ass -vcodec h264_qsv -c:a aac -b:a 320k out.mkv

敲击回车开始压制。

第二种方法,批处理命令

在该目录下右键鼠标,新建“文本档案”,双击打开文本档案,输入ffmpeg -i 例子.flv -vf subtitles=例子.ass -vcodec h264_qsv -c:a aac -b:a 320k out.mkv

点击“另存为”,保存类型为“所有文件”,文件名为“xxx.bat”,编码为“ANSI”

双击bat文件开始压制。

在介绍完基本框架之后,根据笔者英特尔CPU带核显,无英伟达显卡的硬件条件,完整的代码是这样的:

ffmpeg -hwaccel auto -c:v h264_qsv -y -hide_banner -i 例子.flv -vf fps=fps=60,scale=1920:1080,subtitles=例子.ass -preset veryfast -b:v 5000k -vcodec h264_qsv -c:a aac -b:a 320k 输出.mkv

特点是快,画质会差很多。现在一点一点解析:

ffmpeg 作用与前文"D:\例子\ffmpeg.exe"相同,表明ffmpeg.exe的位置

-hwaccel auto 启用硬件解码器,N卡用户可以改成-hwaccel cuvid可以将解码的帧保存在显存里(可能有用,笔者没有N卡无法验证)

-c:v h264_qsv 使用h264_qsv为硬件解码器,N卡用户可改为-c:v h264_cuvid(可能有用,笔者没有N卡无法验证)

-y (不影响质量)覆盖输出文件而不询问

-hide_banner (不影响质量)输出文件的详细信息时省略 ffmpeg 的版本信息和编译选项等

-i 例子.flv 输入视频的路径

-vf fps=fps=60,scale=1920:1080,subtitles=例子.ass (重要)设定弹幕帧率为60帧,弹幕分辨率为1080P,弹幕文件为例子.ass。并不能提升源视频的帧率和分辨率,后面会详细讲解这条代码的作用

-preset veryfast  使用CPU压制的话,-preset可选值: ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow,placebo。编码速度越慢编出来的越清晰,显卡压制最快一档为veryfast,我们选用显卡压制速度放在第一位

-b:v 5000k 设置视频码率为5000K,不使用-qscale:v是为了防止最终视频超过16G无法上传

-vcodec h264_qsv 设置h264_qsv为硬件编码器,N卡用户可改为-c:v h264_nvenc(确定可用)

-c:a aac -b:a 320k  设置音频格式为acc,音频码率为320

现在着重讲解 -vf fps=fps=60,scale=1920:1080,subtitles=例子.ass 的作用

假如你录制的直播间主播推流的分辨率和帧率都极低,我们取一个极端的情况,600x360的分辨率,1fps,相当于是用门锁拍的,眨眼补帧。看直播的时候我们只会觉得视频卡,弹幕不卡。直播结束后,你直接使用了 -vf subtitles=例子.ass 播放压制完成的视频就会觉得弹幕又糊又卡。

想象一下这张360P的图片全屏播放

ffmpeg里的ass滤镜默认是按照原视频的分辨率渲染的,全屏播放就显得非常模糊。为了提升弹幕版的观看体验,我们需要指定ass的帧率和分辨率,这样才能得到高清流畅的弹幕版。

在实际的运用过程中,部分主播还是以720P25帧的质量推流,如果使用默认参数,会觉得弹幕模糊且卡顿影响观看体验,我通常会将弹幕版录播处理成1080P60帧的质量。B站的最高画质为4K120帧,如果你电脑性能够强愿意折腾也可以尝试一下。

最后进行步骤总结:

用录播软件(本文为录播姬)录制带xml的直播视频,提前下载好弹幕转换工具(本文为DanmakuFactory)和ffmpeg

直播结束后用弹幕转换工具转换xml为ass文件

如果用源帧率源分辨率压制,使用软件shanaencoder或者消极压制。如果要提升帧率和分辨率压制弹幕,用ffmpeg或者XMediaRecode压制。

一个没能解决的问题:

使用ffmpeg压制弹幕,有些符号和小丸压制的成品显示不一样,譬如中文的破折号,在小丸压制的视频是一条长线,ffmpeg是两条长线,有些打call弹幕带有特殊符号,同样是黑体的情况下ffmpeg不能正常显示,变成方框,小丸可以正常显示。请问有没有方法可以让ffmpeg的压制的字幕显示和小丸一样?

下一篇教程针对B站推出的新版直播间表情包,讲解怎样压制带表情包的弹幕版视频(过于繁琐不实用,看看就好)



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有