欢迎光临散文网 会员登陆 & 注册

快速合并B站录播姬的分段录播文件

2023-07-12 02:36 作者:灯塔姬  | 我要投稿

前言:

本文使用工具有 python3 和 ffmpeg 

python3下载链接:https://www.python.org/downloads

ffmpeg下载链接:https://ffmpeg.org/download.html

正文:

相信很多录播姬们都在用 B站录播姬 录制视频,我已经把检测到可能缺少数据时分段 这个选项关掉了,但录播还是分成了好多段,某次直播直接分成了32段,这样大大增加了手动合并视频的工作量。

7月11日的32个分段录播文件

我自己写了一个脚本,可以获取录播文件的文件名,然后提交到ffmpeg进行合并

import glob
import os

def concat_videos():
    videos = sorted(glob.glob("26545331*.flv"), key=os.path.getmtime)
    with open('videos.txt', 'w', encoding='UTF-8') as f:
        f.write('\n'.join(f"file '{video}'" for video in videos))

    name = input('输入日期:')
    os.system(f"ffmpeg -f concat -safe 0 -i videos.txt -c copy -y {name}直播.mp4")

if __name__ == '__main__': #main是习惯
    concat_videos()

这段代码的功能是读取当前目录录播文件名,然后写入到video.txt里。

然后根据之前写入的video.txt来合并录播文件。

ffmpeg -f concat -safe 0 -i videos.txt -c copy -y 7.11直播.mp4

这段ffmpeg命令就是把videos.txt列出的视频文件拼接成一个新的文件,由于是拼接不会重新渲染,所以速度很快。

可能有人会疑惑为什么不直接读取分段录播文件名来生成合并后的录播文件的文件名?

这里主要是因为我进行录播的主播 "西official" 经常直播到晚上12点之后,录播文件跨天了,这里为了省事不多写代码直接读取自己输入的文件名就行了。

执行成功

参考文章:

https://docs.python.org/3/library/os.path.html

https://blog.csdn.net/weixin_43115411/article/details/126049598


ai解读代码:

  1. import globimport os 导入了需要使用的模块,glob 模块用于查找文件路径匹配的所有文件,os 模块用于与操作系统交互。

  2. def concat_videos(): 定义了一个名为 concat_videos 的函数,用于拼接视频文件。

  3. videos = sorted(glob.glob("26545331*.flv"), key=os.path.getmtime) 使用 glob.glob 函数查找当前目录下以 "26545331" 开头且以 ".flv" 结尾的所有文件,并使用 sorted 函数按照文件的修改时间进行排序,结果存储在 videos 变量中。

  4. with open('videos.txt', 'w', encoding='UTF-8') as f: 使用 open 函数打开名为 "videos.txt" 的文本文件,并以写入模式打开。使用 with 语句可以确保文件在使用结束后自动关闭,并将文件对象赋值给 f

  5. f.write('\n'.join(f"file '{video}'" for video in videos)) 将每个视频文件名按照要求的格式写入文件。使用生成器表达式和 join 方法将文件名连接成一个字符串,并使用换行符分隔每个文件名。

  6. os.system(f"ffmpeg -f concat -safe 0 -i videos.txt -c copy -y {input('输入日期:')}直播.mp4") 执行系统命令,使用 FFmpeg 工具根据 "videos.txt" 中列出的视频文件进行拼接。命令中使用 -f concat 指定拼接方式,-safe 0 禁用安全检查,-i videos.txt 指定输入文件为 "videos.txt",-c copy 表示直接复制流而不进行重新编码,-y 表示覆盖输出文件而不询问确认,最后通过 input 函数获取用户输入的日期字符串并拼接到输出文件名中。

  7. if __name__ == '__main__': 检查当前模块是否作为主程序运行。

  8. concat_videos() 调用 concat_videos 函数,执行视频拼接操作。

解读 ffmpeg -f concat -safe 0 -i videos.txt -c copy -y 7.11直播.mp4

根据你提供的命令 ffmpeg -f concat -safe 0 -i videos.txt -c copy -y 7.11直播.mp4,它使用 FFmpeg 工具将 videos.txt 中列出的视频文件进行拼接,并生成一个名为 7.11直播.mp4 的输出文件。

让我逐个解释这个命令的含义:

  • ffmpeg: 这是 FFmpeg 工具的命令行执行程序。

  • -f concat: 指定使用拼接器(concatenator)作为输入文件。

  • -safe 0: 禁用对文件路径的安全检查,允许拼接器读取任意文件路径。

  • -i videos.txt: 指定输入文件为 videos.txt,该文件包含要拼接的视频文件列表。

  • -c copy: 指定将输入流复制到输出文件,而不进行重新编码。

  • -y: 在输出文件存在时,自动覆盖同名的输出文件,而不需要用户确认。

  • 7.11直播.mp4: 输出文件的文件名为 7.11直播.mp4

综合起来,该命令告诉 FFmpeg 工具读取 videos.txt 中列出的视频文件,并按照顺序将它们拼接起来,然后将拼接后的结果保存为 7.11直播.mp4。请确保 videos.txt 文件包含正确的视频文件列表,并且所需的视频文件都位于当前工作目录中。


快速合并B站录播姬的分段录播文件的评论 (共 条)

分享到微博请遵守国家法律