Change background image

FFMPEG Make Slideshow with FFMPEG - Tạo Slideshow bằng FFMPEG

Discussion in 'ByPass Videos Copyright' started by DannyTuan, Nov 17, 2017.

  1. DannyTuan

    DannyTuan Ban Quản Trị Staff Member Administrator

    Joined:
    Jun 10, 2000
    Messages:
    174
    Likes Received:
    0
    Trophy Points:
    16
    Gender:
    Male
    Location:
    Cần Thơ
    Bài viết hôm nay mình xin chia sẻ cách làm Video Slideshow bằng ffmpeg kết hợp với file âm thanh. Chúng ta sẽ ghép toàn bộ ảnh có sẵn thành Video trình chiếu với sự hỗ trợ của ffmpeg, đồng thời có thể thêm vào Video một hoặc nhiều file âm thanh có sẵn một cách nhanh chóng.
    slideshow-ffmpeg_nhieu-hinh-anh-1-am-thanh.png
    Dành cho những ai muốn tạo Video bằng cách ghép nhiều ảnh thành Video trình chiếu và kết hợp bài hát vào Video trình chiếu đó. Bài này mình sẽ giới thiệu cách làm slideshow và kết hợp với 1 file mp3 hoặc một list mp3.
    Video Slideshow kết hợp với 1 file âm thanh
    1. Chuẩn bị hình ảnh đầu vào
    • Các ảnh để làm slideshow bạn cần chọn cùng một kích thước là tốt nhất và cùng 1 định dạng (bắt buộc) . Nếu các kích thước ảnh tỷ lệ khác nhau thì khi đưa vào làm slideshow thì ảnh sẽ bị co giãn và nhìn không được tự nhiên. Chuyển về cùng định dạng để khi chúng ta đưa vào code ffmpeg nó sẽ hiểu và lựa chọn các ảnh có định dạng mà chúng ta thiết lập (ví dụ .JPG, .PNG…)
    • Các file ảnh này chắc chắn cũng sẽ có những filename (tên file) khác nhau, chúng ta cũng phải tiến hành đổi tên về cùng 1 định dạng và theo thứ tự tăng dần (ví dụ image-001, image-002, image-003…). Việc đổi tên thủ công rất mất thời gian với số lượng ảnh lớn, vì vậy bạn chỉ cần chạy code dưới đây để toàn bộ hình ảnh được đổi tên về cùng một định dạng như trên.
      Code:
      dir *.png | %{$x=0} {Rename-Item $_ -NewName "image-$($x.tostring('000')).png"; $x++ }
    • Đoạn code trên chạy bằng PowerShell. Tại thư mục chứa các file ảnh bạn khởi động PowerShell (Win 10) bằng cách giữ phím Shift và click chuột phải, chọn Open PowerShell Windows here.
      [​IMG]
    • Copy đoạn code trên vào đây và nhấn Enter.
      [​IMG]
    • Bạn đã thấy toàn bộ image đã được đổi tên thành image-000.jpg đến image-xxx.jpg chưa nào?
      [​IMG]
    • OK bây giờ chúng ta có thư viện ảnh được dạng theo chuẩn image-%03d như vậy.
    2. Làm Video slideshow bằng ffmpeg
    • Đưa vào code ffmpeg để cùng tạo slideshow.
      Code:
      ffmpeg -y -framerate 1/10 -i E:/img/image-%03d.jpg -i music.mp3 -c:v libx264 -r 30 -pix_fmt yuv420p -c:a aac -strict experimental -shortest -s 854x480 output_multi_images_1_mp3.mp4 1 ffmpeg -y -framerate 1/10 -i E:/img/image-%03d.jpg -i music.mp3 -c:v libx264 -r 30 -pix_fmt yuv420p -c:a aac -strict experimental -shortest -s 854x480 output_multi_images_1_mp3.mp4
    • Bạn cần để ý các vấn đề:
      • framerate 1/10: thời gian mỗi ảnh là 10s, thay đổi thời gian của ảnh tại đây.
      • E:/img/image-%03d.jpg: thư mục lưu ảnh với ảnh định dạng chuẩn như bên trên.
      • music.mp3: là file âm thanh ghép vào Video.
    • Bên trên là code chạy slideshow làm ảnh bị bóp méo nếu các file ảnh có kích thước khác nhau. Để giữ nguyên tỷ lệ hình ảnh thì làm thế nào?
    • Đoạn code dưới đây sẽ giữ nguyên tỷ lệ hình ảnh khi làm Video Slideshow bằng ffmpeg, kèm theo vào đó là chèn logo vào Video slideshow.
      Code:
      ffmpeg -y -framerate 1/10 -start_number 1 -i "in_img/Base-%02d.png" -i audio.mp3 -loop 1 -i logo.png -filter_complex "[0:v]scale=iw*min(854/iw\,480/ih):ih*min(854/iw\,480/ih), pad=854:480:(854-iw)/2:(480-ih)/2[ss]; [ss][2:v] overlay=main_w-overlay_w-10:main_h-overlay_h-10:shortest=1[out]" -map "[out]" -map 1:a -c:v libx264 -r 30 -pix_fmt yuv420p -c:a aac -strict experimental -shortest out_silieshow_maintain_aspect_ratio_logo.mp4
    Video Slideshow kết hợp với nhiều file âm thanh
    Cách trên chúng ta ghép 1 bản nhạc vào Video, còn nếu muốn ghép vào một list nhạc có sẵn trong Folder thì làm thế nào nhỉ. Cùng tìm hiểu việc tạo slideshow kết hợp với nhiều file âm thanh qua hướng dẫn bên dưới.
    1. Chuẩn bị hình ảnh
    Các bạn cũng chuẩn bị các file ảnh và đổi tên như hướng dẫn bên trên.​
    2. Chuẩn bị list âm thanh
    Các file âm thanh này bạn đưa vào cùng thư mục và chạy đoạn code dưới để tạo mylist.txt chứa tất cả đường dẫn của các file cần ghép vào Video.
    Code:
    (for %i in ("E:\in\*.mp3") do @echo file '%i') > mylist.txt 1 (for %i in ("E:\in\*.mp3") do @echo file '%i') > mylist.txt
    Bạn sửa lại đúng đường dẫn chứa các file nhạc mp3 của mình nhé.​
    3. Tạo slideshow và ghép nhiều file âm thanh vào Video
    Chạy đoạn code bên dưới trong thư mục chứa file mylist.txt để tạo slideshow và ghép các file âm thanh trong mylist.txt vào Video.
    Code:
    ffmpeg -y -framerate 1/10 -i E:/img/image-%03d.jpg -f concat -safe 0 -i mylist.txt -c:v libx264 -r 30 -pix_fmt yuv420p -c:a aac -strict experimental multi_all.mp4 1 ffmpeg -y -framerate 1/10 -i E:/img/image-%03d.jpg -f concat -safe 0 -i mylist.txt -c:v libx264 -r 30 -pix_fmt yuv420p -c:a aac -strict experimental multi_all.mp4

    Chúc các bạn thành công và nhớ chia sẻ bài viết này để mọi người cùng biết nhé. Xin chào và hẹn gặp lại. 5 (100%) 1 vote Chia sẻ:
     

Share This Page