MP4 Dosyasından MP3'e ffmpeg ile Dönüştürme Rehberi

MP4 dosyasından sadece ses parçasını ayıklayarak MP3'e dönüştürmek için ffmpeg kullanım adımları ve en iyi ayarlar. Ses kalitesi ve toplu işlemler hakkında detaylı bilgiler.

I
ITWISE
1 görüntülenme
MP4 Dosyasından MP3'e ffmpeg ile Dönüştürme Rehberi

Giriş

Kayıtlı bir ders videosu, video olarak yayınlanan bir podcast ya da sadece sesini dinlediğiniz bir konser klibi... Bazen bir MP4 dosyasından sadece ses parçasına ihtiyaç duyarsınız. Bu durumda ffmpeg kullanarak, birden fazla seçenekle ses kalitesini kontrol ederek ve tek komutla bu dönüşümü gerçekleştirebilirsiniz.

Bu rehberde, ffmpeg ile MP4'ten MP3'e nasıl dönüştürme yapılacağı, ses kalitesinin nasıl ayarlanacağı, sesin kalite kaybı olmadan nasıl çıkarılacağı ve toplu dosya dönüştürme işlemleri adım adım anlatılmaktadır.

Gerekli Önkoşullar

ffmpeg'in sisteminizde yüklü olması gerekmektedir. Aşağıdaki adımlarla Ubuntu, Debian ve türevlerinde ffmpeg ve ffprobe araçlarını kurabilirsiniz:

  1. Terminali açın ve aşağıdaki komutları çalıştırın:

    sudo apt update
    sudo apt install ffmpeg

    Bu komutlar, hem ffmpeg hem de ffprobe araçlarını sisteminize kuracaktır.

  2. Kurulumun başarılı olup olmadığını doğrulamak için:

    ffmpeg -version
    ffprobe -version

    Komutları çalıştırın. Her iki komut da ilgili araçların versiyon bilgilerini göstermelidir.

Not: Farklı Linux dağıtımlarında ya da macOS/Windows için ffmpeg kurulumuna ilişkin özel talimatlar için lütfen resmi FFmpeg indirme sayfasını ziyaret edin.

MP4'den MP3'e Dönüştürme

Temel Dönüştürme

En basit haliyle, ffmpeg komutuna girdi dosyasını, MP3 kodlayıcısını ve çıktı dosyasının adını vererek dönüşümü gerçekleştirebilirsiniz:

ffmpeg -i video.mp4 -c:a libmp3lame audio.mp3

Bu komut:

  • -i video.mp4: Girdi dosyasını belirtir.
  • -c:a libmp3lame: Ses parçasını LAME MP3 kodlayıcısı kullanarak MP3 formatına dönüştürür.
  • audio.mp3: Çıktı dosyasının adını belirtir.

Video parçası otomatik olarak atılır, çünkü MP3 dosyalarında video bulunamaz.

Ses Kalitesini Ayarlama

Varsayılan ayarlar genellikle yeterli olsa da, ses kalitesini daha hassas bir şekilde kontrol etmek için aşağıdaki komutu kullanabilirsiniz:

ffmpeg -i video.mp4 -vn -c:a libmp3lame -q:a 2 audio.mp3

Bu komutta kullanılan seçenekler:

  • -vn: Video parçasını açıkça devre dışı bırakır.
  • -c:a libmp3lame: LAME MP3 kodlayıcısını kullanır.
  • -q:a 2: Değişken bit hızı (VBR) kalite seviyesini 2 olarak ayarlar. Bu seviye genellikle ortalama 190 kb/s bit hızına karşılık gelir.

Kalite Seviyeleri ve Bit Hızları

MP3 kodlayıcısı, 0 (en yüksek kalite) ile 9 (en düşük kalite) arasında değişen bir VBR kalite ölçeği sunar. Aşağıdaki tabloda farklı kalite seviyelerine karşılık gelen yaklaşık bit hızları verilmiştir:

Kalite Seviyesi Ortalama Bit Hızı Kullanım Alanı
-q:a 0 ~245 kb/s En yüksek kalite gerektiren müzikler için.
-q:a 2 ~190 kb/s Genel kullanım için en iyi dengeyi sunar.
-q:a 5 ~130 kb/s Konuşma ve podcast'ler için yeterli kalitede.
-q:a 7 ~100 kb/s Dosya boyutunu önemli ölçüde azaltır, ancak müzikte sıkıştırma etkisi daha belirgindir.

Eğer sabit bit hızı (CBR) kullanmak istiyorsanız, örneğin bazı cihazların VBR'ı desteklememesi durumunda, aşağıdaki komutu kullanabilirsiniz:

ffmpeg -i video.mp4 -vn -c:a libmp3lame -b:a 192k audio.mp3

Önemli: Kodlama işlemi, kaynağın ses kalitesini artıramaz. Örneğin, 96 kb/s'lik bir ses parçasını 320 kb/s olarak kodlamak, dosya boyutunu artırır ancak ses kalitesini iyileştirmez.

Kalite Kaybı Olmadan Ses Çıkarımı

MP3'e dönüştürmek her zaman yeniden kodlama gerektirir ve bu da küçük de olsa bir kalite kaybına neden olur. Eğer sadece orijinal ses parçasını almak istiyorsanız, sesin codec'ini kontrol ederek yeniden kodlama yapıp yapmayacağınıza karar verebilirsiniz.

Ses Codecine Bakma

Ses codec'ini öğrenmek için ffprobe aracını kullanabilirsiniz:

ffprobe -v error -select_streams a:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 video.mp4

Bu komut, video.mp4 dosyasındaki ilk ses parçasının codec'ini gösterecektir. Örneğin, çıktı aşağıdaki gibi olabilir:

aac

AAC codec'i MP4 dosyalarında yaygın olarak kullanılır ve .m4a konteynerine yeniden kodlama yapmadan kopyalanabilir. Bu şekilde, ses dosyasını kalite kaybı olmadan çıkarabilirsiniz:

ffmpeg -i video.mp4 -map 0:a:0 -c:a copy audio.m4a

Bu komutta kullanılan seçenekler:

  • -map 0:a:0: İlk ses parçasını seçer.
  • -c:a copy: Ses parçasını yeniden kodlama yapmadan kopyalar.

Bu işlem, MP3'e dönüştürmeye göre çok daha hızlıdır ve ses kalitesinde hiçbir kayıp olmaz. Eğer ffprobe başka bir codec gösteriyorsa, uyumlu bir konteyner kullanın ya da sesi yeniden kodlayın.

İpucu: Birden fazla ses parçasını kontrol etmek için ffprobe -hide_banner video.mp4 komutunu kullanabilirsiniz.

Dosyanın Bir Kısmını Dönüştürme

Bazen bir dosyanın sadece belirli bir bölümünü dönüştürmek isteyebilirsiniz. Örneğin, uzun bir konserden sadece bir şarkıyı ya da uzun bir röportajdan sadece bir cevabı almak istiyorsunuz. Bu durumda, başlangıç zamanı ve süreyi belirterek dönüşümü gerçekleştirebilirsiniz:

ffmpeg -ss 00:05:30 -i video.mp4 -t 00:06:30 -vn -c:a libmp3lame -q:a 2 clip.mp3

Bu komutta kullanılan seçenekler:

  • -ss 00:05:30: 5 dakika 30 saniyeden itibaren başlar.
  • -t 00:06:30: Sonraki 6 dakika 30 saniyeyi dönüştürür.

Bu şekilde, dosyanın 5:30 ile 12:00 arasındaki kısmı clip.mp3 olarak kaydedilir.

Not: Süreleri belirtirken HH:MM:SS formatını kullanın. Örneğin, 1 saat 30 dakika için -ss 01:30:00 ya da -t 01:30:00 kullanabilirsiniz.

Toplu Dosya Dönüştürme

ffmpeg, tek seferde sadece bir dosya işleyebilir. Bu nedenle, bir dizindeki tüm MP4 dosyalarını dönüştürmek için bir bash döngüsü kullanabilirsiniz:

shopt -s nullglob
for f in *.mp4; do
  ffmpeg -n -i "$f" -vn -c:a libmp3lame -q:a 2 "${f%.mp4}.mp3"
done

Bu komutlarda kullanılan seçenekler:

  • shopt -s nullglob: Dizin içinde MP4 dosyası yoksa döngüyü atlar.
  • -n: Var olan dosyaların üzerine yazılmasını engeller.
  • ${f%.mp4}: Dosya adından .mp4 uzantısını kaldırır.
  • Çift tırnaklar, dosya adlarında boşluk olan durumlarda sorun çıkmasını engeller.

Alternatif olarak, paralel işlem yapmak için parallel aracını kullanabilirsiniz:

parallel ffmpeg -n -i {} -vn -c:a libmp3lame -q:a 2 {.}.mp3 ::: *.mp4

Sık Yaşanan Sorunlar ve Çözümleri

Bilinmeyen Kodlayıcı 'libmp3lame'

Sorun: ffmpeg LAME MP3 kodlayıcısını bulamıyor.

Çözüm: Bazı minimal ya da codec kısıtlı FFmpeg paketlerinde LAME MP3 kodlayıcısı bulunmayabilir. Kontrol etmek için:

ffmpeg -hide_banner -encoders | grep -w libmp3lame

Eğer kodlayıcı bulunmuyorsa, FFmpeg paketinizi LAME destekli olarak yeniden kurun. Örneğin, Ubuntu için:

sudo apt install ffmpeg libmp3lame-dev

Çıktı Dosyasında Ses Yok

Sorun: Dönüştürülen dosyada ses yok.

Çözüm: Kaynak dosyada birden fazla ses parçası olabilir ve yanlış olanı seçilmiş olabilir. Kontrol etmek için:

ffprobe -hide_banner video.mp4

Daha sonra doğru ses parçasını seçmek için -map seçeneğini kullanın. Örneğin, ikinci ses parçasını seçmek için:

ffmpeg -i video.mp4 -map 0:a:1 -c:a libmp3lame -q:a 2 audio.mp3

M4A Çıktı Header'ı Yazılamadı

Sorun: Kaynak ses codec'i M4A konteyneriyle uyumlu değil.

Çözüm: Kaynak ses codec'ine uyumlu bir konteyner kullanın ya da -c:a copy yerine -c:a aac -b:a 192k kullanarak uyumlu bir M4A dosyası oluşturun:

ffmpeg -i video.mp4 -map 0:a:0 -c:a aac -b:a 192k audio.m4a

Çıktı Dosyası Zaten Var

Sorun: FFmpeg var olan bir dosyanın üzerine yazılmasını engelliyor.

Çözüm: Aşağıdaki seçeneklerden birini kullanın:

  • -n: Var olan dosyaların üzerine yazılmasını engeller.
  • -y: Var olan dosyaların üzerine yazılmasını zorlar.
  • Farklı bir çıktı adı kullanın.

Sonuç

Günlük kullanım için tek bir komut yeterlidir:

ffmpeg -i video.mp4 -vn -c:a libmp3lame -q:a 2 audio.mp3

Bu komut, -q:a seçeneğiyle dosya boyutu ve ses kalitesi arasında en iyi dengeyi sunar. Daha fazla FFmpeg komutu ve kullanım örnekleri için FFmpeg komut rehberine göz atabilirsiniz.

Hatırlatma: FFmpeg'in sunduğu birçok seçenek ve ayar bulunmaktadır. İhtiyaçlarınıza en uygun olanları seçerek, ses dönüştürme işlemlerinizi optimize edebilirsiniz.

Kaynak

Linuxize