diff --git a/.idea/encodings.xml b/.idea/encodings.xml
new file mode 100644
index 0000000..55511c6
--- /dev/null
+++ b/.idea/encodings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..232ebd0
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/font/heimi.TTF b/font/heimi.TTF
new file mode 100644
index 0000000..6717681
Binary files /dev/null and b/font/heimi.TTF differ
diff --git a/src/8083d01e-6080-11ea-8aef-005056c00008.mp4 b/src/8083d01e-6080-11ea-8aef-005056c00008.mp4
deleted file mode 100644
index 3abbe16..0000000
Binary files a/src/8083d01e-6080-11ea-8aef-005056c00008.mp4 and /dev/null differ
diff --git a/src/Audio_Process.py b/src/Audio_Process.py
index 7d58a96..779a725 100644
--- a/src/Audio_Process.py
+++ b/src/Audio_Process.py
@@ -12,9 +12,19 @@
class Audio_Process():
def __init__(self):
pass
- def Audio_Process(self,mp3path):
+ def Audio_Process(self,mp3path,num):
y, sr = librosa.load(mp3path,sr=None)
- tempo, beats = librosa.beat.beat_track(y=y, sr=sr)
- beat_times = list(librosa.frames_to_time(beats, sr=sr))
- beat_times.append(beat_times[-1] + 1)
- return beat_times
\ No newline at end of file
+ time = librosa.get_duration(filename='./result.mp3')
+ #tempo, beats = librosa.beat.beat_track(y=y, sr=sr)
+ #beat_times = list(librosa.frames_to_time(beats, sr=sr))
+ #beat_times.append(beat_times[-1] + 1)
+ a = time/num
+ b = []
+ for i in range(num):
+ b.append(i*a)
+ return b
+
+if __name__ == '__main__':
+ num=32
+ mp3='C:\\Users\\Administrator\\PycharmProjects\\GenVIdeo\\src\\result.mp3'
+ Audio_Process().Audio_Process(mp3,32)
\ No newline at end of file
diff --git a/src/CutWorld.py b/src/CutWorld.py
index 8ca4f5b..9f89736 100644
--- a/src/CutWorld.py
+++ b/src/CutWorld.py
@@ -1,5 +1,8 @@
-# coding=utf-8
+
import jieba
+import sys
+import importlib
+importlib.reload(sys)
'''
分词模块
@@ -11,11 +14,19 @@
class CutWorld():
def __init__(self):
pass
- def CutWorld(self,text):
- seg_list = jieba.lcut(text)
- punct = set(''':!),.:;?]}¢'"、。〉》」』】〕〗〞︰︱︳﹐、﹒
- ﹔﹕﹖﹗﹚﹜﹞!),.:;?|}︴︶︸︺︼︾﹀﹂﹄﹏、~¢
- 々‖•·ˇˉ―--′’”([{£¥'"‵〈《「『【〔〖([{£¥〝︵︷︹︻
- ︽︿﹁﹃﹙﹛﹝({“‘-—_…/\\''')
- word_list = list(filter(lambda x: x not in punct, seg_list))
- return word_list
+ def CutWorld(self,text,uuid):
+ with open(uuid+'.txt', 'w',encoding='utf-8-sig') as f:
+ seg_list = jieba.lcut(text)
+ punct = set(''':!),.:;?]}¢'"、。〉》」』】〕〗〞︰︱︳﹐、﹒
+ ﹔﹕﹖﹗﹚﹜﹞!),.:;?|}︴︶︸︺︼︾﹀﹂﹄﹏、~¢
+ 々‖•·ˇˉ―--′’”([{£¥'"‵〈《「『【〔〖([{£¥〝︵︷︹︻
+ ︽︿﹁﹃﹙﹛﹝({“‘-—_…/\\''')
+ word_list = list(filter(lambda x: x not in punct, seg_list))
+ for word in word_list:
+ f.write(word+'\n')
+ f.close()
+ return len(word_list)+1
+if __name__ == '__main__':
+ text ='3月9日某某访问某某'
+ uuid= '1'
+ CutWorld().CutWorld(text,uuid)
\ No newline at end of file
diff --git a/src/DataBase.py b/src/DataBase.py
index 9014e85..2a2b4ea 100644
--- a/src/DataBase.py
+++ b/src/DataBase.py
@@ -102,7 +102,7 @@ def set_status(self,uuid):
'''
if(self.test_connect()):
conn,cursor = self.connect()
- sql = "update `word` set `status` = 2 where uuid = %s"
+ sql = "update `word` set `status` = 1 where uuid = %s"
try:
cursor.execute(sql,(str(uuid)))
conn.commit()
@@ -116,6 +116,6 @@ def set_status(self,uuid):
return False
if __name__ == '__main__':
- pass
+
#print(DataBase().insert_word('1','3月9日某某对某某作出指示','新闻'))
- #print(DataBase().get_word())
+ print(DataBase().test_connect())
diff --git a/src/Gen_Video.py b/src/Gen_Video.py
index 6716808..45f6332 100644
--- a/src/Gen_Video.py
+++ b/src/Gen_Video.py
@@ -1,5 +1,6 @@
-# coding=utf-8
+# -*- coding: utf-8 -*-
from moviepy.editor import TextClip, CompositeVideoClip, AudioFileClip
+
'''
视频生成类
生成1280X720的视频
@@ -17,19 +18,23 @@
class Gen_Video():
def __init__(self):
pass
- def Gen_Video(self,beat_times,word_list,mp3path,uuid):
+ def Gen_Video(self,beat_times,mp3path,uuid):
+ FONT_URL = '../font/heimi.TTF'
+ with open(uuid+'.txt', 'r',encoding='utf-8') as f:
+ text_str = f.read()
+ word_list = text_str.split('\n')
clips = []
for index, beat_time in enumerate(beat_times[:-1]):
if index >= len(word_list):
break
print(f'{index + 1}/{len(beat_times)}——{word_list[index]}')
text_clip = TextClip(
- word_list[index].encode('utf-8'),
+ word_list[index],
fontsize=320 // 8,
color='white',
size=(320, 640),
method='caption',
- font='msyhbd.ttc') \
+ font=FONT_URL) \
.set_start(beat_time) \
.set_end(beat_times[index + 1])
text_clip = text_clip.set_pos('center')
diff --git a/src/TextToAudio.py b/src/TextToAudio.py
index b85ab37..b277395 100644
--- a/src/TextToAudio.py
+++ b/src/TextToAudio.py
@@ -95,7 +95,7 @@ def TextToAudio(self,text):
print("tts api error:" + result_str)
print("result saved as :" + save_file)
- path = '/src/result.mp3'
+ path = 'C:\\Users\\Administrator\\PycharmProjects\\GenVIdeo\\src\\result.mp3'
return path
def fetch_token(self):
diff --git a/src/result.mp3 b/src/result.mp3
index 129fca9..9a7d16d 100644
Binary files a/src/result.mp3 and b/src/result.mp3 differ
diff --git a/src/run.py b/src/run.py
index 2cef2eb..75be6b7 100644
--- a/src/run.py
+++ b/src/run.py
@@ -1,5 +1,5 @@
# coding=utf-8
-
+# -*- coding: utf-8 -*-
from src.DataBase import DataBase
from src.CutWorld import CutWorld
from src.TextToAudio import TextToAudio
@@ -21,11 +21,12 @@ def get_word(self):
text = DataBase().get_word()
return text
def run(self):
- text,uuid = self.get_word()
- wordlist = CutWorld().CutWorld(text)
+ uuid,text = self.get_word()
+ num = CutWorld().CutWorld(text,uuid)
audio = TextToAudio().TextToAudio(text)
- beat_info = Audio_Process().Audio_Process(audio)
- Gen_Video().Gen_Video(beat_info,wordlist,audio,uuid)
+ #audio地址修改为本地音频的绝对路径
+ beat_info = Audio_Process().Audio_Process(audio,num)
+ Gen_Video().Gen_Video(beat_info,audio,uuid)
if __name__ == '__main__':
run().run()