MASA模组全家桶汉化包:轻松实现Minecraft顶级工具模组中文界面
2026/6/5 18:50:23
相关软件教程已打包至网盘,私信我备注文章标题即可获取完整软件教程。
import requests import ffmpeg import cv2 import os from datetime import datetime # ************************** 1. 公开测试视频下载(示例)************************** def download_public_video(url, save_path): """ 下载公开的测试视频文件(仅适用于无反爬、无版权保护的公开资源) :param url: 公开视频的直链地址 :param save_path: 本地保存路径(含文件名) """ try: # 请求头模拟浏览器,避免被简单反爬拦截 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" } # 分块下载,避免大文件占用过多内存 response = requests.get(url, headers=headers, stream=True, timeout=30) response.raise_for_status() # 捕获HTTP请求错误 with open(save_path, "wb") as f: for chunk in response.iter_content(chunk_size=1024*1024): # 1MB分块 if chunk: f.write(chunk) print(f"视频下载完成,保存至:{save_path}") except Exception as e: print(f"视频下载失败:{str(e)}") # ************************** 2. 本地视频音频提取 ************************** def extract_audio_from_video(video_path, audio_save_path): """ 从本地视频文件中提取音频(保存为MP3格式) :param video_path: 本地视频文件路径 :param audio_save_path: 音频保存路径(含.mp3后缀) """ try: # 使用ffmpeg提取音频 ( ffmpeg .input(video_path) .output(audio_save_path, format='mp3', acodec='mp3') .run(overwrite_output=True) ) print(f"音频提取完成,保存至:{audio_save_path}") except Exception as e: print(f"音频提取失败:{str(e)}") # ************************** 3. 直播流录制基础框架(以RTSP流为例)************************** def record_live_stream(rtsp_url, save_path, record_time=None): """ 录制RTSP直播流(常见于监控摄像头、公开直播流) :param rtsp_url: RTSP流地址 :param save_path: 录制文件保存路径(含.mp4后缀) :param record_time: 录制时长(秒),None则持续录制直到手动中断 """ cap = cv2.VideoCapture(rtsp_url) if not cap.isOpened(): print("无法打开直播流") return # 获取流的编码格式、分辨率、帧率 fourcc = cv2.VideoWriter_fourcc(*'mp4v') fps = int(cap.get(cv2.CAP_PROP_FPS)) width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) # 创建视频写入对象 out = cv2.VideoWriter(save_path, fourcc, fps, (width, height)) start_time = datetime.now() print("开始录制直播流...") try: while cap.isOpened(): ret, frame = cap.read() if not ret: break out.write(frame) # 若设置了录制时长,到达时间则停止 if record_time: elapsed_time = (datetime.now() - start_time).total_seconds() if elapsed_time >= record_time: break except KeyboardInterrupt: print("用户手动中断录制") finally: cap.release() out.release() cv2.destroyAllWindows() print(f"直播录制完成,保存至:{save_path}") # ************************** 主函数(测试用)************************** if __name__ == "__main__": # 测试目录创建 if not os.path.exists("media_test"): os.makedirs("media_test") # 1. 下载公开测试视频(可替换为自己的公开测试直链) test_video_url = "https://test-videos.co.uk/vids/bigbuckbunny/mp4/h264/720/Big_Buck_Bunny_720_10s_1MB.mp4" video_save_path = os.path.join("media_test", "test_video.mp4") download_public_video(test_video_url, video_save_path) # 2. 提取音频 audio_save_path = os.path.join("media_test", "test_audio.mp3") extract_audio_from_video(video_save_path, audio_save_path) # 3. 录制RTSP直播流(需替换为有效的公开RTSP流地址,此处为示例) # rtsp_test_url = "rtsp://example.com/live/stream" # live_save_path = os.path.join("media_test", "test_live.mp4") # record_live_stream(rtsp_test_url, live_save_path, record_time=60) # 录制60秒