安卓网页视频抓取工具( 一个辅助提取B站Android客户端缓存视频的小工具介绍 )

优采云 发布时间: 2021-12-02 09:16

  安卓网页视频抓取工具(

一个辅助提取B站Android客户端缓存视频的小工具介绍

)

  [C# | [Unity] B站Android客户端缓存视频提取工具

  这篇文章文章用了一个笨方法,后来在网上看到了you-get工具,可以通过URL直接从命令行下载视频,并且支持批量下载。

  B站只允许使用手机缓存视频,但是缓存的视频分散在不同的文件夹中,每个视频的名字都是0.blv。不点击打开,不知道是哪个视频,所以写了个小工具,辅助从B站Android客户端提取缓存的视频。

  因为Unity正好是开放的,所以我直接在Unity中写了下面的代码,所以使用了一些特殊的Unity类。如果要在其他地方使用以下代码,则需要替换文章中提到的几个特殊类。失去。

  指示

  该工具用于处理视频量相对较大的视频集。如果是单个视频,只需手动复制视频并重命名即可。

  用法非常简单。视频缓存到手机后,将手机连接电脑,打开视频缓存文件夹,将缓存集合拖到电脑上,然后在Unity Inspector面板中填写视频位置信息,点击Extract。完成提取。如果你不想在Unity中使用它,你需要替换下面提到的特殊类,然后调用ExtractVideoFile()方法来提取视频。

  注:代码中使用cut方法对视频进行处理。如果不从手机复制缓存的视频直接运行代码,缓存的视频会被剪切到其他位置。如果不想剪切,可以将代码中的 File.Move() 方法改为 File.Copy() 方法。

  参数示例

  

  备注:部分视频合集中的部分单集视频会被分成多个视频文件(例如:0.blv、1.blv、2.blv等),没有处理方法在这里。如果遇到这种情况,可以进行多次提取,每次提取时修改源文件名参数VideoName和输出文件扩展名参数OutputExt(例如:VideoName:"1.blv", OutputExt:"-< @1.flv")。多次解压时,解压后的文件会报错找不到视频文件,可以忽略。

  B站Android客户端的一些相关资料

  使用的特殊类和方法

  源代码

<p>using System.IO;

using UnityEngine;

public class BilibiliTool : MonoBehaviour

{

/** 说明

* B站Android客户端缓存视频的存放文件夹是“手机内部存储\Android\data\tv.danmaku.bili\download\”;

* 具体的视频路径是“手机内部存储\Android\data\tv.danmaku.bili\download\\\\”;

* 存储每个视频的信息的文件是“手机内部存储\Android\data\tv.danmaku.bili\download\\\entry.json”;

* 上述说明中的、、、需要根据下载的文件的具体名称进行修改,代码中的“domain”参数就是“lua.xxx.xxx.xxx”部分。

*/

// 默认值仅作示例,每个视频集的avid和视频父文件夹名称都不一样,要进行相应的修改

public string inputFolder = @"E:\资料\视频教程\46312220\";

public string outputFolder = @"E:\资料\视频教程\线性代数\";

public string domain = "lua.flv720.bili2api.64";

public int startNumber = 1;

public int endNumber = 116;

public string videoName = "0.blv";

public string outputExt = ".flv";

public string jsonName = "entry.json";

[Header("点击勾选框执行提取")]

public bool extract = false;

private void OnValidate()

{

if (extract)

{

extract = false;

ExtractVideoFile(inputFolder, outputFolder, domain, startNumber, endNumber, videoName, outputExt, jsonName);

}

}

///

/// 提取视频文件。

///

/// 存放下载的原始视频的文件夹

/// 提取视频的输出文件夹

/// 原始视频文件路径中格式为“lua.x.x.x”的文件夹的名称

/// 视频合集中视频的起始编号

/// 视频合集中视频的结束编号

/// 原始视频名称(默认为0.blv)

/// 输出视频文件的扩展名(默认为flv)

/// 存储视频信息的Json文件的名称(默认为entry.json)

public void ExtractVideoFile(string inputFolder, string outputFolder, string domain, int startNumber, int endNumber, string videoName = "0.blv", string outputExt = ".flv", string jsonName = "entry.json")

{

// 检查输入路径

if (!Directory.Exists(inputFolder))

{

Debug.LogError("文件路径不存在。", this);

return;

}

// 检查输出路径

if (!Directory.Exists(outputFolder))

{

Directory.CreateDirectory(outputFolder);

}

// 移动和重命名

for (int i = startNumber; i

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线