WAV Dosya Yapısı ve C# ile WAV Dosyası Oluşturmak
- Ayrıntılar
- Üst Kategori: Programcılık
- Kategori: C#
- Perşembe, 20 Ocak 2011 13:37 tarihinde oluşturuldu
- Super User tarafından yazıldı.
- Gösterim: 1286
Ses dosyalarını birleştirmek, bölmek, belirli bir süre sessizlik üretmek isteyenlerin ilgisini çekebilecek bir konuda anlatımlı örnek hazırladım.
"WAV File Format" anahtar kelimesi ile Google araması yaptığınızda daha ayrıntılı ve görsel anlatımlı bilgiler bulacaksanız. Buradaki örnekte amacımız, programlarımızda kullanmak üzere, istediğimiz uzunlukta ve isimde sessiz WAV dosyaları oluşturmak. Niye peki? Hem anlamak için hem de yazılımlarımızda ses dosyalarını birleştirirken aralara belli sürelerde sessizlik eklemek isteyebileceğimiz için.
Önce gerekli kütüphaneleri belirtelim:
1 2 |
using System.Text; // Encoding.ASCII.GetBytes gibi komutlar için gerekli using System.IO; // Dosya işlemleri içim gerekli |
Fonksiyonumuzu programımızın herhangi bir yerinden şöyle çağıracağız:
1 |
wavOlustur(17 , @"c:\deneme.wav"); // 17 saniye uzunluğunda C:\deneme.wav isminde bir ses dosyası oluşturur.
|
Kod aşağıdaki gibidir:
| C# İle WAV Formatında Dosya Oluşturan Örnek Kod | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
public void wavOlustur(int saniye, string dosyaadi) { if (File.Exists(dosyaadi)) { File.Delete(dosyaadi); } byte[] bosVeri = new byte[saniye * 48000 * 4]; //1 FileStream bosWavDosyasi = null; |
Örneğimiz, 48000 Hz, 16 bit, stereo(2 kanal), PCM, 17 saniye uzunluğunda sessiz bir WAV ses dosyası oluşturur.
Yukarıdaki örnek boş bir WAV dosyası oluşturmak içindi.

Eğer WAV dosyalarını birleştirmek isterseniz;
İlk 44 byte içerisinde dosyanın özellikleri bulunur. Sonraki veri sadece ses verisidir.
4 numaralı byte dan itibaren 4 byte lık yerin formülü;
bosVeri.Length + 44 - 8
ve 40 numaralı byte dan itibaren 4 byte lık yerin formülü;
bosVeri.Length
olup, WAV birleştirme veya bölme işlemlerinde dikkat etmeniz ve hesaplatmanız gereken değişken kısımlar bu ikisidir.
Dosya özelliklerindeki diğer bilgiler, eğer benim bu örnekteki özellikler ile çalışıyorsanız sabit olacağından, hesaplama yapmanızı gerektirmezler.
Örneğin WAV dosyalarını birleştirmek isterseniz, önce oluşacak tek wav dosyası için sıfır bir dosya açın ve yukarıdaki header bilgilerini yani ilk 44 bytelık bilgiyi aynen yazdırın.
Sonra birleşecek her WAV dosyasının 44 üncü byte dan dosya sonuna kadarını okuyup oluşacak wav dosyasının içine sırayla yazdırın.
İşiniz bitince oluşacak tek WAV dosyasını kapatın(burada kullanmadığımız özellik: kapatmadan Seek komutlarını kullanarak da konumlandırma da yapabilirdik çünkü dosya üzerinde geri dönüp bazı alanları güncelleme işimiz var).
Sonra oluşmuş WAV dosyasını tekrar açın ve 4 ile 40 ıncı byte alanlarında bulunan 4 bytelık sayıları, yukarıda verdiğim formüllere göre tekrar kaydedin. Birincisi dosya uzunluğu - 8 olacak, diğeri dosya uzunluğu - 44 olacak.
Dosyayı kapatın.
Böylece birden fazla WAV dosyası tek bir WAV dosyası olarak birleşmiş olur.
Daha ayrıntılı bilgi ve dosya çeşitlilikleri için, internette "WAV File Format" kelimelerini arattırdığınızda karşınıza çıkacak olan dökümanlardan faydalanabilirsiniz.
Bilişim Haberleri
Windows Live Hotmail Türkiye Kullanım Sayıları
Internete her gün 32 milyon vatandaşımız erişiyormuş ve de 20 milyon kişi hem Hotmail mail hesabı hem de MSN instant messaging kullanıyormuş.
turkerHR Yayınlandı!
Kodları tamamen bana ait olan turkerHR yazılımımı hemen indirip kurup kullanabilirsiniz. Kaynak kodları herkese açık, şimdilik biraz kötü görünebilir, iyileştireceğim.
Joomla 1.6.1 Güvenlik Sürümü Yayınlandı
Joomla 1.6 kullananların 1.6.1 sürümüne güncelleme yapmaları gerekiyor güvenlik gereği.
PayPal ile Türk Lirası Kullanabiliriz
PayPal’ın ne zaman Türk Lirası ödemelerini kabul edeceğini merak ediyorsanız, artık ediyor.
Dış Linkler

