Skip to content

Commit 1b074c2

Browse files
committed
修复 因为indexOf造成无法正确处理多英文句号文件名的问题
优化 提取获取无扩展名的文件名的方法进Utils,方便调用 修复 调用ffmpeg切割视频被PotPlayer识别为音频的问题,相对兼容,遂版本号升至1.1.0 优化 将时间戳转换为秒的方法转移到Utils下,方便调用,符合规范 优化 去除无用的import 更新 发布1.1.0
1 parent 055c1cb commit 1b074c2

File tree

9 files changed

+66
-32
lines changed

9 files changed

+66
-32
lines changed

InnoSetupConfig.iss

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
; 有关创建 Inno Setup 脚本文件的详细资料请查阅帮助文档!
33

44
#define MyAppName "FirstKeyFrameFilter"
5-
#define MyAppVersion "1.0.1-20.10.4"
5+
#define MyAppVersion "1.1.0-20.10.8"
66
#define MyAppPublisher "zsunqian69@gmail.com"
77
#define MyAppURL "https://github.com/Aric-Sun/FirstKeyFrameFilter"
88
#define MyAppExeName "FirstKeyFrameFilter.exe"
@@ -25,8 +25,8 @@ AllowNoIcons=yes
2525
; 移除以下行,以在管理安装模式下运行(为所有用户安装)。
2626
PrivilegesRequired=lowest
2727
PrivilegesRequiredOverridesAllowed=commandline
28-
OutputDir=D:\Downloads\FirstKeyFrameFilter\out\artifacts\FirstKeyFrameFilter_jar
29-
OutputBaseFilename=FirstKeyFrameFilter1.0.1-20.10.4_Setup
28+
OutputDir=E:\Aric Sun\自学技术\FirstKeyFrameFilter\out\artifacts\FirstKeyFrameFilter_jar
29+
OutputBaseFilename=FirstKeyFrameFilter1.1.0-20.10.8_Setup
3030
Compression=lzma
3131
SolidCompression=yes
3232
WizardStyle=modern
@@ -35,8 +35,8 @@ WizardStyle=modern
3535
Name: "chinesesimp"; MessagesFile: "compiler:Default.isl"
3636

3737
[Files]
38-
Source: "D:\Downloads\FirstKeyFrameFilter\out\artifacts\FirstKeyFrameFilter_jar\FirstKeyFrameFilter\FirstKeyFrameFilter.exe"; DestDir: "{app}"; Flags: ignoreversion
39-
Source: "D:\Downloads\FirstKeyFrameFilter\out\artifacts\FirstKeyFrameFilter_jar\FirstKeyFrameFilter\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
38+
Source: "E:\Aric Sun\自学技术\FirstKeyFrameFilter\out\artifacts\FirstKeyFrameFilter_jar\FirstKeyFrameFilter\FirstKeyFrameFilter.exe"; DestDir: "{app}"; Flags: ignoreversion
39+
Source: "E:\Aric Sun\自学技术\FirstKeyFrameFilter\out\artifacts\FirstKeyFrameFilter_jar\FirstKeyFrameFilter\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
4040
; 注意: 不要在任何共享系统文件上使用“Flags: ignoreversion”
4141

4242
[Icons]

exe4jConfigFile.exe4j

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<exe4j version="7.0" transformSequenceNumber="3">
3-
<directoryPresets config="./lib-apps" />
4-
<application name="FirstKeyFrameFilter" distributionSourceDir="D:/Downloads/FirstKeyFrameFilter/out/artifacts/FirstKeyFrameFilter_jar" />
3+
<directoryPresets config="E:/Aric Sun/自学技术/FirstKeyFrameFilter/out/artifacts" />
4+
<application name="FirstKeyFrameFilter" distributionSourceDir="E:/Aric Sun/自学技术/FirstKeyFrameFilter/out/artifacts/FirstKeyFrameFilter_jar" />
55
<executable name="FirstKeyFrameFilter" wrapperType="embed" executableDir="." executableMode="console" singleInstance="true">
6-
<versionInfo include="true" fileDescription="缺帧flv处理程序" legalCopyright="zsunqian69@gmail.com" companyName="Avengers" productVersion="1.0.1-20.10.4" />
6+
<versionInfo include="true" fileDescription="缺帧flv处理程序" legalCopyright="zsunqian69@gmail.com" companyName="Avengers" productVersion="1.1.0-20.10.8" />
77
</executable>
8-
<java mainClass="Main" minVersion="1.6" maxVersion="1.8">
8+
<java mainClass="Main" minVersion="1.6" maxVersion="1.8" allowBetaVM="true">
99
<searchSequence>
1010
<directory location="./jre1.8.0_161" />
1111
<registry />

src/FLVCutter/FastForwardMpeg.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package FLVCutter;
22

3+
import Utils.FileUtils.FilenameUtils;
34
import Utils.RuntimeUtils.LocalCmdExecutor;
45

56
import java.io.*;
@@ -32,9 +33,8 @@ public String cutFlvWithSSTime(String flvPath, double ssTime){
3233
return "-23";
3334
}
3435
// 最终生成的文件
35-
String flvPathCut = flvPath.substring(
36-
0, flvPath.indexOf(".")
37-
) + "-cut_" + ssTime + "-end.flv";
36+
String flvPathCut = FilenameUtils.getFilenameWithoutExtension(flvPath)
37+
+ "-cut_" + ssTime + "-end.flv";
3838

3939
//判断目标生成文件是否存在,询问是否覆盖
4040
Path FLVPathCut = Paths.get(flvPathCut);
@@ -57,6 +57,7 @@ public String cutFlvWithSSTime(String flvPath, double ssTime){
5757
"-i", flvPath,
5858
"-ss", String.valueOf(ssTime),
5959
"-c", "copy",
60+
"-copyts", // keep the original timestamps
6061
flvPathCut};
6162

6263
// 执行命令

src/Utils/DataTypeConverter.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package Utils;
2+
3+
/**
4+
* 数据类型转换工具类
5+
* @author AricSun
6+
* @date 2020.10.07 23:02
7+
*/
8+
public class DataTypeConverter{
9+
/*
10+
* function: 将timestamp的PTxx.xxS通过正则匹配出浮点型数据
11+
* @Param: [timeStamp时间戳]
12+
* @Return: java.lang.Double
13+
*/
14+
public static Double TimeStamp2Double(String timeStamp){
15+
return Double.parseDouble(timeStamp.replaceAll("[^\\d.]", ""));
16+
}
17+
18+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package Utils.FileUtils;
2+
3+
/**
4+
* 文件名工具类
5+
* @author AricSun
6+
* @date 2020.10.07 22:36
7+
*/
8+
public class FilenameUtils {
9+
/*
10+
* function: 获取不带扩展名的文件名
11+
* @Param [filename文件名]
12+
* @Return java.lang.String
13+
* from: https://my.oschina.net/liting/blog/535479
14+
*/
15+
public static String getFilenameWithoutExtension(String filename){
16+
if ((filename != null) && (filename.length() > 0)){
17+
int dot = filename.lastIndexOf('.');
18+
if ((dot > -1) && (dot < filename.length())){
19+
return filename.substring(0,dot);
20+
}
21+
}
22+
return filename;
23+
}
24+
}

src/XMLGenerator/FlvInteractiveRebase.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package XMLGenerator;
22

33
import Utils.RuntimeUtils.LocalCmdExecutor;
4-
import Utils.RuntimeUtils.ResourcesRelease;
54

65
import java.io.*;
76
import java.nio.file.Files;
@@ -12,6 +11,8 @@
1211
import java.util.Scanner;
1312
import java.util.stream.Stream;
1413

14+
import Utils.FileUtils.FilenameUtils;
15+
1516
/**
1617
* 调用fib读取flv
1718
* errorCodePrefix 1
@@ -37,9 +38,8 @@ public String parseFlvWithFib(String flvPath) {
3738
// Path flvFileName = flvPath.getFileName(); // flv文件名,带后缀,不带路径
3839
// Path flvFolderPath = flvPath.getParent(); // flv所在目录路径
3940
// String flvPathStr = String.valueOf(flvPath);
40-
String xmlPath = flvPath.substring(0,
41-
flvPath.lastIndexOf(".")
42-
).concat(".xml"); // 生成xml的绝对路径
41+
String xmlPath = FilenameUtils.getFilenameWithoutExtension(flvPath)
42+
.concat(".xml"); // 生成xml的绝对路径
4343

4444
//判断目标生成文件是否存在,询问是否覆盖
4545
Path XMLPath = Paths.get(xmlPath);

src/XMLParsing/DOM/XMLReader.java

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package XMLParsing.DOM;
22

3+
import Utils.DataTypeConverter;
34
import org.w3c.dom.Document;
45
import org.w3c.dom.NamedNodeMap;
56
import org.w3c.dom.Node;
@@ -86,21 +87,12 @@ public static void main(String[] args) {
8687
此处因废用而不再修复
8788
*/
8889
if (CntKeyFrame == 3){
89-
System.out.println(TimeStamp2Double(timeStamp));
90+
System.out.println(DataTypeConverter.TimeStamp2Double(timeStamp));
9091
break;
9192
}
9293
}
9394
} catch (ParserConfigurationException | SAXException | IOException e) {
9495
e.printStackTrace();
9596
}
9697
}
97-
98-
/*
99-
* function: 将timestamp的PTxx.xxS通过正则匹配出浮点型数据
100-
* @Param: [timeStamp时间戳]
101-
* @Return: java.lang.Double
102-
*/
103-
public static Double TimeStamp2Double(String timeStamp){
104-
return Double.parseDouble(timeStamp.replaceAll("[^\\d.]", ""));
105-
}
10698
}

src/XMLParsing/SAX/XMLReader.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public static void main(String[] args) {
2424
SAXParser saxParser = saxParserFactory.newSAXParser();
2525
saxParser.parse(new File("xml/352-TypicalCase.xml"),frameHandler);
2626
List<Frame> frameList = frameHandler.getFrameList();
27-
// System.out.println(frameList);
27+
System.out.println(frameList);
2828
} catch (ParserConfigurationException | SAXException | IOException e) {
2929
e.printStackTrace();
3030
}

src/XMLParsing/StAX/ParserXML.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package XMLParsing.StAX;
22

3+
import Utils.DataTypeConverter;
34
import dto.Frame;
45

56
import javax.xml.stream.XMLInputFactory;
@@ -12,8 +13,6 @@
1213
import java.util.ArrayList;
1314
import java.util.List;
1415

15-
import static XMLParsing.DOM.XMLReader.TimeStamp2Double;
16-
1716
/**
1817
* StAX解析XML
1918
* StAX与SAX一样是基于XML事件的解析方式,
@@ -42,9 +41,9 @@
4241
public class ParserXML {
4342
private Frame frame;
4443

45-
public List<Frame> getFrameList() {
44+
/*public List<Frame> getFrameList() {
4645
return frameList;
47-
}
46+
}*/
4847

4948
private List<Frame> frameList;
5049

@@ -180,7 +179,7 @@ public double readXMLByCursor(String XMLFilePath){
180179
* */
181180
int cntKeyFrame = frameList.size();
182181
if (cntKeyFrame >= 2){
183-
double secondKeyFrameTime = TimeStamp2Double(
182+
double secondKeyFrameTime = DataTypeConverter.TimeStamp2Double(
184183
frameList.get(cntKeyFrame-1).getTimeStamp()
185184
);
186185
/* 2020年10月4日

0 commit comments

Comments
 (0)