赞
踩
pip install moviepy
- from moviepy.editor import VideoFileClip, concatenate_videoclips
- import os
-
-
- # 首先使用 os.path.getsize() 函数获取视频文件的大小(以字节为单位)
- # 然后使用 get_video_duration() 函数获取视频的时长(以秒为单位)
- # 最后,我们将文件大小乘以8(将单位从字节转换为比特)除以视频时长,来计算视频的比特率。
- def get_video_bitrate(file_path):
- file_size = os.path.getsize(file_path) # 获取视频文件大小,单位是字节
- video_duration = VideoFileClip(file_path).duration # 获取视频时长,单位是秒
-
- video_bitrate = file_size * 8 / video_duration # 比特率的单位是 bps(比特每秒)
- return video_bitrate
-
-
- def merge_videos(video_paths, output_path):
- clips = []
- for path in video_paths:
- clip = VideoFileClip(path)
- clips.append(clip)
-
- final_clip = concatenate_videoclips(clips)
- final_clip.write_videofile(output_path)
-
-
- # target_bitrate 的合适值取决于你对视频文件的期望和具体情况,以下是一些一般建议:
- # 如果你需要上传视频到视频网站,例如 YouTube,建议压缩后的比特率为 4-6 Mbps(即 4-6 兆比特/秒),这样可以保证高质量的视频和较小的文件大小。这也是 YouTube 推荐的比特率范围,超过这个范围,可能会导致视频压缩后的质量变差或者上传速度变慢。
- # 如果你的视频需要在移动设备上播放,也需要考虑视频质量和文件大小的权衡。根据设备和网络速度的不同,建议的比特率范围是 1-2 Mbps。
- # 如果你的视频是特定用途或适用于特定场景,也可以根据偏好和需求调整比特率,比如 8 Mbps 或者 10 Mbps。
- # 需要注意的是,压缩后的比特率越高,视频质量越好,但文件大小也越大。因此,你需要根据实际需求权衡比特率和文件大小,以达到最佳效果。建议在压缩视频时先尝试不同的比特率值,然后根据实际效果选择合适的值。
- def compress_video(input_path, output_path, target_bitrate='2M'):
- video = VideoFileClip(input_path)
-
- # 在进行视频压缩时,你可以选择保留音频或移除音频。如果你打算保留音频,请确保视频文件中包含音频轨道。如果你想删除音频,请使用without_audio()方法。
- if video.audio is not None:
- audio_clip = video.audio
-
- # 定义分离的音频文件路径为 后缀变成mp3的output_path
- # 这里其实用os模块来定义路径最好
- audio_clip.write_audiofile('.'.join(output_path.split('.')[:-1]) + '.mp3', codec='mp3')
-
- # 删除音频轨道
- video = video.without_audio()
-
- # compressed_video = video.resize(width=1280) # 调整视频分辨率(可选)
- video.write_videofile(output_path, codec='libx264', audio_bitrate=target_bitrate, fps=video.fps, audio_codec='aac')
-
-
- # 调用示例
- video_paths = [r'E:\CameraSave\2023-12-03\0730.mp4', r'E:\CameraSave\2023-12-03\0740.mp4',
- r'E:\CameraSave\2023-12-03\0750.mp4', r'E:\CameraSave\2023-12-03\0800.mp4']
- output_path = r'E:\CameraSave\2023-12-03\0730-0800.mp4'
- final_path = r'E:\CameraSave\2023-12-03\0730-0800_compress.mp4'
-
- # 合并视频
- merge_videos(video_paths, output_path)
-
- # 压缩视频
- compress_video(output_path, final_path)
-
- # 查看视频比特率
- video_bitrate = get_video_bitrate(output_path)
- print(video_bitrate)
-
- video_bitrate = get_video_bitrate(final_path)
- print(video_bitrate)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。