arecord kullanarak ses kartı çıkışından ses kaydetmek

Başlatan if, 20 Mayıs 2012 - 16:10:11

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

if

Dinlediğim radyolardan beğendiğim bir bölümü kaydetme ihtiyacı hasıl olunca bu ihtiyacı giderecek bir yöntem aramaya koyuldum ve bu1 bağlandıya denk geldim. Bağlantıda alatılan yöntemi beğenmemin nedeni ek bir uygulama vs. kurmadan en az sistem kaynağı tüketilerek kayıt yapmaya imkân vermesiydi. Anlatayım:

gedit ~/.asoundrc komutuyla bir belge oluşturup açıyoruz ve içine  pcm.copy {
type plug
slave {
pcm hw
}
route_policy copy
}
yazıp kaydediyoruz. Bu işlemden sonra herhangi bir uygulama ile bir şeyler çalarken cd
arecord -d 10 -c 2 -f S16_LE -r 44100 -t wav -D copy kayıt.wav
komutu verdiğinizde ev dizininde kayıt.wav adlı 19 saniyelik bir wav dosyası oluşacaktır. Bu dosyayı oynattığınızda ses hiç bir ses alamıyor ya da ses kötü geliyorsa sesin alınacağı aygıtın ayarlanması gerekir.

Sıra arecord'un hangi aygıttan sesi yakalayacağınız tanımlamakta. Bunun için önce amixer contents komutunu veriyoruz. numid=4,iface=MIXER,name='Master Playback Switch'
  ; type=BOOLEAN,access=rw------,values=2
  : values=on,on
numid=3,iface=MIXER,name='Master Playback Volume'
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=31,step=0
  : values=26,26
  | dBscale-min=-46.50dB,step=1.50dB,mute=0
numid=2,iface=MIXER,name='PCM Playback Switch'
  ; type=BOOLEAN,access=rw------,values=2
  : values=on,on
numid=1,iface=MIXER,name='PCM Playback Volume'
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=31,step=0
  : values=27,27
  | dBscale-min=-34.50dB,step=1.50dB,mute=0
numid=8,iface=MIXER,name='Line Playback Switch'
  ; type=BOOLEAN,access=rw------,values=2
  : values=off,off
numid=7,iface=MIXER,name='Line Playback Volume'
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=31,step=0
  : values=31,31
  | dBscale-min=-34.50dB,step=1.50dB,mute=0
numid=6,iface=MIXER,name='CD Playback Switch'
  ; type=BOOLEAN,access=rw------,values=2
  : values=off,off
numid=5,iface=MIXER,name='CD Playback Volume'
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=31,step=0
  : values=0,0
  | dBscale-min=-34.50dB,step=1.50dB,mute=0
numid=13,iface=MIXER,name='Mic Boost Volume'
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=3,step=0
  : values=0,0
  | dBscale-min=0.00dB,step=10.00dB,mute=0
numid=12,iface=MIXER,name='Mic Playback Switch'
  ; type=BOOLEAN,access=rw------,values=2
  : values=off,off
numid=11,iface=MIXER,name='Mic Playback Volume'
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=31,step=0
  : values=0,0
  | dBscale-min=-34.50dB,step=1.50dB,mute=0
numid=10,iface=MIXER,name='Aux Playback Switch'
  ; type=BOOLEAN,access=rw------,values=2
  : values=off,off
numid=9,iface=MIXER,name='Aux Playback Volume'
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=31,step=0
  : values=31,31
  | dBscale-min=-34.50dB,step=1.50dB,mute=0
numid=16,iface=MIXER,name='Capture Source'
  ; type=ENUMERATED,access=rw------,values=1,items=0
  ; Item #0 'Mic'
  ; Item #1 'CD'
  ; Item #2 'Aux'
  ; Item #3 'Line'
  ; Item #4 'Mix'
  ; Item #5 'Mono'
  ; Item #6 'Phone'
  : values=4
numid=15,iface=MIXER,name='Capture Switch'
  ; type=BOOLEAN,access=rw------,values=2
  : values=on,on
numid=14,iface=MIXER,name='Capture Volume'
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=15,step=0
  : values=15,15
  | dBscale-min=0.00dB,step=1.50dB,mute=0
numid=21,iface=MIXER,name='IEC958 Default PCM Playback Switch'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off
numid=17,iface=MIXER,name='IEC958 Playback Con Mask'
  ; type=IEC958,access=r-------,values=1
  : values=[AES0=0x0f AES1=0xff AES2=0x00 AES3=0x00]
numid=18,iface=MIXER,name='IEC958 Playback Pro Mask'
  ; type=IEC958,access=r-------,values=1
  : values=[AES0=0x0f AES1=0x00 AES2=0x00 AES3=0x00]
numid=19,iface=MIXER,name='IEC958 Playback Default'
  ; type=IEC958,access=rw------,values=1
  : values=[AES0=0x06 AES1=0x82 AES2=0x00 AES3=0x02]
numid=20,iface=MIXER,name='IEC958 Playback Switch'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off
numid=23,iface=MIXER,name='Beep Playback Switch'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off
numid=22,iface=MIXER,name='Beep Playback Volume'
  ; type=INTEGER,access=rw---R--,values=1,min=0,max=15,step=0
  : values=0
  | dBscale-min=-45.00dB,step=3.00dB,mute=0
numid=25,iface=MIXER,name='Caller ID Switch'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off
numid=26,iface=MIXER,name='Digital Capture Volume'
  ; type=INTEGER,access=rw---RW-,values=2,min=0,max=120,step=0
  : values=120,120
  | dBscale-min=-30.00dB,step=0.50dB,mute=0
numid=24,iface=MIXER,name='Off-hook Switch'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off


Bu çktıda bizi ilgilendiren kısım "Capture Source" başlığında bulunan değerler: numid=16,iface=MIXER,name='Capture Source'
  ; type=ENUMERATED,access=rw------,values=1,items=0
  ; Item #0 'Mic'
  ; Item #1 'CD'
  ; Item #2 'Aux'
  ; Item #3 'Line'
  ; Item #4 'Mix'
  ; Item #5 'Mono'
  ; Item #6 'Phone'
  : values=4
Gördüğünüz gibi ikinci satırda sesi yakalanacak aygıt values=1,items=0 olarak belirtilmiş. Buna göre mikrofondan gelen sesler yakalanacak. Bizim istediğimiz ses kartından çıkanların yakalanması. Bir kaç denemeden sonra kullanmam gereken değerin 4. sıradaki 'Mix' olduğunu keşfettim. İstediğimiz aygıtı atamak için: amixer cset numid=27,iface=MIXER,name='Capture Source" n komutunu girmemiz gerek. Bu komutta ben n yerine 4 yazdım. Eğer bu komut da işe yaramazsa sudo amixer cset numid=27,iface=MIXER,name='Capture Source" 4 komutunu kullanın. İstediğimiz gibi kayıt yapılıp yapılmadığını tekrar deneyelim: cd
arecord -d 10 -c 2 -f S16_LE -r 44100 -t wav -D copy kayıt1.wav
kayıt1.wav dosyasını oynattığınızda çaldığınız müziği temiz bir şekilde duyuyorsanız işlem tamamdır. Çızırtılı bir ses varsa ses kanallarının değerini düşürün.

arecord komutunda kullandığımız -d ile kaydın ne kadar süreceğini belirtiyoruz. Kaydın ne kadar süreceğini bilmiyorsanız komutu verirken -d parametresini kullanmazsınız ve kaydetmek istediğiniz müzik bittiğinde ctrl+c'ya basıp komutu durdurabilirsiniz.

Komutu her seferinde vermek yerine nano ~/.bashrc ile açacağınız belge içerisine alias arecord='arecord -c 2 -f S16_LE -r 44100 -t wav -D copy kayıt.wav' yazıp ctrl+o ile kaydeder, ctrl+x ile çıkarsınız. Bundan sonra sadece arecord komutunu vermeniz yeterlidir.

.wav dosyasını .mp3'e çevirmek için lame -h kayıt.wav kayıt.mp3 komutunu kullanabilirsiniz.

Kayıt esnasında yaşanacak muhtemel sıkıntıları gidermek için: sudo nano /etc/modprobe.d/alsa-base.conf içerisine options snd-hda-intel enable_msi=1 yazıp kaydedin.

Komut hakkında ve kullandığımız parametreler hakkında geniş bilgi için: man arecord
info arecord


1 http://carthick.wordpress.com/2007/11/26/linux-recording-soundcard-output-using-arecord/

zeitgeist

Özgürlüğü ne kadar anlarsan o kadar az sahip olursun. John Fowles

if


if