一、前言

  本人是自学java,无意中发现了B站这个可以学习的网站,但是在B站上面学习实在是太痛苦了,如果网络不好的情况下更加是痛苦,尤其是对于我这种精益求精具有强迫症的人来说简直是雪上加霜。

  而且如果要在B站上截图做笔记,也是非常的不快,用Q截图的时候,按住ctrl后就会弹出视频的显示,让人非常的不快,最痛苦就是如果不是会员,还得忍受80%加载的速度。简直是不能忍,播放加速方面感觉也有欠缺。最高只有2.0的加速,这样对于脑回路比较大的我来说,往往是不够的!

  有同学就想着将B站的视频下载下来,用爱奇艺万能联播进行播放(这是目前我个人而言觉得比较给力的播放器了,快进不失音),但是下载的视频的格式往往是这样的,用播放器读取视频也不知道这个视频具体是什么信息,导致在做笔记的时候也比较的不方便。

java 怎么获取哔哩哔哩直播弹幕 哔哩哔哩java版_代码实现

  有没有一种好的方法呢?

二、代码实现

  废话就不多说了,直接代码上撸起来。

1.分析下载后的文件格式

  包含.info的文件信息,就包含了视频的文件名!

  我这里下载的是尚硅谷的学习视频资料,这家视频还不错,值得去看看。

java 怎么获取哔哩哔哩直播弹幕 哔哩哔哩java版_json_02

看到没 ,文件格式就是json格式,那么既然是json,就好解决了。思路就是读取这个文件,然后解析出这个字段的name值,再将视频文件重命名即可。

话不多说,代码撸起。

2.代码实现:Java语言实现

这段代码是一个工具类,具体作用就是读取这个.info的文件,然后将它的数据以String格式返回。

package bilibili;

import java.io.*;

public class ReadFile {
    public static String readFileContent(String fileName) {
        File file = new File(fileName);
        BufferedReader reader = null;
        String encoding = "UTF-8";
        StringBuilder sbf = new StringBuilder();
        try {
            reader = new BufferedReader(new InputStreamReader(
                    new FileInputStream(file),encoding));
            String tempStr;
            while ((tempStr = reader.readLine()) != null) {
                sbf.append(tempStr);
            }
            reader.close();
            return sbf.toString();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e1) {
                    e1.printStackTrace();
                }
            }
        }
        return sbf.toString();
    }
}

3.主要代码实现、

package bilibili;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import util.StringUtils;

import java.io.File;
import java.util.Objects;

/**
 * @author ilongsay
 * @date: Create in 2020-04-11 18:48
 */
public class BilibiliSetTitle {

    public static void renameFile(String filePath) {
        System.out.println("========start transform=============");
        File file = new File(filePath);

        //获取所有的文件,不包括子文件
        File[] listFiles = file.listFiles();
        for (File listFile : Objects.requireNonNull(listFiles)) {
            if (listFile.isDirectory()) {
                //如果是文件夹,读取文件夹内的文件
                File file1 = new File(listFile.getAbsolutePath());
                File[] listFiles1 = file1.listFiles();

                String title=null;
                for (File file2 : Objects.requireNonNull(listFiles1)) {
                    String fileName = file2.getName();
                    //包括info的就是其信息
                    if (fileName.contains(".info")) {
                        String fileContent = ReadFile.readFileContent(file2.getAbsolutePath());
                        JSONObject object = JSON.parseObject(fileContent);
                        title = object.get("PartName").toString();
                        //这里的break就是减少循环次数,提升性能
                        break;
                    }
                }
                for (File file2 : listFiles1) {
                    String fileName = file2.getName();
                    if (fileName.contains(".flv")&& StringUtils.isNotEmpty(title)) {
                        //新的文件名称
                        String newNamePath = listFile.getAbsolutePath() + "/" + title+".flv";
                        File newFile = new File(newNamePath);
                        file2.renameTo(newFile);
                        break;
                    }
                }
            }
        }
        System.out.println("========endTransform============");

    }

    public static void main(String[] args) {
        //b站下载的文件夹目录,如果要批量更改多个目录也可以自己实现一下,原理都是一样的
        //目前只实现了单个文件夹修改
        renameFile("E:\\study\\77774320");
    }
}

4.需要添加的pom依赖:

<dependency>
       <groupId>com.alibaba</groupId>
       <artifactId>fastjson</artifactId>
       <version>1.2.58</version>
</dependency>

5.生成后的结果图

java 怎么获取哔哩哔哩直播弹幕 哔哩哔哩java版_java_03

万能联播效果图

java 怎么获取哔哩哔哩直播弹幕 哔哩哔哩java版_java 怎么获取哔哩哔哩直播弹幕_04

一般我都是开2.3倍加速,听起来不错。回退,快进也特别方便,没有烦人的加载中......美滋滋