问题:
b站视频下载之后,其他视频播放器打不开。
解决方法:
以16进制格式的文件编辑器打开,删掉前面的6个F。
困难:
1、notepad++、vscode的hexeditor无法直接修改。
2、winhex收费。
3、网页版hex编辑器对文件大小有要求。
结论:手写脚本。
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class formatFiles {
public static void recurseFile(File file) throws Exception{
if(file.isFile()&&file.toString().endsWith("mp4")){
//todo: 处理视频文件,修改字符。
FileInputStream in = new FileInputStream(file);
System.out.println(file.getName());
String[] filePart = file.getName().split("\\.");
File target = new File(file.getParent().toString(),filePart[0]+"_copy."+filePart[1]);
FileOutputStream out = new FileOutputStream(target);
byte[] fileData = new byte [61858764];
int lineLength = in.read(fileData);
out.write(fileData,3,fileData.length-3);
in.read(fileData);
while (lineLength !=-1){
out.write(fileData);
lineLength = in.read(fileData);
}
in.close();
out.close();
}else if(file.isDirectory()){
File[] listFile = file.listFiles();
for(int i= 0;i<listFile.length;i++)
{
recurseFile(listFile[i]);
}
}
}
public static void main(String[] args) throws Exception {
File dirs = new File("F:\\新建文件夹\\ss28747");
File[] files = dirs.listFiles();
for(int i =0; i < files.length; i++)
{
recurseFile(files[i]);
}
}
}
思考:
1、希望可以更快速的处理文件辅助,我觉得有两种方式:第一种把文件夹下面的文件放到一个队列中供多线程读写。第二种针对大文件分割,然后分到每个线程里面进行copy。
2、希望可以工具化。指定修改某一处或者多处字符。
3、这里用的是投机取巧的方式。FF在byte类型数组里值是-1,而且位置也比较靠前。直接改就完了,如果作者把每个视频帧前面放一段字符,或者更复杂。那么我是无法确定对着改的。本着能用的原则。暂时就这样了。