Arama butonu
Bu konudaki kullanıcılar: 1 misafir
5
Cevap
490
Tıklama
0
Öne Çıkarma
Flash record audio yardım (Ücretli)
C
11 yıl
Onbaşı
Konu Sahibi

Merhaba arkadaşlar actionscript konusunda pek bilgim yok fakat yapmam gereken bir proje için yardımınıza ihtiyacım var. Record audio olayı sesi kaydedip tekrar çalma aslında aşağıdaki kodlarla buton ekleyerek yaptım fakat benim istediğim şu, uygulama açıldığı zaman herhangi bir buton olmayacak sadece kişi konuştuğu zaman kayıt başlayacak ve konuşması bittiğinde kayıt işlemi de bitecek ardından 0,5 saniye veya 1 saniye sonra kendiliğinden bu kayıtı çalacak. Tabii tekrar konuşmaya başladığı zaman yine kayıt yapıp çalacak ayrıca mümkünse bu çalınan sesin tonunun da değişik olmasıni istiyorum yani kullanıcının sesi çalınacağı için aynı olmasını istemiyorum. Arkadaşlar benim için gerçekten çok önemli bir konu yardım edecek varsa ücretiyle beraber pm atabilir mi

 
package {
import flash.display.Sprite;
import flash.media.Microphone;
import flash.media.Sound;
import flash.media.SoundChannel;
import flash.events.MouseEvent;
import flash.events.SampleDataEvent;
import flash.utils.ByteArray;
import flash.events.Event;
import flash.media.SoundMixer;
import flash.media.AudioPlaybackMode;

public class RecTest extends Sprite {

var mic:Microphone;
var s:Sound;
var sc:SoundChannel;
var nowRecording:Boolean = false;
var nowPlaying:Boolean = false;
var recordedBytes:ByteArray;

public function RecTest() {

SoundMixer.audioPlaybackMode = AudioPlaybackMode.MEDIA;

mic = Microphone.getMicrophone();
mic.rate = 44;
mic.gain = 70;
mic.setSilenceLevel(5);

s = new Sound();

recordedBytes = new ByteArray();

recorder.addEventListener(MouseEvent.CLICK, record);
player.addEventListener(MouseEvent.CLICK, playBack);
}



function record(e:MouseEvent) {
if (!nowRecording) {
trace("recording");
recordedBytes.clear();
mic.addEventListener(SampleDataEvent.SAMPLE_DATA, getMicAudio);
nowRecording = true;
} else {
trace("recording stopped");
mic.removeEventListener(SampleDataEvent.SAMPLE_DATA, getMicAudio);
nowRecording = false;
}
}

function getMicAudio(e:SampleDataEvent) {
recordedBytes.writeBytes(e.data);
}

function playBack(e:MouseEvent) {
if (!nowPlaying) {
trace("playing");
recordedBytes.position = 0;
s.addEventListener(SampleDataEvent.SAMPLE_DATA, playAudio);
sc = s.play();
sc.addEventListener(Event.SOUND_COMPLETE, stopPlayback, false, 0, true);
nowPlaying = true;
} else {
sc.stop();
stopPlayback();
}
}

function stopPlayback(e:Event=null) {
trace("playing stopped");
s.removeEventListener(SampleDataEvent.SAMPLE_DATA, playAudio);
nowPlaying = false;
}

function playAudio(e:SampleDataEvent) {
for (var i:int = 0; i < 8092 && recordedBytes.bytesAvailable > 0; i++) {
var sample:Number = recordedBytes.readFloat();
e.data.writeFloat(sample);
e.data.writeFloat(sample);
}
}
}

}



M
11 yıl
Teğmen

Tam emin değilim ama bildiğim kadarıyla Flash sesi direk kayıt edemiyor. Sesi sunucuya gönderir, ses sunucuda red5, electro server, fms gibi bir soket server uygulaması ile kayıt edilir. Daha sonra flash içerisinden çalıştırılır. Ayrıca belki Air ile ses kayıt edilebiliyordur, tabii air masaüstünde ve mobilde çalışır.


Bu mesaja 1 cevap geldi.
C
11 yıl
Onbaşı
Konu Sahibi

cevabınız için teşekkür ederim o kadar forum sitesine yazdım, mail yolladım bi tek siz cevap verdiniz. Aslında benim de yapmak istediğim bunu mobil platfrom da çalıştırmak fakat bir türlü çıkamadım işin içinden tam olarak bir yolu yok mudur


Bu mesaja 1 cevap geldi.
M
11 yıl
Teğmen

Mobil platform içinse muhtemelen Air kaydedebiliyordur. Air ile pek çalışmam olmadı genellikle browser için oyun ve uygulama yazıyorum. Ben araştırırım, bir şeyler bulabilirsem haber veririm.


Bu mesaja 1 cevap geldi.
M
11 yıl
Teğmen

Yukarıdaki kodu kullanarak denedim, sanırım istediğin gibi bir şeyin nasıl yapılacağını buldum. Flasharsivi'ndeki ilan da sana ait değil mi? Oradaki mail adresine mail gönderdim :). Biraz fazla mesaj gönderiyorum, haftasonu pek zamanım olmayacak. Yani bu işi bugün bitirdik bitirdik yoksa haftaya kalır. Şimdi senin istediğin şu mu: konuşmaya başlayınca kaydetmesi, konuşma bitince direk kaydettiğini çalmaya başlayacak. Çalma bitince, konuşma başladığında tekrar kaydedecek, sonra yine çalaçak.. böyle devam edecek. Bunun haricinde herhangi bir şey olacak mı, örneğin konuşurken ses seviyesini gösteren bir bar(ses kayıt edicilerde oluyor) ya da başka bir şey. Bana hemen bir dönüş yaparsan muhtemelen 1-2 saate hazırlayıp kodu gönderirim.


Bu mesaja 1 cevap geldi.
C
11 yıl
Onbaşı
Konu Sahibi

quote:

Orijinalden alıntı: MapaCarta

Yukarıdaki kodu kullanarak denedim, sanırım istediğin gibi bir şeyin nasıl yapılacağını buldum. Flasharsivi'ndeki ilan da sana ait değil mi? Oradaki mail adresine mail gönderdim :). Biraz fazla mesaj gönderiyorum, haftasonu pek zamanım olmayacak. Yani bu işi bugün bitirdik bitirdik yoksa haftaya kalır. Şimdi senin istediğin şu mu: konuşmaya başlayınca kaydetmesi, konuşma bitince direk kaydettiğini çalmaya başlayacak. Çalma bitince, konuşma başladığında tekrar kaydedecek, sonra yine çalaçak.. böyle devam edecek. Bunun haricinde herhangi bir şey olacak mı, örneğin konuşurken ses seviyesini gösteren bir bar(ses kayıt edicilerde oluyor) ya da başka bir şey. Bana hemen bir dönüş yaparsan muhtemelen 1-2 saate hazırlayıp kodu gönderirim.

yardımlarınız için teşekkür ederim tam istediğim gibi oldu ayrıca mail den geri dönüşünüzü bekliyorum :)



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.