当前位置:   article > 正文

使用moviepy对视频进行合并、压缩、音频分离_movipy合成音频,视频,还需要什么库

movipy合成音频,视频,还需要什么库

废话就不说了,这里是相关实现的代码

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

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号