第一步:
首先我们新建一个文件夹,比如我这里的第一个文件夹:b站视频。
第二步:
在matlab中创建新函数用ffmpeg软件来合并b站视频。我这里是matlab2019a,有些版本可能有些matlab自带函数不支持
代码如下:

function bilibili_Video_combined
%%确保根文件夹中的子文件夹名称都是数字
%%根文件夹包含三个转换文件
path=[uigetdir,'\'];
file1=[path,'b站m4s转MP4.bat'];
file2=[path,'b站blv转MP4.bat'];
% try
% rmdir([path,'输出视频']);
% catch
% end
pathall=dir(path);
pathall=struct2cell(pathall);
pathall=pathall(1,cell2mat(pathall(5,:))==1)';
pathall=pathall(3:end);
[~,loc]=sort(cellfun(@str2double,pathall));
pathall=pathall(loc);
%%第一阶段:生成输出视频
for i=1:size(pathall,1)
try
path1=([path,pathall{i},'\']);%path1是pathall的延伸
path2=dir(path1);
path2=struct2cell(path2);
path2=path2(1,cell2mat(path2(5,:))==1)';
path2=path2(3:end);
[~,loc]=sort(cellfun(@str2double,path2));
path2=path2(loc);
for ii=1:size(path2,1)
path3=([path1,path2{ii},'\',]);
[dirall,~,dirsize]=file_thorough(path3,[],[],[]);
m4s='\S+m4s';
out1 = rmempty_cellarray(regexp(dirall,m4s,'match'));
blv='\S+blv';
out2 = rmempty_cellarray(regexp(dirall,blv,'match'));
if isempty(out1)~=1loc=find(out1{1}{1}=='\');path4=out1{1}{1}(1:loc(end));trycopyfile(file1,path4);   catchdisp([path4,'已存在bat文件']);    endwinopen([path4,'b站m4s转MP4.bat']);pause(round(sum(dirsize)/10000000));
%     pause(3);
end
if isempty(out2)~=1loc=find(out2{1}{1}=='\');path4=out2{1}{1}(1:loc(end));trycopyfile(file2,path4);   catchdisp([path4,'已存在bat文件']);    endwinopen([path4,'b站blv转MP4.bat']);pause(round(sum(dirsize)/10000000));
%     pause(3);
end
disp(['子目录已进行',int2str(ii),'/',int2str(size(path2,1)),' 总目录已进行 ',...int2str(100*round((i)/(size(pathall,1)),3)),'%']);
end
catch
disp('子目录文件不符合程序规范');
end
endwhile 1  %判断所有的cmd窗口是否完成,再进行第二阶段[~,task]=system('query process');TF=strfind(task,'cmd.exe');if length(TF)<=1breakend
end
pause(2);
%%第二阶段:输出视频移动到同一个输出视频文件夹中for i=1:size(pathall,1)
path1=([path,pathall{i},'\']);
path2=dir(path1);
path2=struct2cell(path2);
path2=path2(1,cell2mat(path2(5,:))==1)';
path2=path2(3:end);
for ii=1:size(path2,1)
path3=([path1,path2{ii},'\',]);
[dirall,~,~]=file_thorough(path3,[],[],[]);
json='\S+entry.json';
out = rmempty_cellarray(regexp(dirall,json,'match'));
data=loadjson(out{1}{1},'Encoding','UTF-8');
try
title_mp4=data.page_data.download_subtitle;
title_path=data.title;
catch
title_mp4=data.title;
title_path=data.title;
end
mp4='\S+output.mp4';
out3 = rmempty_cellarray(regexp(dirall,mp4,'match'));
nostr='\/:*?"<>|';
for n=1:size(nostr,2)title_mp4(title_mp4==nostr(n))=' ';title_path(title_path==nostr(n))=' ';
end
warning off;
path9=[path,title_path,'\'];
mkdir(path9);
try
movefile(out3{1}{1},[path9,title_mp4,'.mp4']);
catch
try
disp(['未找到文件',out3{1}{1}]);
catch
disp('未找到文件');
end
end
end
end
%%测试进度

其中使用到的自己编的子函数有

  1. file_thorough顾名思义,遍历文件夹中的子文件
function [dirall,dirmap,dirsize]=file_thorough(folder1,dirall,dirmap,dirsize)
%%example:[dirall,dirmap]=file_thorough(path1,[],[],[]);命令例子
folder1=dir(folder1);for i1 = 1 : length(folder1)if( isequal( folder1( i1 ).name, '.' )||...isequal( folder1( i1 ).name, '..'))               % 如果不是目录则跳过elsefile1 = [folder1(i1).folder,'\',folder1( i1 ).name] ;if folder1(i1).isdir==0dirall=cat(1,dirall,{file1});    a=find(file1=='\');dirmap=cat(1,dirmap,length(a));filesize=dir(file1);dirsize=cat(1,dirsize,filesize.bytes);elsefolder2 = [folder1( i1 ).folder,'\',folder1( i1 ).name] ;[dirall,dirmap,dirsize]=file_thorough(folder2,dirall,dirmap,dirsize);endendend
  1. rmempty_cellarray,去除使用正则表达式regexp函数后找到的空的元胞。
function [out1,judge]=rmempty_cellarray(out1)
judge=nan(size(out1)); %完美的正则表达式无需判断数据中有错误的cell
for i=1:size(out1,1)for j=1:size(out1,2)judge(i,j)=double(~isempty(out1{i,j}));end
end
out1=out1(judge==1);
  1. loadjson,这个函数是在matlab fileexchange中下载的,链接如下:
    https://ww2.mathworks.cn/matlabcentral/fileexchange/33381-jsonlab-a-toolbox-to-encode-decode-json-files

第三步:
安装ffmpeg,具体详情关联
https://blog.csdn.net/xqhrs232/article/details/104230091?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522158759776719195239856573%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=158759776719195239856573&biz_id=0&utm_source=distribute.pc_search_result.none-task-blog-2allbaidu_landing_v2~default-4
安装ffmpeg,然后设置环境变量中的路径。

第四步:需要放入b站视频文件夹的bat脚本文件有
一:

@echo off
title=ffpeg B站视频合并脚本 2019年2月5日
echo 1、本脚本依赖于ffpeg 请将ffpeg添加到环境变量中
echo 2、放到视频的根目录下双击运行
:::定义变量并设置默认值
set FileName=output
set OriginalVideoType=blv
set PackageVideoType=mp4
::接收用户输入
::set /p FileName=输入文件名[默认名总合成]
::set /p OriginalVideoType=输入源视频格式[默认blv不用带点]
::set /p PackageVideoType=输入封装的格式[默认mp4不用带点]
::生成ffmpeng配置文件
for %%i in (*.%OriginalVideoType%*) do echo file '%%i' >> ff.txt
::调用ffmpeg合并视频
ffmpeg -f concat -i ./ff.txt -c copy %FileName%.%PackageVideoType%
::删除生成的ffmpeg配置文件
del ff.txt
::pause

以上文本保存为《b站blv转MP4.bat》
二:

ffmpeg -i video.m4s -i audio.m4s -c:v copy -c:a aac -strict experimental output.mp4

以上文本保存为《b站m4s转MP4.bat》

第五步:
将上述两个bat文件放入b站视频。
将安卓手机Android\data\tv.danmaku.bili\download目录下下载的b站视频复制到b
站视频文件夹中。
打开matlab2019a运行bilibili_Video_combined函数。
实际效果如图:

非文字的子文件夹中的内容就是所要的mp4文件了。

b站安卓手机下载视频后使用matlab自动转为mp4文件并归档相关推荐

  1. 考拉解析网站Android 安卓手机下载视频到手机相册

    第一步:打开网站http://www.zanqianba.com并粘贴视频链接进输入框 第二步:点击下载视频链接

  2. 电脑下载软件用什么软件好?安卓手机下载软件用哪个软件好?IDM下载器说:在做的都是弟弟

              大年初五,迎财神,先祝大家新的一年财源滚滚,接下来为大家分享超级经典的IDM下载器,电脑端毫无争议的下载工具,安卓平台idm也是力压群雄,下面就为大家详细分享下: 1:1DM+下载 ...

  3. android 录制视频模糊,安卓手机录制视频不清晰是什么原因?_科技数码通

    你好,很高兴回答你的问题!安卓手机录制视频不清晰的问题是多方面的,可以从以下角度进行检查: 一.手机的像素配置低 其实以现在主流的手机来讲,录制视频并不应该会不清晰,如果存在不清晰的情况,大概就是手机 ...

  4. android app应用后台休眠,安卓手机锁屏后程序自动关闭,怎么设置手机app允许锁屏后台运行...

    原标题:安卓手机锁屏后程序自动关闭,怎么设置手机app允许锁屏后台运行 安卓手机锁屏后,很多程序就会自动关闭,实际上,这是安卓手机的一种保护机制.为了使系统能够流畅稳定的运行以及更加省电,它都会在手机 ...

  5. android系统开机启动很慢,为什么安卓手机升级系统后,首次启动会比较慢?

    原标题:为什么安卓手机升级系统后,首次启动会比较慢? 点击 很多小伙伴对安卓手机进行系统升级后,可能都会遇到一种情况:手机首次启动的时间好久,首次打开应用的时间也比往常要长. 为什么会出现这种情况? ...

  6. android电脑不识别手机号码,安卓手机刷机后电脑不识别怎么办 如何让电脑重新识别手机...

    安卓手机刷机后电脑不识别应该怎么办? 刷机就是通过软件技术手段获得较高的管理权限及较好的使用体验,或者更改或替换了手机原版系统中固有的一些语言.图片.铃声和软件版本或者操作系统,以达到系统的优化或自己 ...

  7. 手机上视频格式m3u8装换为mp4格式文件

    手机上视频格式m3u8装换为mp4格式文件 M3U8 是 Unicode 版本的 M3U,用 UTF-8 编码的纯文本文件,不能直接转化为mp4文件 1.首先在手机找到m3u8文件,用HTML文本格式 ...

  8. android 视频做背景图片,视频后面怎么加背景图片?安卓手机给视频添加背景图片的方法...

    狸窝是帮助用户解决问题 提供教程解决方案 在这个过程中有使用我们自己开发的软件 也有网上找的工具 只要帮助用户解决问题就好!同意则往下继续了解学习 ... 注意此教程方案是:『安卓手机端教程方案』.很 ...

  9. 作业七:B站安卓手机客户端体验

    上次作业中提到初入B站的经历.体会.以及B站首页问题衍生的对目前web网页的看法.随着几天的慢慢深入体验, 在B站上发现了越来越多的感兴趣的UP主和UP主们的视频作品.我第一个关注的是暴走漫画的敖厂长 ...

  10. 用户吐槽不能给安卓手机发视频,库克:“给你妈妈买台 iPhone !”

    多年以来,苹果和谷歌之间就iOS和Android系统之间的信息互传存在着"蓝绿气泡之争". 本周三,苹果CEO蒂姆·库克在发布了一系列新产品后参加了Vox Media的Code 2 ...

最新文章

  1. HASHMAP(JDK1.7)最详细原理分析(二)
  2. 字符间距加宽5磅怎么设置_11层以下住宅小区——消防车道设置及答疑
  3. ●观光(17.12.02多校联测题目)
  4. 这款超火的游戏,AI只用4小时,就秀出了人类花1年才能达到的水平
  5. Hadoop MapReduce概念学习系列之mr程序详谈(二十三)
  6. UVa 11806 Cheerleaders
  7. 用Python进行数据探索,探索竞赛优胜方案
  8. 【今日CV 计算机视觉论文速览 第123期】Mon, 3 Jun 2019
  9. 超详细的八种RAID磁盘阵列原理及优缺点
  10. python3制作中文词云_Python_制作中文词云
  11. 无网卡驱动,电脑可以用Usb线联网
  12. 使用云呐统一运维一体机降低运维数据中心的运营成本
  13. 数据安全法(草案)概述
  14. 清华集训2014 day1 task1 玛里苟斯
  15. 《VTL语法参考指南》中文版[转]
  16. jenkins构建时,从国内maven私服下载jar包失败
  17. 苹果Mac特殊符号快捷键输入方法有哪些?
  18. 生活-仙剑3的另类台词
  19. Visio2007安装
  20. 地摊叫卖录音软件在哪里做?来推荐一个简单的APP

热门文章

  1. python爬取网页题库_用Python爬取本站离线题库
  2. Python解标准数独
  3. 【132天】尚学堂高淇Java300集视频精华笔记(67-70)
  4. 微信抽奖小程序怎么做怎么弄?微信抽奖小程序制作方法详细介绍
  5. 萤石云全栈开放,亿级终端背后的萤石云平台突显硬核“软”实力
  6. 【转载】正则表达式好文【30分钟教程】
  7. CGI入门一:使用C++实现CGI程序
  8. 多目标跟踪算法方案总结
  9. python怎么连接linux服务器,python连接linux服务器
  10. Python随机生成6位数密码