Chuyển đổi định dạng tập tin đa phương tiện với ffmpeg

Hầu hết trên tất cả các bản phân phối của Linux đều có cài đặt gói ffmpeg. Đây là một gói cho phép người dùng chuyển đổi định dạng tập tin đa phương tiện; ghi lại nội dung âm thanh, hình ảnh; xem, truyền nội dung đa phương tiện (âm thanh, video) qua mạng …
Thông thường, khi làm việc với các tập tin đa phương tiện, nhu cầu chuyển đổi định dạng tập tin rất nhiều do chúng ta cần chúng hoạt động trên nhiều loại thiết bị khác nhau: máy nghe nhạc, điện thoại (iphone, blackberry, android …), đầu phát kỹ thuật số, hay các định dạng phổ biến trên từng nền tảng hệ điều hành khác nhau (windows, linux, mac …). Khi làm việc trên Linux, tôi nhận thấy rằng không phải cứ sử dụng các phần mềm với GUI bắt mắt là nó có tính năng tốt và đầy đủ như tôi mong muốn (điều ngược lại có lẽ đúng hơn :sweat_smile:), nhất là từ khi chuyển sang dùng Arch Linux, tôi thường xuyên sử dụng các công cụ dòng lệnh nhiều hơn là các công cụ có GUI (nhiều hơn không có nghĩa là lúc nào cũng ưu tiên CLI – Command Line Interface đâu nhé, chẳng hạn như soạn thảo thì phải dùng GUI là đương nhiên rồi) và thấy rằng tốc độ làm việc tăng đáng kể.
Trong bài viết này tôi chia sẻ với các bạn cách sử dụng ffmpeg để chuyển đổi các định dạng tập tin đa phương tiện ngay từ dòng lệnh thay vì phải tìm kiếm các phần mềm có GUI dễ sử dụng nhưng tôi thấy thời gian hoàn thành thường kéo dài hơn nhiều.

Chuyển đổi định dạng video

  • Chuyển đổi MOV sang FLV:
    ffmpeg -i movie1.mov movie1.flv
  • Chuyển đổi Mpeg sang FLV:
    ffmpeg -i movie1.mpeg movie1.flv
  • Chuyển đổi AVI sang FLV (kích thước 500×500):
    ffmpeg -i movie1.avi -s 500×500 movie1.flv
  • Chuyển đổi 3GP to FLV (xóa tiếng, chỉ lấy hình):
    ffmpeg -i movie1.3gp -sameq -an movie1.flv
  • Chuyển đổi MPEG sang 3GP:
    ffmpeg -i movie1.mpeg -ab 8.85k -acodec libamr_wb -ac 1 -ar 16000 -vcodec h263 -s qcif movie2.3gp
  • FFV1 Encoding:
    ffmpeg -i -vcodec ffv1 -an output.mov
  • Chuyển đổi flv sang mpg:
    ffmpeg -i myvideo.flv -ar 22050 -b 500 -s 320x240 myvideo.mpg

Chuyển đổi các định dạng âm thanh

  • Chuyển đổi aac sang mp3 giữ nguyên các thông tin:
    ffmpeg -i audio1.aac -ar 22050 -ab 32 -map_meta_data audio1.mp3:audio1.aac audio1.mp3
  • Chuyển đổi WMV sang MP3:
    ffmpeg -i audio1.wmv audio1.mp3
  • Chuyển đổi WMV sang FLV:
    ffmpeg -i audio1.wmv audio1.flv
  • Chuyển đổi AMR sang MP3:
    ffmpeg -i audio1.amr -ar 22050 audio1.mp3
  • Chuyển đổi FLV sang MP3:
    ffmpeg -i movie.flv -vn -acodec copy movie.mp3

Chuyển một loạt hình ảnh có sẵn thành video và ngược lại

ffmpeg -f image2 -i image%d.jpg video.mpg

Trong đó image%d.jpg thay thế cho một danh sách các hình ảnh cần chuyển đổi: image1.jpg, image2.jpg …

ffmpeg -i video.mpg image%d.jpg

Chuyển đoạn video thành ảnh động .gif, lưu ý là ảnh này chưa nén nên cũng tương đối nặng.

ffmpeg -i video_origine.avi gif_anime.gif

Gắn âm thanh vào đoạn video không tiếng

ffmpeg -i son.wav -i video_origine.avi video_finale.mpg

Điểm quan trọng ở câu lệnh này là độ khớp hình với tiếng theo ý định của người chuyển.

Tổng kết

Thực ra sử dụng câu lệnh có thể giúp bạn làm được rất nhiều việc mà lại đơn giản hơn dùng GUI rất nhiều. Khi mình chuyển một tập tin .flv 500Mb sang .mp3 bằng ffmpeg chỉ mất khoảng 25s trong khi dùng phần mềm SoundConverter thì mất hơn 1 phút. Khi sử dụng các phần mềm bằng câu lệnh thì cần nắm vững các tham số của nó trong khi nếu dùng GUI thì ai cũng có thể làm được nhưng mất nhiều thời gian hơn mà thôi. :ok_hand: