Commit 60f70e01 authored by cxy's avatar cxy

bugfix 4 import excel and update excel fileds

parent 89e52096
......@@ -78,7 +78,8 @@ def predict_long_audio_with_paddle(wav_path, pre_time, book_name, sheet_name, st
(time_stamps[i][0] + pre_time) * normal_speed)
print("插入旁白,推荐字数为%d" % recommend_lens)
# narratages.append(["", "", "", "插入旁白,推荐字数为%d" % recommend_lens])
write_to_sheet(book_name, sheet_name, ["", "", "", "插入旁白,推荐字数为%d" % recommend_lens])
# write_to_sheet(book_name, sheet_name, ["", "", "", "插入旁白,推荐字数为%d" % recommend_lens])
write_to_sheet(book_name, sheet_name, ["", "", "", "%d" % recommend_lens])
# narratages.append([round(time_stamps[i][0] + pre_time, 2), round(time_stamps[i][1] + pre_time, 2),
# text, ''])
write_to_sheet(book_name, sheet_name,
......
......@@ -98,7 +98,7 @@ def detect_with_asr(video_path: str, book_path: str, start_time=0, end_time=-1,
os.remove(book_path)
book_name_xlsx = book_path
sheet_name_xlsx = "旁白插入位置建议"
table_head = [["起始时间", "终止时间", "字幕", '建议', '解说脚本']]
table_head = [["起始时间", "终止时间", "字幕", '建议旁白字数', '解说脚本']]
create_sheet(book_name_xlsx, sheet_name_xlsx, table_head)
sys.path.append("PaddlePaddle_DeepSpeech2")
......
......@@ -66,7 +66,6 @@ def get_position(video_path: str, start_time: float, rate: float, rate_bottom: f
pre_txt = None
video.set(cv2.CAP_PROP_POS_FRAMES, start)
# height = int(video.get(cv2.CAP_PROP_FRAME_HEIGHT) * 0.6)
print(">>>>>>>>>>>>video height")
print(cv2.CAP_PROP_FRAME_HEIGHT)
print(video.get(cv2.CAP_PROP_FRAME_HEIGHT))
up = int(video.get(cv2.CAP_PROP_FRAME_HEIGHT) * (rate))
......@@ -210,7 +209,6 @@ def detect_subtitle(img: np.ndarray) -> Tuple[Union[str, None], float]:
img = img[int(up_b - height*0.7):int(down_b + height*0.7)]
# 针对低帧率的视频做图像放大处理
print(">>>>>>>>>>>>>>>>>>>>>img shape")
print(height)
print(up_b)
print(down_b)
......@@ -315,7 +313,8 @@ def process_video(video_path: str, begin: float, end: float, book_path: str, she
print('--------------------------------------------------')
recommend_lens = int((cur_time - end_time) * normal_speed)
# write_to_sheet(book_path, sheet_name, ['', '', '', '插入旁白,推荐字数为%d' % recommend_lens])
add_to_list(mainWindow, "旁白", ['', '', '', '插入旁白,推荐字数为%d' % recommend_lens])
# add_to_list(mainWindow, "旁白", ['', '', '', '插入旁白,推荐字数为%d' % recommend_lens])
add_to_list(mainWindow, "旁白", ['', '', '', '%d' % recommend_lens])
# 判断当前是否有字幕需要被保存下来
if end_time < start_time:
......@@ -333,24 +332,18 @@ def process_video(video_path: str, begin: float, end: float, book_path: str, she
mainWindow.projectContext.last_time = cur_time
subTitle, conf = detect_subtitle(frame)
print(">>>>>>>>>>>>111111111")
if subTitle is not None:
print(">>>>>>>>>>>>111111111 2222222")
subTitle = normalize(subTitle)
if len(subTitle) == 0:
print(">>>>>>>>>>>>111111111 3333333")
subTitle = None
print(">>>>>>>>>>>>222222222")
# 第一次找到字幕
if lastSubTitle is None and subTitle is not None:
start_time = cur_time
print(">>>>>>>>>>>>333333333")
# 字幕消失
elif lastSubTitle is not None and subTitle is None:
print(">>>>>>>>>>>>4444444444")
end_time = cur_time
res.append([start_time, end_time, lastSubTitle])
if (len(res) == 1 and res[-1][0] - last_time >= 1) or (len(res) > 1 and res[-1][0] - res[-2][1]) >= 1:
......@@ -358,16 +351,15 @@ def process_video(video_path: str, begin: float, end: float, book_path: str, she
recommend_lens = int((res[-1][0] - last_time) * normal_speed) if len(res) == 1 else int(
(res[-1][0] - res[-2][1]) * normal_speed)
# write_to_sheet(book_path, sheet_name, ['', '', '', '插入旁白,推荐字数为%d' % recommend_lens])
add_to_list(mainWindow, "旁白", ['', '', '', '插入旁白,推荐字数为%d' % recommend_lens])
# add_to_list(mainWindow, "旁白", ['', '', '', '插入旁白,推荐字数为%d' % recommend_lens])
add_to_list(mainWindow, "旁白", ['', '', '', '%d' % recommend_lens])
print(start_time, end_time, lastSubTitle)
# write_to_sheet(book_path, sheet_name, [round(start_time, 2), round(end_time, 2), lastSubTitle, ''])
add_to_list(mainWindow, "字幕", [round(start_time, 3), round(end_time, 3), lastSubTitle, ''])
elif lastSubTitle is not None and subTitle is not None:
print(">>>>>>>>>>>>5555555555")
# 两句话连在一起,但是两句话不一样
if string_similar(lastSubTitle, subTitle) < 0.7:
print(">>>>>>>>>>>66666666666")
if string_similar(lastSubTitle, subTitle) < 0.6:
end_time = cur_time
res.append([start_time, end_time, lastSubTitle])
if (len(res) == 1 and res[-1][0] - last_time >= 1) or (len(res) > 1 and res[-1][0] - res[-2][1]) >= 1:
......@@ -375,13 +367,13 @@ def process_video(video_path: str, begin: float, end: float, book_path: str, she
recommend_lens = int((res[-1][0] - last_time) * normal_speed) if len(res) == 1 else int(
(res[-1][0] - res[-2][1]) * normal_speed)
# write_to_sheet(book_path, sheet_name, ['', '', '', '插入旁白,推荐字数为%d' % recommend_lens])
add_to_list(mainWindow, "旁白", ['', '', '', '插入旁白,推荐字数为%d' % recommend_lens])
# add_to_list(mainWindow, "旁白", ['', '', '', '插入旁白,推荐字数为%d' % recommend_lens])
add_to_list(mainWindow, "旁白", ['', '', '', '%d' % recommend_lens])
print(start_time, end_time, lastSubTitle)
# write_to_sheet(book_path, sheet_name, [round(start_time, 2), round(end_time, 2), lastSubTitle, ''])
add_to_list(mainWindow, "字幕", [round(start_time, 3), round(end_time, 3), lastSubTitle, ''])
start_time = end_time
else:
print(">>>>>>>>>>>>777777777")
lastSubTitle = subTitle if conf > lastConf else lastSubTitle
continue
# 当前字幕与上一段字幕不一样
......@@ -411,7 +403,6 @@ def add_to_list(mainWindow: MainWindow, element_type: str, li: list):
# 因为暂时没有用到ed_time_sec,所以直接赋值空吧
ed_time_sec = ""
print(">>>>>>>>>>>>>>>>>append aside")
new_element = Element(st_time_sec, ed_time_sec, subtitle, suggest, aside,speed)
new_element.print_self()
if mainWindow.last_aside_index != None and mainWindow.projectContext.all_elements[mainWindow.last_aside_index].ed_time_sec == "" and new_element.ed_time_sec != "":
......
......@@ -4,6 +4,8 @@ import openpyxl
from management import Element
from utils import reverse_time_to_seconds
def read_xls(file_path):
print("read_xls")
elements = []
......@@ -26,20 +28,20 @@ def read_xls(file_path):
cell_value = str(cell_value) if cell_value != None else ""
# print(cell_value)
if col_index == 0:
start_time = cell_value if cell_value != None else ""
start_time = reverse_time_to_seconds(cell_value) if cell_value != None else ""
if col_index == 1:
end_time = reverse_time_to_seconds(cell_value) if cell_value != None else ""
if col_index == 2:
end_time = cell_value if cell_value != None else ""
if col_index == 4:
subtitle = cell_value if cell_value != None else ""
if col_index == 5:
if col_index == 3:
if cell_value == None or cell_value == "":
break
suggest = cell_value if cell_value != None else ""
if col_index == 6:
if col_index == 4:
if cell_value == None or cell_value == "":
break
aside = cell_value if cell_value != None else ""
if col_index == 7:
if col_index == 5:
speed = cell_value if cell_value != None else ""
col_index = col_index + 1
if suggest != "" and aside != "":
......@@ -71,32 +73,36 @@ def read_xlsx(file_path):
cell_value = str(cell_value) if cell_value != None else ""
# print(cell_value)
if col_index == 0:
start_time = cell_value if cell_value != None else ""
start_time = reverse_time_to_seconds(cell_value) if cell_value != None else ""
if col_index == 1:
end_time = reverse_time_to_seconds(cell_value) if cell_value != None else ""
if col_index == 2:
end_time = cell_value if cell_value != None else ""
if col_index == 4:
subtitle = cell_value if cell_value != None else ""
if col_index == 5:
if col_index == 3:
if cell_value == None or cell_value == "":
break
suggest = cell_value if cell_value != None else ""
if col_index == 6:
if col_index == 4:
if cell_value == None or cell_value == "":
break
aside = cell_value if cell_value != None else ""
if col_index == 7:
if col_index == 5:
speed = cell_value if cell_value != None else ""
col_index = col_index + 1
if suggest != "" and aside != "":
if suggest != None and suggest != "" and aside != None and aside != "":
new_element = Element(start_time, end_time, subtitle, suggest, aside, speed)
# new_element.print_self()
new_element.print_self()
elements.append(new_element)
checkLength(elements)
# checkLength(elements)
print("element size:")
print(len(elements))
return elements
def checkLength(elements):
for element in elements:
if int("".join(filter(str.isdigit, element.suggest))) < len(element.aside):
# if int("".join(filter(str.isdigit, element.suggest))) < len(element.aside):
# raise Exception("旁白字数没有按照推荐要求")
if int(element.suggest) < len(element.aside):
raise Exception("旁白字数没有按照推荐要求")
# elements = read_xlsx("C:/Users/AIA/Desktop/1/121/1.xlsx")
......
......@@ -44,7 +44,6 @@ def adjust_audio_volume(input_file, volume_adjustment):
"-y", # 覆盖输出文件,加上此选项
temp_path # 输出文件与输入文件相同
]
print(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>cg audio" + input_file + str(volume_adjustment))
subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
os.remove(input_file)
# os.rename(temp_path, input_file)
......@@ -53,7 +52,6 @@ def adjust_audio_volume(input_file, volume_adjustment):
def cg_wav(first_file_path, second_file_path, rate):
try:
print(">>>>>>>>>>>>>>>cg_wav")
print(first_file_path, second_file_path, str(rate))
# 计算第一个文件的音量
first_file_volume = calculate_audio_volume(first_file_path)
......@@ -78,7 +76,7 @@ def cg_wav(first_file_path, second_file_path, rate):
else:
print("无法计算第一个文件的音量")
except Exception as e:
print(">>>>>>>>>>>>>>cg_wav err")
print("cg_wav err")
print(e)
......
This diff is collapsed.
......@@ -11,28 +11,60 @@ from PyQt5.QtWidgets import QMainWindow, QFileDialog, QTableWidget, QTableWidget
from PyQt5.QtCore import QUrl, Qt, QTimer, QRect, pyqtSignal, QPersistentModelIndex
from PyQt5.QtMultimedia import *
from PyQt5.QtGui import QIcon, QPainter, QColor, QPen
import threading
lock = threading.Lock()
class MyWidget(QWidget):
# def __init__(self, parent=None):
# super(QWidget, self).__init__(parent)
# self.painter_flag = True
def paintEvent(self, event):
print(">>>>>>>>>>>>>>>into paint")
# print(">>>>>>>>into paint")
# print(self.painter_flag)
# if self.painter_flag:
lock.acquire()
painter = QPainter(self)
painter.setRenderHint(QPainter.Antialiasing) # Optional: Enable anti-aliasing
# painter.setCompositionMode(QPainter.CompositionMode_SourceOver) # Set composition mode
# # Draw existing content
# painter.fillRect(event.rect(), QColor(255, 255, 255)) # Fill with white color (you can adjust as needed)
# Draw a transparent horizontal line
painter.setPen(QPen(Qt.red, 2, Qt.SolidLine))
painter.drawLine(0, 1, 800, 1)
painter.end()
lock.release()
# self.painter_flag = False
# painter = QPainter(self)
# painter.setRenderHint(QPainter.Antialiasing) # Optional: Enable anti-aliasing
# # painter.setCompositionMode(QPainter.CompositionMode_SourceOver) # Set composition mode
# # # Draw existing content
# # painter.fillRect(event.rect(), QColor(255, 255, 255)) # Fill with white color (you can adjust as needed)
# # Draw a transparent horizontal line
# painter.setPen(QPen(Qt.gray, 2, Qt.SolidLine))
# painter.drawLine(0, 1, 800, 1)
# painter.end()
def change_painter_flag(self, state):
print(">>>>>>>>>>>>>>>change state")
# print(state)
# self.painter_flag = state
def up(self, mov_len):
print(">>>>>>>>>>>up" + str(mov_len))
self.move(0, self.y() - mov_len)
# painter = QPainter(self)
# painter.setRenderHint(QPainter.Antialiasing) # Optional: Enable anti-aliasing
# painter.setPen(QPen(Qt.red, 2, Qt.SolidLine))
# painter.drawLine(0, 1, 800, 1)
# painter.end()
return self.y()
def down(self, mov_len):
print(">>>>>>>>>>>down" + str(mov_len))
self.move(0,self.y() + mov_len)
# painter = QPainter(self)
# painter.setRenderHint(QPainter.Antialiasing) # Optional: Enable anti-aliasing
# painter.setPen(QPen(Qt.red, 2, Qt.SolidLine))
# painter.drawLine(0, 1, 800, 1)
# painter.end()
return self.y()
class Ui_MainWindow(object):
......
......@@ -9,7 +9,7 @@ import openpyxl
import constant
from openpyxl.styles import PatternFill, Alignment
from utils import replace_path_suffix, transfer_second_to_time
from utils import replace_path_suffix, transfer_second_to_time, reverse_time_to_seconds
from speech_synthesis import Speaker
class RunThread(threading.Thread):
"""复写线程类,用于解决主线程无法捕捉子线程中异常的问题
......@@ -125,8 +125,9 @@ class ProjectContext:
self.speaker_speed = None
self.duration = 0
# 一些常量
self.header = ["起始时间", "终止时间", "字幕", '建议', '解说脚本', "语速"]
self.write_header = ["起始时间", "起始时间(转换后)", "终止时间", "终止时间(转换后)", "字幕", '建议', '解说脚本', "语速"]
self.header = ["起始时间", "终止时间", "字幕", '建议旁白字数', '解说脚本', "语速"]
# self.write_header = ["起始时间", "起始时间(转换后)", "终止时间", "终止时间(转换后)", "字幕", '建议', '解说脚本', "语速"]
self.write_header = ["起始时间", "终止时间", "字幕", '建议旁白字数', '解说脚本', "语速"]
self.aside_header = ['起始时间', '推荐字数', '解说脚本',"语速", "预览音频"]
self.subtitle_header = ["起始时间", "终止时间", "字幕"]
......@@ -279,8 +280,11 @@ class ProjectContext:
# todo:现在是只用None判断是否是字幕,后续是否也需要用""来?
for i in range(len(d["字幕"])):
st_time_sec, ed_time_sec, subtitle, suggest, aside, speed = [d[x][i] for x in self.header]
# 当前条目是字幕
if d["字幕"][i] != None:
st_time_sec = reverse_time_to_seconds(str(st_time_sec))
ed_time_sec = reverse_time_to_seconds(str(ed_time_sec))
self.subtitle_list.append(Element(st_time_sec, ed_time_sec, subtitle, suggest, aside, speed))
self.all_elements.append(self.subtitle_list[-1])
else:
......@@ -304,7 +308,8 @@ class ProjectContext:
ed_time_sec = "%.2f"%(float(d["起始时间"][i + 1]) - 0.01)
else:
ed_time_sec = d["终止时间"][i]
st_time_sec = reverse_time_to_seconds(str(st_time_sec))
ed_time_sec = reverse_time_to_seconds(str(ed_time_sec))
self.aside_list.append(Element(st_time_sec, ed_time_sec, subtitle, suggest, aside, speed))
self.all_elements.append(self.aside_list[-1])
# print("[load_excel_from_path] ", end='')
......@@ -450,17 +455,20 @@ def write_to_sheet(path: str, sheet_name: str, valuelist: list):
value = value_element.to_list()
# 把None换成空串
value = ["" if x == None else x for x in value]
value.insert(1, transfer_second_to_time(value[0])) if value[0] != "" else value.insert(1, "")
value.insert(3, transfer_second_to_time(value[2])) if value[2] != "" else value.insert(3, "")
# value.insert(1, transfer_second_to_time(value[0])) if value[0] != "" else value.insert(1, "")
# value.insert(3, transfer_second_to_time(value[2])) if value[2] != "" else value.insert(3, "")
value[0] = transfer_second_to_time(value[0]) if value[0] != "" else ""
value[1] = transfer_second_to_time(value[1]) if value[1] != "" else ""
index = len(value)
cur_row = sheet.max_row
for j in range(0, index):
sheet.cell(row=cur_row + 1, column=j + 1, value=str(value[j]))
cell = sheet.cell(row=cur_row + 1, column=j + 1, value=str(value[j]))
if value[j] == '' or '插入旁白' in str(value[j]):
sheet.cell(row=cur_row + 1, column=j + 1).fill = PatternFill(fill_type='solid', fgColor='ffff00')
cell = sheet.cell(row=cur_row + 1, column=j + 1).fill = PatternFill(fill_type='solid', fgColor='ffff00')
if j == 4:
sheet.cell(row=cur_row + 1, column=j + 1).alignment = Alignment(wrapText=True)
cell = sheet.cell(row=cur_row + 1, column=j + 1).alignment = Alignment(wrapText=True)
cell.number_format = '@'
workbook.save(path)
......
......@@ -260,9 +260,12 @@ class Operation_Dialog(QDialog, Ui_Dialog):
else: # 如果是旁白
end_time = ""
subtitle = ""
suggest = "插入旁白,推荐字数为" + suggest
# suggest = "插入旁白,推荐字数为" + suggest
# if self.comboBox_2.currentText() == "增加一行":
# suggest = "插入旁白,推荐字数为0"
suggest = suggest
if self.comboBox_2.currentText() == "增加一行":
suggest = "插入旁白,推荐字数为0"
suggest = "0"
# 别忘复原
self.buttonBox.setEnabled(False)
self.zmpb_change_slot()
......
......@@ -58,15 +58,16 @@ def aggrevate_audios(video_path: str, output_dir: str, state=None,pb_cg_rate = 1
# 将生成的旁白音频放入空白音频中,并将原音频的对应位置音量降低为原来的30%
files = os.listdir(output_dir)
audio_path = os.path.join(output_dir, os.path.basename(video_path).split('.')[0] + ".wav")
for i, f in enumerate(files):
fname = '.'.join(f.split('.')[:-1])
try:
if fname.find(".") != -1:
cg_wav(audio_path, os.path.join(output_dir, f), pb_cg_rate)
except Exception as e:
print(e)
continue
if pb_cg_rate != 1.00:
audio_path = os.path.join(output_dir, os.path.basename(video_path).split('.')[0] + ".wav")
for i, f in enumerate(files):
fname = '.'.join(f.split('.')[:-1])
try:
if fname.find(".") != -1:
cg_wav(audio_path, os.path.join(output_dir, f), pb_cg_rate)
except Exception as e:
print(e)
continue
for i, f in enumerate(files):
fname = '.'.join(f.split('.')[:-1])
......
......@@ -28,6 +28,7 @@ from azure.cognitiveservices.speech.audio import AudioOutputConfig
import openpyxl
import shutil
from vits_chinese import tts
from utils import reverse_time_to_seconds
tmp_file = 'tmp.wav'
adjusted_wav_path = "adjusted.wav"
......@@ -205,7 +206,7 @@ def get_narratage_text(sheet_content: dict) -> Tuple[list, list, list]:
for i, text in enumerate(narratage):
# 这里的speed是x.x倍速
speed = float(speeds[i].split('(')[0])
if text is not None:
if text is not None and text != "":
if text == '翻译':
narratage_text.append(subtitle[i])
else:
......@@ -236,8 +237,10 @@ def get_narratage_text(sheet_content: dict) -> Tuple[list, list, list]:
# narratage_start_time.append(cur_start)
# narratage_end_time.append(cur_end)
# cur_start = cur_start + (len(x) / normal_speed + normal_interval) / speed
narratage_start_time.append(float(start_time[i]))
narratage_end_time.append(float(end_time[i])) if end_time[i] is not None else narratage_end_time.append(-1)
# narratage_start_time.append(float(start_time[i]))
# narratage_end_time.append(float(end_time[i])) if end_time[i] is not None else narratage_end_time.append(-1)
narratage_start_time.append(float(reverse_time_to_seconds(start_time[i])))
narratage_end_time.append(float(reverse_time_to_seconds(end_time[i]))) if end_time[i] is not None and end_time[i] != "" else narratage_end_time.append(-1)
narratage_speed.append(speed)
return narratage_text, narratage_start_time, narratage_end_time, narratage_speed
......@@ -251,13 +254,16 @@ def second_to_str(seconds: float) -> str:
Returns:
str: “时:分:秒”格式的时间字符串
"""
seconds = float(seconds)
hour = int(seconds / 3600)
minute = int((seconds - hour * 3600) / 60)
second = int(seconds - hour * 3600 - minute * 60)
ms = int((seconds - second - minute * 60 - hour * 3600) * 1000)
time_str = "%02d:%02d:%02d,%03d" % (hour, minute, second, ms)
return time_str
try:
seconds = float(seconds)
hour = int(seconds / 3600)
minute = int((seconds - hour * 3600) / 60)
second = int(seconds - hour * 3600 - minute * 60)
ms = int((seconds - second - minute * 60 - hour * 3600) * 1000)
time_str = "%02d:%02d:%02d,%03d" % (hour, minute, second, ms)
return time_str
except:
return str(seconds)
def export_caption(sheet_content: dict, caption_file: str):
......
......@@ -3,7 +3,7 @@
block_cipher = None
env_dir = 'C:/Users/AIA/.conda/envs/testmovie/Lib/site-packages/'
missingPkgs = ['Microsoft.CognitiveServices.Speech.core.dll', 'decorator.py', 'google', 'paddleocr', 'PIL', 'requests', 'urllib3', 'http', 'idna', 'certifi', 'setuptools', 'astor', 'charset_normalizer']
missingPkgs = ['Microsoft.CognitiveServices.Speech.core.dll', 'decorator.py', 'google', 'paddle', 'paddleocr', 'PIL', 'requests', 'urllib3', 'http', 'idna', 'certifi', 'setuptools', 'astor', 'charset_normalizer']
def add_missing_packages(lst):
pkgs = []
......@@ -20,12 +20,12 @@ a = Analysis(
['start.py'],
pathex=[],
binaries=[],
datas=[('vits_chinese','vits_chinese')] + [('res','res')] + pkgPaths,
hiddenimports=[],
datas=[('vits_chinese','vits_chinese')] + [('res','res'),('./deploy.bat','.'),('LAVFilters64','LAVFilters64'),('LAVFilters32','LAVFilters32')] + pkgPaths,
hiddenimports=['filecmp'],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=['vits_chinese','transformers','torch'],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
......@@ -59,5 +59,5 @@ coll = COLLECT(
strip=False,
upx=True,
upx_exclude=[],
name='start',
name='无障碍电影制作系统',
)
......@@ -64,13 +64,52 @@ def transfer_second_to_time(sec: str) -> str:
Returns:
str: "hh:mm:ss.xxx"格式的时间字符串
"""
duration = int(float(sec))
hour = int(duration/3600)
minutes = int((duration % 3600)/60)
seconds = int(duration%60)
msec = round((float(sec) - hour * 3600 - minutes * 60 - seconds) * 1000)
time = "%02d:%02d:%02d.%03d" % (hour, minutes, seconds, msec)
return time
try:
duration = int(float(sec))
hour = int(duration/3600)
minutes = int((duration % 3600)/60)
seconds = int(duration%60)
msec = round((float(sec) - hour * 3600 - minutes * 60 - seconds) * 1000)
time = "%02d:%02d:%02d.%03d" % (hour, minutes, seconds, msec)
return time
except Exception as e:
print(e)
return sec
def reverse_time_to_seconds(time_str: str) -> str:
"""将"hh:mm:ss.xxx"格式的时间字符串转换为秒数
Args:
time_str (str): 时间字符串,格式为"hh:mm:ss.xxx"
Returns:
float: 对应的秒数
"""
try:
# print(">>>>>>>>>>reverse time")
# print(time_str)
if time_str is None or time_str == "":
return time_str
parts = time_str.split(":")
if len(parts) != 3:
return time_str
hour = int(parts[0])
minutes = int(parts[1])
seconds_parts = parts[2].split(".")
if len(seconds_parts) != 2:
return time_str
seconds = int(seconds_parts[0])
milliseconds = int(seconds_parts[1])
total_seconds = hour * 3600 + minutes * 60 + seconds + milliseconds / 1000
print(str(total_seconds))
return str(total_seconds)
except Exception as e:
print(">>>>>>>>>>reverse time err" + time_str)
print(e)
return time_str
def replace_path_suffix(path: str, new_suffix: str) -> str:
"""替换文件路径后缀
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment