一般操作,打开需要下载缓存的视频后,点击下面的缓存按钮,选择你需要的清晰度,选好后点击下载就会在后台下载,直至缓存完毕;安卓手机使用自带文件管理器打开,在文件管理里,找到视频文件,把video.m4s 的视频文件改为.mp4,就可以使用手机内置的视频播放器播放.但是大家会发现,这个视频是没有声音的,因为现在单个缓存视频文件是以下的格式:

audio.m4s 是音频文件,video.m4s 是视频文件,两个文件合起来才是我们看到的视频,那有没有方法把这两个文件合成一个视频文件呢,这个是可以的,视频音频处理,一般采用的是ffmpeg技术,
ffmpeg相关的,可参考:ffmpeg常用命令_大渔歌_的博客-CSDN博客
(当然,安装的方法我们暂时就不讲了,网上一大堆,而且很简单)
我们常常缓存的视频,是多个(比如番剧,章节等),这里就需要用到我们的bat 批处理,相关bat,大家可以参考如下:
ffmpeg -i 音频 -i 视频 -vcodec copy -acodec copy -f mp4 文件名字
ffmpeg 处理音视频功能很强大,大家有兴趣可以了解/学习一下,我平时也是简单使用一点,感觉很好玩.
缓存的单个视频文件夹,我们可以看到有一个entry.json文件,该文件保存的是该节目(大的场景)的信息和该视频(单个视频)的信息,比如,文件名,我们合成视频的时候还是希望视频文件的名字和手机上看到的一样,有助于识别(早期的时候我都是按照顺序,给视频命名1.MP4,2.MP4.....有时候顺序还会出错,很是麻烦,)

这里有个问题,该视频的名字是存在entry.json文件中的,它内容就是一个json字符串,那如何获取到该名字呢,我试着用 .bat获取,可能是我.bat 知识储备有点少,没做做出来,然后我就退一步,用java直接获取各文件中json 对应的名字,保存在一个txt文件中(注意,改txt文件要修改编码格式为ANSI,可通过另存为 来实现)
以下为java代码:
public static void main(String[] args) {
List<String> listContent = new ArrayList<>();
try{
File file = new File("D:\\Bili\\rk");
File[] tempList = file.listFiles();
for(int i = 0;i < tempList.length;i++){
File[] list = tempList[i].listFiles();
for(int j = 0;j < list.length;j++){
if(list[j].toString().contains(".json")){
String s1 = readFileByLines(list[j].getAbsolutePath().toString());
JSONObject json = JSONObject.fromString(s1);
System.out.println(json.getJSONObject("page_data").get("part"));
//todo
break;
}
}
}
Collections.sort(listContent);
for(int i = 0;i<listContent.size();i++){
System.out.print(listContent.get(i) + "\n");
}
}catch(Exception e){
e.printStackTrace();
}
}
public static String readFileByLines(String fileName) {
FileInputStream file = null;
BufferedReader reader = null;
InputStreamReader inputFileReader = null;
String content = "";
String tempString = null;
try {
file = new FileInputStream(fileName);
inputFileReader = new InputStreamReader(file, "utf-8");
reader = new BufferedReader(inputFileReader);
// һ�ζ���һ�У�ֱ������nullΪ�ļ�����
while ((tempString = reader.readLine()) != null) {
content += tempString;
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
return null;
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {
}
}
}
return content;
}
把获取到的所有的视频标题都存放在name.txt中(记得去除标题的空格,因为视频合成的时候,空格有可能会影响ffmpeg 的识别/合成)
视频合成,我们知道要用到的是for 功能进行循环处理(可参考),有一点要注意的是,怎么让合成的视频和name.txt的每一行标题名对应起来,这就需要精准读取name.txt指定某一行名字, 那如何读取name.txt某一行的名字呢,测试bat 如下,比如要只读取第三行( 注意,该txt文件和 .bat文件放在同一文件夹下):
@echo off
setlocal enabledelayedexpansion
set /a row=0
for /f "tokens=*" %%i in (name.txt) do (
set /a row+=1
if !row!==3 echo %%i
)
pause
这个问题解决了,我们就可以批处理所有的了,如下( 注意,该txt文件和 .bat文件放在同一文件夹下):
@echo off
setlocal enabledelayedexpansion
rem 要读取的文件
set filedir=D:\Bili\rk\*
rem 视频要输出到的文件夹
set outpath=D:\Bili\rk2\
set /a count=0
set name=test
for /d %%i in (%filedir%) do (
echo ==============================
rem 截取文件名称字符串
rem 注意要修改截取的位置跟输入路径有关系
rem 第几个文件
set /a count+=1
echo !count!
rem name.txt对应的第几行
set /a row=0
for /f "tokens=*" %%i in (name.txt) do (
set /a row+=1
if !row! == !count! set name=%%i
)
echo name = !name!
set video=%%i\32\video.m4s
set audio=%%i\32\audio.m4s
echo 输出文件到: %outpath%!name!.mp4
rem 如果文件夹不存在则创建文件夹
if not exist %outpath% (md %outpath% )
rem 使用ffmpeg命令合成哔哩哔哩的音频、视频文件
ffmpeg -i !audio! -i !video! -vcodec copy -acodec copy -f mp4 %outpath%!name!.mp4
)
pause
以上处理之后就可以获取到带有标题名的视频了,
以上仅供学习参考
我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h
Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack
这个问题在这里已经有了答案:Railsformattingdate(4个答案)关闭4年前。我想格式化Time.Now函数以显示YYYY-MM-DDHH:MM:SS而不是:“2018-03-0909:47:19+0000”该函数需要放在时间中.现在功能。require‘roo’require‘roo-xls’require‘byebug’file_name=ARGV.first||“Template.xlsx”excel_file=Roo::Spreadsheet.open(“./#{file_name}“,extension::xlsx)xml=Nokogiri::XML::Build
我试过重新启动apache,缓存的页面仍然出现,所以一定有一个文件夹在某个地方。我没有“公共(public)/缓存”,那么我还应该查看哪些其他地方?是否有一个URL标志也可以触发此效果? 最佳答案 您需要触摸一个文件才能清除phusion,例如:touch/webapps/mycook/tmp/restart.txt参见docs 关于ruby-如何在Ubuntu中清除RubyPhusionPassenger的缓存?,我们在StackOverflow上找到一个类似的问题:
我喜欢使用Textile或Markdown为我的项目编写自述文件,但是当我生成RDoc时,自述文件被解释为RDoc并且看起来非常糟糕。有没有办法让RDoc通过RedCloth或BlueCloth而不是它自己的格式化程序运行文件?它可以配置为自动检测文件后缀的格式吗?(例如README.textile通过RedCloth运行,但README.mdown通过BlueCloth运行) 最佳答案 使用YARD直接代替RDoc将允许您包含Textile或Markdown文件,只要它们的文件后缀是合理的。我经常使用类似于以下Rake任务的东西:
尝试在我的RoR应用程序中实现计数器缓存列时出现错误Unknownkey(s):counter_cache。我在这个问题中实现了模型关联:Modelassociationquestion这是我的迁移:classAddVideoVotesCountToVideos0Video.reset_column_informationVideo.find(:all).eachdo|p|p.update_attributes:videos_votes_count,p.video_votes.lengthendenddefself.downremove_column:videos,:video_vot
给定一个复杂的对象层次结构,幸运的是它不包含循环引用,我如何实现支持各种格式的序列化?我不是来讨论实际实现的。相反,我正在寻找可能会派上用场的设计模式提示。更准确地说:我正在使用Ruby,我想解析XML和JSON数据以构建复杂的对象层次结构。此外,应该可以将该层次结构序列化为JSON、XML和可能的HTML。我可以为此使用Builder模式吗?在任何提到的情况下,我都有某种结构化数据-无论是在内存中还是文本中-我想用它来构建其他东西。我认为将序列化逻辑与实际业务逻辑分开会很好,这样我以后就可以轻松支持多种XML格式。 最佳答案 我最
是否有简单的方法来更改默认ISO格式(yyyy-mm-dd)的ActiveAdmin日期过滤器显示格式? 最佳答案 您可以像这样为日期选择器提供额外的选项,而不是覆盖js:=f.input:my_date,as::datepicker,datepicker_options:{dateFormat:"mm/dd/yy"} 关于ruby-on-rails-事件管理员日期过滤器日期格式自定义,我们在StackOverflow上找到一个类似的问题: https://s
动漫制作技巧是很多新人想了解的问题,今天小编就来解答与大家分享一下动漫制作流程,为了帮助有兴趣的同学理解,大多数人会选择动漫培训机构,那么今天小编就带大家来看看动漫制作要掌握哪些技巧?一、动漫作品首先完成草图设计和原型制作。设计草图要有目的、有对象、有步骤、要形象、要简单、符合实际。设计图要一致性,以保证制作的顺利进行。二、原型制作是根据设计图纸和制作材料,可以是手绘也可以是3d软件创建。在此步骤中,要注意的问题是色彩和平面布局。三、动漫制作制作完成后,加工成型。完成不同的表现形式后,就要对设计稿进行加工处理,使加工的难易度降低,并得到一些基本准确的概念,以便于后续的大样、准确的尺寸制定。四、
2022/8/4更新支持加入水印水印必须包含透明图像,并且水印图像大小要等于原图像的大小pythonconvert_image_to_video.py-f30-mwatermark.pngim_dirout.mkv2022/6/21更新让命令行参数更加易用新的命令行使用方法pythonconvert_image_to_video.py-f30im_dirout.mkvFFMPEG命令行转换一组JPG图像到视频时,是将这组图像视为MJPG流。我需要转换一组PNG图像到视频,FFMPEG就不认了。pyav内置了ffmpeg库,不需要系统带有ffmpeg工具因此我使用ffmpeg的python包装p