folder Tahribat.com Forumları
linefolder Java
linefolder Soket Programlama İle Mikrofon Dinlemek



Soket Programlama İle Mikrofon Dinlemek

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    YeniHarman
    YeniHarman's avatar
    Kayıt Tarihi: 17/Haziran/2012
    Erkek

    Şu udp'ye salacağınız tamponun boyutlarını biraz küçültüp hem sunucu hem de istemcide eşit yapıp deneseniz?


    Olaylara karışmayın!
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    manyaki
    manyaki's avatar
    Kayıt Tarihi: 27/Temmuz/2005
    Erkek

    hemfikiriz hocam ama beceremedim


    since 2005 // tbt
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    manyaki
    manyaki's avatar
    Kayıt Tarihi: 27/Temmuz/2005
    Erkek

    edit// DatagramSocket i global yapınca ses en azından anlaşılır oldu ama hala takılmalar var. do not continiously open and close the AudioLine dediği olayı nasıl yapabilirim ?

    projenin son hali şu şekilde; stackoverflow da gelen bir cevap var ama onu da tam yapamadım

    Also, do not continiously open and close the AudioLine to the speakers. Do also not continuously create DatagramSockets. Create one, and keep it.

    demişler. open ve close fonksiyonlarını döngü içinde değil de nasıl kullanmam lazım öyleyse? ve DatagramSocket i bir kere yarat onun üstünden yap demiş ama yaratırken try-catch kullanmam gerekiyor try-catch kullanarak global değişken yaratılabiliyor mu ?

     

    server:

     

    package soketprogramla;

     

    import java.io.DataOutputStream;

    import java.io.IOException;

    import java.net.DatagramPacket;

    import java.net.DatagramSocket;

    import java.net.InetAddress;

    import java.net.Socket;

    import java.net.UnknownHostException;

     

    import javax.sound.sampled.AudioFormat;

    import javax.sound.sampled.AudioSystem;

    import javax.sound.sampled.DataLine;

    import javax.sound.sampled.Mixer;

    import javax.sound.sampled.Port;

    import javax.sound.sampled.TargetDataLine;

     

    public class MicPlayer {

    {

    try

        {

        DatagramSocket sock = new DatagramSocket() ; 

        }

        catch( Exception e )

        {

        e.printStackTrace() ;

        System.out.println(" Unable to send soundpacket using UDP " ) ;   

        }

    }

        private static final String IP_TO_STREAM_TO   = "192.168.1.6" ;

        private static final int PORT_TO_STREAM_TO     = 8888 ;

     

        /** Creates a new instance of MicPlayer */

        public MicPlayer() {

     

        }

     

        /**

         * @param args the command line arguments

         */

        public static void main(String[] args) {

        Mixer.Info minfo[] = AudioSystem.getMixerInfo() ;

        for( int i = 0 ; i < minfo.length ; i++ )

        {

         System.out.println( minfo[i] ) ;    

        }

     

     

        if (AudioSystem.isLineSupported(Port.Info.MICROPHONE)) {

        try {

     

     

          DataLine.Info dataLineInfo = new DataLine.Info(

         TargetDataLine.class , getAudioFormat() ) ;

         final TargetDataLine targetDataLine = (TargetDataLine)AudioSystem.getLine( dataLineInfo  ) ;

          targetDataLine.open( getAudioFormat() );

          targetDataLine.start();

          byte tempBuffer[] = new byte[8192] ;

          int cnt = 0 ;

          while( true )

          {

          targetDataLine.read( tempBuffer , 0 , tempBuffer.length );

          sendThruUDP( tempBuffer ) ;

          }

     

        }

        catch(Exception e )

        {

        System.out.println(" not correct " ) ;

        System.exit(0) ;

        }

        }

     

     

     

        }

     

     

        public static AudioFormat getAudioFormat(){

        float sampleRate = 8000.0F;

        //8000,11025,16000,22050,44100

        int sampleSizeInBits = 16;

        //8,16

        int channels = 1;

        //1,2

        boolean signed = true;

        //true,false

        boolean bigEndian = false;

        //true,false

        return new AudioFormat( sampleRate, sampleSizeInBits, channels, signed, bigEndian );

        }

     

     

        public static void sendThruUDP( byte soundpacket[] )

        {

           try

           {

           DatagramSocket sock = new DatagramSocket() ; 

           sock.send( new DatagramPacket( soundpacket , soundpacket.length , InetAddress.getByName( IP_TO_STREAM_TO ) , PORT_TO_STREAM_TO ) ) ; 

           sock.close() ;

           }

           catch( Exception e )

           {

           e.printStackTrace() ;

           System.out.println(" Unable to send soundpacket using UDP " ) ;   

           }

     

        }

     

        } 

    -----------------------------

     

    client:

     

    package soketprogramla;

     

    import java.io.DataInputStream;

    import java.io.IOException;

    import java.net.DatagramPacket;

    import java.net.DatagramSocket;

    import java.net.InetAddress;

    import java.net.Socket;

    import java.net.UnknownHostException;

     

    import javax.sound.sampled.AudioFormat;

    import javax.sound.sampled.AudioSystem;

    import javax.sound.sampled.DataLine;

    import javax.sound.sampled.SourceDataLine;

     

    public class RadioReceiver extends Thread {

        private static final String IP_TO_STREAM_TO   = "localhost" ;

        private static final int PORT_TO_STREAM_TO     = 8888 ;

     

        /** Creates a new instance of RadioReceiver */

        public RadioReceiver() {

        }

     

        public void run()

        {

            byte b[] = null ;

            while( true )

            {

               b = receiveThruUDP() ; 

               toSpeaker( b ) ;

            }        

        }

     

        /**

         * @param args the command line arguments

         */

        public static void main(String[] args) {

     

        RadioReceiver r = new RadioReceiver() ;

        r.start() ;

     

        }

     

        public static byte[] receiveThruUDP()

        {

           try

           {

           DatagramSocket sock = new DatagramSocket(PORT_TO_STREAM_TO) ; 

           byte soundpacket[] = new byte[8192] ;

           DatagramPacket datagram = new DatagramPacket( soundpacket , soundpacket.length , InetAddress.getByName( IP_TO_STREAM_TO ) , PORT_TO_STREAM_TO ) ;

           sock.receive( datagram ) ; 

           sock.close() ;       return datagram.getData() ; // soundpacket ;

           }

           catch( Exception e )

           {

           System.out.println(" Unable to send soundpacket using UDP " ) ;   

           return null ;

           } 

     

        }

     

     

         public static void toSpeaker( byte soundbytes[] )

         {

     

          try{  

          DataLine.Info dataLineInfo = new DataLine.Info( SourceDataLine.class , getAudioFormat() ) ;

          SourceDataLine sourceDataLine = (SourceDataLine)AudioSystem.getLine( dataLineInfo );

          sourceDataLine.open( getAudioFormat() ) ;

          sourceDataLine.start();

         

          int cnt = 0;

          sourceDataLine.write( soundbytes , 0, soundbytes.length );

          sourceDataLine.drain() ;

          sourceDataLine.close() ;

          }

          catch(Exception e )

          {

          System.out.println("not working in speakers " ) ;

          }

     

        }

     

     

        public static AudioFormat getAudioFormat()

        {

        float sampleRate = 8000.0F;

        //8000,11025,16000,22050,44100

        int sampleSizeInBits = 16;

        //8,16

        int channels = 1;

        //1,2

        boolean signed = true;

        //true,false

        boolean bigEndian = false;

        //true,false

        return new AudioFormat( sampleRate, sampleSizeInBits, channels, signed, bigEndian );

        }

     

     

    }

    manyaki tarafından 02/Oca/14 22:04 tarihinde düzenlenmiştir

    since 2005 // tbt
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DadasAdam
    DadasAdam's avatar
    Kayıt Tarihi: 31/Ocak/2013
    Erkek

    belki sorun mikrofondadır ? başka mikrofonla dene istersen


    Bir anadan dünyaya gelen yolcu...
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    manyaki
    manyaki's avatar
    Kayıt Tarihi: 27/Temmuz/2005
    Erkek

    yok hocam mikde sorun yok


    since 2005 // tbt
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Buremba
    Buremba's avatar
    Kayıt Tarihi: 16/Haziran/2006
    Erkek
    Genki bunu yazdı

    bence dosya aktarımda udp olmaz tcp olur

    sesli iletişim ise udp ile yapılmalıdır,yoksa aşırı trafik üretimi ve hantallık olur gibime geliyor

    +1

    zaten sesli iletişimde veri kısa bir süreliğine bozuk gitse bile problem olmaz ufa dalgalanmalar yaşanır farkedilmez bile çoğu zaman. ama dosya aktarımında veya bozuk veya eksik gittiğinde çok büyük ihtimalle dosya bozulacağından açılamaz.


    . . .. . ... .
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    cicosz
    cicosz's avatar
    Kayıt Tarihi: 22/Ağustos/2005
    Erkek

    sample rate düşük ses ondan öyle geliyor. 44100 yap düzelir. örneklemeden sonra da ses yükselsin istiyorsan çıkış değerlerini 20-70 arası bir değerle çarp. bi de mono alıyosun sesi tek kanal. streo al iş görsün bari. 1 i 2 yapman lazım hocam.

  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    freebiri
    freebiri's avatar
    Kayıt Tarihi: 12/Mayıs/2012
    Erkek

    C den anlıyorsan bunu dene http://www.andreadrian.de/babyphone/ daha önce kullanmıştım.

  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    legendary
    legendary's avatar
    Kayıt Tarihi: 26/Ağustos/2005
    Erkek

    Soket programlama, node.js yada bu tarz uygulamalar hakkında sağlam bir kaynak var mı? Bana baya bir karışık geldi bu node.js ama çözdüğüm bir kaç olayda işimi oldukça kolaylaştırdı. Bu yüzden iyi derecede öğrenmem lazım düşüncesindeyim.


    yaratıcılık uçmak değil konmaktır...
Toplam Hit: 4936 Toplam Mesaj: 20