zhangyong 9 月之前
父節點
當前提交
b1ef992f0f
共有 2 個文件被更改,包括 34 次插入14 次删除
  1. 29 10
      common/tts_help.py
  2. 5 4
      video_rewriting/video_prep.py

+ 29 - 10
common/tts_help.py

@@ -52,6 +52,25 @@ class TTS:
                 if attempt == max_retries - 1:
                     return None
 
+    """
+    音频下载到本地
+    """
+    @classmethod
+    def download_mp3(cls,  video_file, video_path_url, pw_random_id):
+        pw_mp3_path = video_path_url + str(pw_random_id) +'pw_video.mp3'
+        for i in range(3):
+            payload = {}
+            headers = {}
+            response = requests.request("GET", video_file, headers=headers, data=payload)
+            if response.status_code == 200:
+                # 以二进制写入模式打开文件
+                with open(f"{pw_mp3_path}", "wb") as file:
+                    # 将响应内容写入文件
+                    file.write(response.content)
+                time.sleep(5)
+                return pw_mp3_path
+        return ''
+
     @classmethod
     def get_srt_format(cls, pw_srt_text, pw_url_sec):
         segments = re.split(r'(,|。|!|?)', pw_srt_text)
@@ -78,16 +97,16 @@ if __name__ == '__main__':
     text = "真是太实用了,分享给身边的准妈妈们吧!这些孕期禁忌一定要记住,赶紧转发给更多人,帮助更多的宝妈们。一起为宝宝的健康加油!"
     mp3 = TTS.get_pw_zm(text)
     print(mp3)
-    command = [
-      'ffmpeg',
-      '-i', mp3,
-      '-q:a', '0',
-      '-map', 'a',
-      # '-codec:a', 'libmp3lame',  # 指定 MP3 编码器
-      "/Users/tzld/Desktop/video_rewriting/path/pw_video.mp3"
-    ]
-    subprocess.run(command)
-    print("完成")
+    # command = [
+    #   'ffmpeg',
+    #   '-i', mp3,
+    #   '-q:a', '0',
+    #   '-map', 'a',
+    #   # '-codec:a', 'libmp3lame',  # 指定 MP3 编码器
+    #   "/Users/tzld/Desktop/video_rewriting/path/pw_video.mp3"
+    # ]
+    # subprocess.run(command)
+    # print("完成")
     # video_file = 'https://digital-public.obs.myhuaweicloud.com/vcm_server/20240715/KnOgRTYKvZbWD2EX_ms/FwA2SEh7DZQGlwAe.wav'
     # result = subprocess.run(
     #     ["ffprobe", "-v", "error", "-show_entries", "format=duration",

+ 5 - 4
video_rewriting/video_prep.py

@@ -176,13 +176,14 @@ class getVideo:
                         if video_ending and video_ending != 'None':
                             if video_ending == "AI片尾引导":
                                 pw_srt_text = GPT4o.get_ai_pw(new_title)
-                                print(f"片尾字幕{pw_srt_text}")
                                 if pw_srt_text:
                                     pw_url = TTS.get_pw_zm(pw_srt_text)
-                                    print(f"片尾音频{pw_url}")
                                     Common.logger("log").info(f"{task_mark}下的视频{url},获取AI片尾音频成功")
                                     if pw_url:
-                                        pw_url_sec = FFmpeg.get_videos_duration(pw_url)  # 获取片尾秒数
+                                        pw_mp3_path = TTS.download_mp3(pw_url, video_path_url, pw_random_id)
+                                        print(f"视频下载成功:{pw_mp3_path}")
+                                        pw_url_sec = FFmpeg.get_videos_duration(pw_mp3_path)  # 获取片尾秒数
+                                        print(f"视频秒数:{pw_url_sec}")
                                         Common.logger("log").info(f"{task_mark}下的视频{url},获取AI片尾秒数成功{pw_url_sec}")
                                         pw_srt = TTS.get_srt_format(pw_srt_text, pw_url_sec)
                                         Common.logger("log").info(f"{task_mark}下的视频{url},获取AI片尾srt成功")
@@ -201,6 +202,7 @@ class getVideo:
                                     pw_id = pw_list["pw_id"]
                                     pw_srt = pw_list["pw_srt"]
                                     pw_url = PQ.get_pw_url(pw_id)
+                                    pw_mp3_path = FFmpeg.get_video_mp3(pw_url, video_path_url, pw_random_id)
                                 else:
                                     Feishu.bot(mark, '机器自动改造消息通知', f'{task_mark}任务下片尾标示错误,请关注!!!!', name)
                             for attempt in range(3):
@@ -214,7 +216,6 @@ class getVideo:
                                 cls.remove_files(video_path_url)
                                 continue
                             for attempt in range(3):
-                                pw_mp3_path = FFmpeg.get_video_mp3(pw_url, video_path_url, pw_random_id)
                                 Common.logger("log").info(f"{task_mark}下的视频{url},获取mp3成功")
                                 pw_path = FFmpeg.pw_video(jpg_path, video_path_url, pw_url, pw_srt, pw_random_id, pw_mp3_path)  # 生成片尾视频
                                 if os.path.isfile(pw_path):