推荐一位B站UP主《大仙家的厨房》

2021-01-18 09:59:07 浏览数 (1)

出于兴趣爱好,最近开始在B站当UP主了,名称是《大仙家的厨房》,目标是通过AI自动化地实现一些视频剪辑任务。

之所以选了这样一个方向,主要是考虑到以下三点:

  • 第一,王者荣耀是目前比较热门的手游,我自己也玩,而大仙是王者荣耀的头部主播,热门手游 头部主播,可以为作品带来一定量的潜在目标观众;
  • 第二,训练模型离不开数据,视频剪辑同样依赖于大量丰富的素材资源,而大仙的游戏录播、抖音上的小视频作品等,都可以批量自动化获取;
  • 第三,游戏是一个相对受控的环境,规则、交互、事件、看点都是预先定义好的,便于挖掘一些适合自动化的环节。

先晒一下成绩,今天是成为UP主的第62天,共投稿了78个视频,包括两个频道:日常下饭、高能混剪。数据如下,还不是很多,所以希望逛B站的朋友多多支持、感激不尽~

01

素材获取

目前用到的素材主要是大仙在虎牙上的录播回放,虎牙很大方地把主播的回放都共享了出来,估计也是鼓励二次创作,访问以下链接,搜素张大仙即可。

https://v-material.huya.com

正常情况下每天对应一个页面,大概5小时左右(19:30~24:00),当然也有一天对应多个页面的情况,即这一天的直播包含多个片段。

每个页面点进去,在右下方可以找到免费下载的按钮,点击即可得到下载链接,大概长这个样子。

http://v-replay-tx.cdn.huya.com/record/ai/1259515661837-1259515661837-4682562792811659264-2519031447130-10057-A-0-1/1609847204/2021-01-05-19:46:42_2021-01-06-00:54:16.m3u8

可以看到链接中包含回放的起止时间,例如从2021-01-05-19:46:42到2021-01-06-00:54:16,并且是个m3u8,即视频流。弹窗中提示“复制链接到M3U8下载器下载”,同时贴心地给出了M3U8下载器的下载链接。

但如果你对ffmpeg熟悉的话,直接用ffmpeg即可方便地下载。ffmpeg是一款功能非常强大的命令行视频处理工具,网上相关的介绍文章很多,可以自行搜索。使用以下命令即可下载上面的m3u8,其中url为上面的m3u8,out.mp4为保存的视频文件名称。

ffmpeg -i url out.mp4

当然,上面的流程中还有很多手动的部分,例如打开某一天的直播回放页面、点击免费下载获取下载链接、在命令行使用ffmpeg下载视频等。为了干掉这些手动环节,我写了一个代码并定时运行,从而可以全自动地下载每天的录播,主要完成以下几个步骤:

  • 由于前一天的录播到第二天才能下载,所以根据当前的日期,得到前一天的日期;
  • 访问大仙的素材列表页面,按最新发布排序并遍历,找到前一天所对应的回放页面;
  • 访问回放页面,得到下载链接,并使用ffmpeg下载。

代码不复杂,主要用到os、datetime、requests、BeautifulSoup等。从2020-10-14开始,已经下载了78天的直播回放,并持续下载中,为后续的剪辑任务积累了充足的素材。

02

日常下饭

大仙在虎牙上的订阅已经超过2000W,可以说是当仁不让的王者一哥。大家看大仙的直播,一方面是学技术,另一方面更多地是喜欢看大仙挨锤,因此有了下饭、开饭了、688厨神等说法。

大仙有个日更的视频系列叫每日仙放送,会剪辑前一天直播中的高能击杀和下饭被击杀片段,不过时长较短,每次看完都有不过瘾的感觉。既然下载了每天的直播回放,所以想着不妨做一个更长更完整的日常下饭系列,口号是快速吃完一整晚的饭,不辜负每一粒米!

先看成品,这是这个频道的第一个视频,素材用的是2020-10-14的直播回放,实现的效果是自动找出回放中的被击杀片段,剪辑在一起并配上背景音乐。

为了完成以上的剪辑任务,需要解决以下几个核心问题:

  • 如何确定被击杀的时刻?
  • 找到被击杀时刻后,如何向前向后分别确定片段的起止时刻?
  • 如何拼接各个片段?
  • 如何添加背景音乐?

第一个问题可以借助OCR来解决,例如遍历整个视频,每1秒做一次OCR,因为王者荣耀中如果被击杀,会在中央区域出现您已阵亡的字样,所以通过这种方法可以比较准确地找到被击杀时刻。我用的是PaddleOCR,很容易上手,而且识别效果也还不错。

https://www.paddlepaddle.org.cn/hub/scene/ocr

第二个问题主要从音频的角度来解决。剪辑所用的素材片段应当尽可能有趣,一个可参考的点就是大仙在说话,可以是尖叫、吐槽、愤怒、憨笑等。相反的,如果一个片段中大仙始终保持沉默,那么该片段的调性就比较差,应当被舍弃。这里简单粗暴地用音量大小变化作为判断标准,实现上用了librosa,目前来看基本上可以满足需求。

第三和第四个问题都可以通过ffmpeg来解决,没错,ffmpeg就是这么强大。至于背景音乐,我预先准备了几首,合成的时候随机选择即可。

拼接多个片段,将每个片段的路径按以下格式写入txt。

file 'video1.mp4'

file 'video2.mp4'

file 'video3.mp4'

然后使用以下命令,-y表示如果结果视频存在则覆盖,paths.txt表示上面的txt文件,out.mp4为拼接结果,-loglevel quiet表示不打印日志,因为强迫症看了难受。当然,如果得不到预期结果,还是得打印日志看看问题出在哪。

ffmpeg -y -f concat -i paths.txt -c copy out.mp4 -loglevel quiet

给纯视频加音频:

ffmpeg -y -i video.mp4 -i audio.mp3 -vcodec copy out.mp4

给带音频的视频加音频:

ffmpeg -y -i video.mp4 -i audio.mp3 -c:v copy -filter_complex "[0:a]aformat=fltp:44100:stereo,apad[0a];[1]aformat=fltp:44100:stereo,volume=1.5[1a];[0a][1a]amerge[a]" -map 0:v -map "[a]" -ac 2 out.mp4

以上就是实现日常下饭剪辑任务所需的全部知识点,目前该频道已经更新了77个视频,喜欢看大仙做饭的童鞋可以看个痛快了。

在下一篇文章中,我将介绍高能混剪所实现的剪辑任务,以及相应的知识点和实现细节,敬请期待。

0 人点赞