CodeGym /Khóa học Java /Python SELF VI /Tạo và làm việc với video và âm thanh: thêm nhạc và xuất ...

Tạo và làm việc với video và âm thanh: thêm nhạc và xuất video với âm thanh

Python SELF VI
Mức độ , Bài học
Có sẵn

1. Các video clip và audio clip

Chào mừng bạn tới bài giảng, nơi chúng ta sẽ trở thành những "phù thủy video" thực thụ và khám phá cách pha trộn hình ảnh và âm thanh, tạo nên những điều kỳ diệu. Tất nhiên, tất cả đều nhờ vào Python và thư viện MoviePy! Mục tiêu hôm nay là học cách làm việc với các video clip và audio clip, thêm nhạc nền vào video và xuất ra một tệp hoàn chỉnh.

Vậy nên, chuẩn bị tinh thần, tập trung chú ý và tiến tới — chinh phục đỉnh cao của việc chỉnh sửa video với Python!

Bắt đầu từ cơ bản — tạo các video clip. Như những nghệ sĩ thực thụ, chúng ta cần biết cách trích xuất các khung hình từ video, thêm âm thanh và tất nhiên, xuất kết quả cuối cùng. MoviePy là một lựa chọn tuyệt vời cho nhiệm vụ này.

Các class chính để làm việc với video và âm thanh

Trong MoviePy, các class chính để làm việc với multimedia là:

  • VideoFileClip — để tạo và làm việc với video clip.
  • AudioFileClip — để làm việc với audio clip.

Tạo đối tượng video clip

Trước tiên hãy tạo một video clip, sử dụng class VideoFileClip. Class này cho phép mở tệp video và truy cập các thuộc tính cũng như phương thức chỉnh sửa của nó.


from moviepy.editor import VideoFileClip

# Mở tệp video và tạo video clip
video_clip = VideoFileClip("sample_video.mp4")

# Xuất thông tin về video clip
print("Thời lượng video:", video_clip.duration, "giây")
print("Kích thước video:", video_clip.size)

Trong ví dụ này:

  • VideoFileClip("sample_video.mp4") mở tệp video và tạo đối tượng video_clip, mà bạn có thể sử dụng để thêm âm thanh và các thay đổi khác.
  • video_clip.durationvideo_clip.size cung cấp thông tin về thời lượng và kích thước video.

Tạo video clip trống

Đôi khi chúng ta cần bắt đầu từ con số không - tạo một clip từ đầu. MoviePy cho phép làm điều này một cách đơn giản bằng cách gọi ColorClip.


from moviepy.editor import ColorClip

# Tạo clip màu đỏ với kích thước 640x360 và thời lượng 5 giây
blank_clip = ColorClip(size=(640, 360), color=[255, 0, 0], duration=5)

blank_clip.write_videofile("blank_clip.mp4", fps=25)

Điều này sẽ tạo ra một video màu đỏ dài 5 giây. Đơn giản nhưng rất tiềm năng, phải không?

Trích xuất âm thanh từ video clip

Đầu tiên, hãy trích xuất âm thanh từ video clip đã tải trước đó. Điều này hữu ích nếu bạn thích nhạc nền gốc và muốn sử dụng nó riêng.


# Trích xuất âm thanh từ video
audio = video.audio

# Lưu âm thanh vào tệp
audio.write_audiofile("extracted_audio.mp3")

Bây giờ bạn đã có một tệp âm thanh từ video của mình. Thật tiện lợi khi bạn chỉ cần phần âm thanh.

Tạo đối tượng audio clip

MoviePy cũng cho phép thêm audio clip. Để làm điều này, sử dụng class AudioFileClip, class mở tệp âm thanh và cho phép làm việc với nó giống như với video clip.


from moviepy.editor import AudioFileClip

# Mở tệp âm thanh và tạo audio clip
audio_clip = AudioFileClip("background_music.mp3")

# Xuất thông tin về thời lượng âm thanh
print("Thời lượng âm thanh:", audio_clip.duration, "giây")

2. Kết hợp video clip và audio clip

Thêm âm thanh vào video

Bây giờ, khi chúng ta đã có video clip và audio clip, chúng ta có thể kết hợp chúng, bằng cách thêm audio vào video. Trong MoviePy, điều này được thực hiện bằng phương thức set_audio().


# Thêm audio clip vào video clip
video_with_audio = video_clip.set_audio(audio_clip)

Mã này tạo đối tượng mới video_with_audio, trong đó audio clip audio_clip được tích hợp vào video clip video_clip.

Điều chỉnh thời lượng audio clip

Đôi khi thời lượng audio clip và video clip có thể khác nhau. Để audio clip phù hợp với video, bạn có thể sử dụng phương thức subclip() để cắt âm thanh hoặc thay đổi âm thanh để nó lặp lại cho đến hết video clip.

Cắt audio clip theo thời lượng video


# Cắt audio clip theo thời gian của video
audio_clip_trimmed = audio_clip.subclip(0, video_clip.duration)

# Thêm âm thanh đã cắt vào video
video_with_audio = video_clip.set_audio(audio_clip_trimmed)

Trong ví dụ này:

  • audio_clip.subclip(0, video_clip.duration) tạo một audio clip mới, cắt theo thời lượng của video clip.
  • Phương thức set_audio() thêm audio đã cắt vào video.

Lặp lại audio clip theo thời gian video

Nếu bạn muốn audio clip lặp lại cho đến hết video, sử dụng phương thức fx() với hàm loop.


from moviepy.audio.fx.all import loop

# Lặp lại audio clip theo thời lượng video
audio_clip_looped = loop(audio_clip, duration=video_clip.duration)

# Thêm audio lặp lại vào video
video_with_audio = video_clip.set_audio(audio_clip_looped)

Trong ví dụ này:

  • loop(audio_clip, duration=video_clip.duration) tạo audio lặp lại cho đến khi video kết thúc.
  • Chúng ta thêm audio lặp lại vào video bằng set_audio().

3. Xuất video với audio đã thêm

Xuất video clip với audio

Hãy đảm bảo rằng bạn đã cài đặt các codec cần thiết, như libx264 dành cho video và aac cho âm thanh, bởi nếu không, tuyệt tác của chúng ta sẽ không ai xem được.

Khi xuất video, chúng ta có thể chỉ định các thông số khác nhau, như độ phân giải và tốc độ khung hình:


# Xuất video với các thiết lập mới
video_with_audio.write_videofile(
    "output_video_with_audio.mp4",
    codec='libx264',
    audio_codec='aac',
    fps=30,
    preset='medium',
    bitrate="2000k"
)

Trong ví dụ này:

  • write_videofile("output_video_with_audio.mp4", codec="libx264", audio_codec="aac") lưu video với âm thanh ở định dạng MP4, sử dụng codec video libx264 và codec âm thanh aac.

Ta-daa! Tuyệt phẩm của chúng ta sẵn sàng để tải lên YouTube, Vimeo hoặc chỉ để gửi cho bạn bè.

Sau khi thêm nhạc nền vào video, bạn có thể xuất kết quả dưới dạng tệp mới. Để làm điều này, sử dụng phương thức write_videofile().

Điều chỉnh âm lượng của audio clip

Để điều chỉnh âm lượng của âm thanh trong video, bạn có thể sử dụng phương thức volumex(), phương thức này thay đổi âm lượng theo một hệ số nhất định. Ví dụ, nếu bạn muốn giảm âm lượng, hãy chỉ định giá trị nhỏ hơn 1, và để tăng âm lượng thì giá trị lớn hơn 1.

Ví dụ: Giảm âm lượng của audio


# Giảm âm lượng của audio clip xuống một nửa
audio_clip_quieter = audio_clip.volumex(0.5)

# Thêm âm thanh với âm lượng thấp hơn vào video
video_with_audio = video_clip.set_audio(audio_clip_quieter)
video_with_audio.write_videofile("output_video_quieter.mp4")

Trong ví dụ này:

  • audio_clip.volumex(0.5) giảm âm lượng của âm thanh xuống 50% so với ban đầu.
  • set_audio()write_videofile() thêm âm thanh vào video và lưu kết quả.

4. Ví dụ hoàn chỉnh

Tạo video có âm thanh và điều chỉnh các tham số

Bây giờ chúng ta hãy kết hợp tất cả các bước đã xem xét thành một ví dụ, trong đó chúng ta thêm âm thanh vào video, cắt nó theo thời gian cần thiết, điều chỉnh âm lượng và xuất video hoàn chỉnh.


from moviepy.editor import VideoFileClip, AudioFileClip
from moviepy.audio.fx.all import loop

# Mở tệp video
video_clip = VideoFileClip("sample_video.mp4")

# Mở tệp âm thanh
audio_clip = AudioFileClip("background_music.mp3")

# Điều chỉnh âm lượng của âm thanh
audio_clip_adjusted = audio_clip.volumex(0.7)

# Lặp audio đến khi kết thúc video
audio_clip_looped = loop(audio_clip_adjusted, duration=video_clip.duration)

# Thêm audio vào video
video_with_audio = video_clip.set_audio(audio_clip_looped)

# Xuất video với âm thanh
video_with_audio.write_videofile("final_output_with_audio.mp4", codec="libx264", audio_codec="aac")

Trong ví dụ này:

  1. Chúng ta tải video và audio lên.
  2. Điều chỉnh âm lượng của audio với volumex().
  3. Lặp audio theo thời gian của video.
  4. Thêm audio vào video.
  5. Xuất video với âm thanh thành tệp final_output_with_audio.mp4.

Lỗi thường gặp và cách giải quyết

Trong quá trình làm việc với MoviePy, một số lỗi, như những con "ma ác", có thể gây khó khăn cho sự sáng tạo của chúng ta. Ví dụ, các vấn đề với các codec âm thanh hoặc không tương thích định dạng. Hãy sử dụng audio_codec='aac' để mã hóa âm thanh hiện đại, điều này sẽ giải quyết nhiều vấn đề.

Nếu video hoặc âm thanh không xuất được, mặc dù mã code có vẻ đúng, hãy kiểm tra xem bạn đã cài đặt các codec cần thiết chưa. Tải hoặc cập nhật FFMPEG, phần mềm mà MoviePy sử dụng để xử lý video và âm thanh.

Bây giờ, khi bạn đã biết cách tạo và xuất các video clip, khả năng là vô hạn. Những kỹ năng này có thể hữu ích trong nhiều dự án khác nhau: từ tạo video giáo dục đến tài liệu quảng cáo. Trong các buổi phỏng vấn, kỹ năng tự động hóa công việc với video có thể là át chủ bài của bạn. Còn trong công việc hàng ngày, nó giúp tiết kiệm rất nhiều thời gian khi xử lý nội dung đa phương tiện.

Đã đến lúc áp dụng phép màu lập trình và sáng tạo vào thực tế và làm cả thế giới ngạc nhiên với các video clip của bạn. Và đừng quên, như một lập trình viên thông thái từng nói: "Nếu mã không hoạt động, thêm nhiều cà phê vào, còn nếu hoạt động - thêm chút kiêu hãnh!"

Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION