快速合并B站录播姬的分段录播文件
2023-07-12 02:49:20 来源:哔哩哔哩
前言:
本文使用工具有 python3 和 ffmpeg
(相关资料图)
python3下载链接:/downloads
ffmpeg下载链接:
正文:
相信很多录播姬们都在用 B站录播姬 录制视频,我已经把检测到可能缺少数据时分段
这个选项关掉了,但录播还是分成了好多段,某次直播直接分成了32段,这样大大增加了手动合并视频的工作量。
我自己写了一个脚本,可以获取录播文件的文件名,然后提交到ffmpeg进行合并
这段代码的功能是读取当前目录录播文件名,然后写入到里。
然后根据之前写入的来合并录播文件。
这段ffmpeg命令就是把列出的视频文件拼接成一个新的文件,由于是拼接不会重新渲染,所以速度很快。
可能有人会疑惑为什么不直接读取分段录播文件名来生成合并后的录播文件的文件名?
这里主要是因为我进行录播的主播 "鲸鱼娘西丝特official" 经常直播到晚上12点之后,录播文件跨天了,这里为了省事不多写代码直接读取自己输入的文件名就行了。
参考文章:
/3/library/
/weixin_43115411/article/details/126049598
ai解读代码:
import glob
和import os
导入了需要使用的模块,glob
模块用于查找文件路径匹配的所有文件,os
模块用于与操作系统交互。
def concat_videos():
定义了一个名为concat_videos
的函数,用于拼接视频文件。
videos = sorted(("26545331*.flv"), key=)
使用函数查找当前目录下以 "26545331" 开头且以 ".flv" 结尾的所有文件,并使用
sorted
函数按照文件的修改时间进行排序,结果存储在videos
变量中。
with open('', 'w', encoding='UTF-8') as f:
使用open
函数打开名为 "" 的文本文件,并以写入模式打开。使用with
语句可以确保文件在使用结束后自动关闭,并将文件对象赋值给f
。
('\n'.join(f"file '{video}'" for video in videos))
将每个视频文件名按照要求的格式写入文件。使用生成器表达式和join
方法将文件名连接成一个字符串,并使用换行符分隔每个文件名。
(f"ffmpeg -f concat -safe 0 -i -c copy -y {input('输入日期:')}直播.mp4")
执行系统命令,使用 FFmpeg 工具根据 "" 中列出的视频文件进行拼接。命令中使用-f concat
指定拼接方式,-safe 0
禁用安全检查,-i
指定输入文件为 "",-c copy
表示直接复制流而不进行重新编码,-y
表示覆盖输出文件而不询问确认,最后通过input
函数获取用户输入的日期字符串并拼接到输出文件名中。
if __name__ == '__main__':
检查当前模块是否作为主程序运行。
concat_videos()
调用concat_videos
函数,执行视频拼接操作。
解读 ffmpeg -f concat -safe 0 -i -c copy -y 直播.mp4
:
根据你提供的命令
ffmpeg -f concat -safe 0 -i -c copy -y 直播.mp4
,它使用 FFmpeg 工具将中列出的视频文件进行拼接,并生成一个名为
直播.mp4
的输出文件。让我逐个解释这个命令的含义:
ffmpeg
: 这是 FFmpeg 工具的命令行执行程序。
-f concat
: 指定使用拼接器(concatenator)作为输入文件。
-safe 0
: 禁用对文件路径的安全检查,允许拼接器读取任意文件路径。
-i
: 指定输入文件为,该文件包含要拼接的视频文件列表。
-c copy
: 指定将输入流复制到输出文件,而不进行重新编码。
-y
: 在输出文件存在时,自动覆盖同名的输出文件,而不需要用户确认。
直播.mp4
: 指定输出文件的文件名为直播.mp4
。综合起来,该命令告诉 FFmpeg 工具读取
中列出的视频文件,并按照顺序将它们拼接起来,然后将拼接后的结果保存为
直播.mp4
。请确保文件包含正确的视频文件列表,并且所需的视频文件都位于当前工作目录中。
[责任编辑:]