欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python + ffmpeg 将某站的缓存视频文件批量转换为MP4格式

程序员文章站 2022-07-12 21:20:48
...

这是一篇很无聊的文章,之所以写它是因为这周还没写博客,但是好像没啥可写的,刚好今天突发奇想,想要把某站的APP缓存视频文件转化为mp4 格式,方便在电脑上看,方法很简答,很快就做完了,所以,又一篇水文诞生了,罪过,罪过。

水文警告!水文警告!这是一篇毫无营养的水文!

一、题外话

话说某站可真是个好地方,原本我只是在上面看看动漫,看看别人做的鬼畜视频而已。但最近我发现上面有好多学习的课程,全部免费无广告,真心不错,对于热爱学习的我来说,这里简直就是天堂。

二、准备工作

1. 安装 ffmpeg

请参考本人另外一篇文章:https://blog.csdn.net/qq_38863413/article/details/105017775

2. 安装ffmpy

pip install ffmpy

三、分析缓存视频的目录结构

首先查看目录的结构:

python + ffmpeg 将某站的缓存视频文件批量转换为MP4格式
这里我多说几句,某站的缓存视频的文件根目录可以在app中查看你的缓存目录信息,我用的是android 机器,我的位置是:/Android/data/tv.danmaku.bili/download ,我选取了我缓存的一个视频根目录: 76426972 。 目录的结构如上图所示:
首先第一层子目录是章节号,然后每一章节目录里面有一个文件夹,我们暂时称它为 av_path 吧,因为有audio.m4s 和 video.m4s 。通过分析之后我得知 danmaku.xml 貌似是弹幕文件,entry.json 中存储了视频的章节信息,名称等信息。这可以为转化后的视频命名,不错不错,省事了。

看一下 entry.json 都保存了什么,将其内容复制到 浏览器控制台查看一下。

python + ffmpeg 将某站的缓存视频文件批量转换为MP4格式
信息很全面,可以使用 entry.page_data.part 为输出视频命名。

编写代码

from ffmpy import FFmpeg
import os
import json

# 缓存视频的根目录
root_path="/home/qianqianjun/视频/78693479"
av_path="64"

# 视频输出的目录
output_path="/home/qianqianjun/视频/Tensorflow2.0教程"
os.makedirs(output_path,exist_ok=True)

chapters=os.listdir(root_path)
for chapter in chapters:
    # 获取缓存视频文件目录
    audio_path=os.path.join(root_path, chapter, av_path, "audio.m4s")
    video_path=os.path.join(root_path, chapter, av_path, "video.m4s")
    # 获取输出视频名称
    entry_path=os.path.join(root_path, chapter, "entry.json")
    with open(entry_path, encoding="utf-8") as f:
        entry=json.load(f)
    name=entry['page_data']['part']
    output=os.path.join(output_path,"{}.mp4".format(name))

    if os.path.exists(output):
        continue

    # 使用ffmpeg 合并视频和音频
    translator=FFmpeg(
        inputs={
            video_path:None,
            audio_path:None
        },
        outputs={
            output:'-c:v copy -strict experimental'
        }
    )
    translator.run()
    print("视频 {}.mp4 转换成功".format(name))

    # 这里仅演示转换一个视频,批量转换需要删除下面的一行。
    exit(0)

转换成功了,视频可播放:
python + ffmpeg 将某站的缓存视频文件批量转换为MP4格式

代码没啥可说的,就这样吧,都说了这是一篇水文了嘛……

相关标签: 实用工具