将手机B站上的缓存视频导出:
(1) 将待导出的视频拷贝到ffmpeg/bin/bilibili文件夹
(2) 用matlab生成ffmpeg命令
1 addpath('D:\Soft\Matlab\toolbox\zjwtoolbox\jsonlab-2.0'); 2 3 rootdir = 'D:\Soft\ffmpeg\bin\bilibili\'; 4 5 %第一级目录 6 dir1 = dir(rootdir); 7 for i1 = 1:length(dir1) 8 if strcmp(dir1(i1).name,'.') || strcmp(dir1(i1).name,'..') 9 continue; 10 end 11 if dir1(i1).isdir~=1 12 continue; 13 end 14 15 %第二级目录 16 dir2 = dir([rootdir,'\',dir1(i1).name]); 17 for i2 = 1:length(dir2) 18 if strcmp(dir2(i2).name,'.') || strcmp(dir2(i2).name,'..') 19 continue; 20 end 21 if dir2(i2).isdir~=1 22 continue; 23 end 24 25 %第三级目录 26 dir3 = dir([rootdir,'\',dir1(i1).name,'\',dir2(i2).name]); 27 for i3 = 1:length(dir3) 28 if strcmp(dir3(i3).name,'.') || strcmp(dir3(i3).name,'..') 29 continue; 30 end 31 if dir3(i3).isdir~=1 32 continue; 33 end 34 35 ldir = [dir3(i3).folder '\' dir3(i3).name]; 36 37 videoPath = [ldir '\video.m4s']; 38 audioPath = [ldir '\audio.m4s']; 39 jsonPath = [dir3(i3).folder '\entry.json']; 40 41 42 %文件名 43 jsonData=loadjson(jsonPath,'Encoding','UTF-8'); % jsonData是个struct结构 44 pageData = jsonData.page_data; 45 match = ["<",">"," ","/","\","|",":",'"',"*","?"]; 46 if isfield(pageData,'download_subtitle') 47 title = erase(pageData.download_subtitle,match); 48 else 49 title = erase(jsonData.title,match); 50 end 51 if length(title)>50 52 title = title(1:50); 53 end 54 55 savePath = [rootdir title '.mp4']; 56 57 disp(['ffmpeg -i ' videoPath ' -i ' audioPath ' -codec copy ' savePath]); 58 59 end %i3 60 end 61 end
(3) 将生成的命令拷贝到bilibilidown.bat,运行即可。
另,只导出音频的命令:
1 ffmpeg.exe -i audio\audio1.m4s -codec copy audio\audio1.mp4 2 ffmpeg.exe -i audio\audio1.mp4 audio\audio1.mp3
即首先将m4s转换为mp4,然后将mp4转换为mp3。
如果想要剪切和拼接mp3文件,可用网上下载的小工具,比如"MP3剪切合并大师"。