Ардуино - запись звука

Обсуждаем контроллеры компании Atmel.
Ответить
Собутыльник Кота
Аватара пользователя
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Сообщение olegue »

понятно, но постичь, то,что через gprs нельзя передать 8битный звук - это было выше моих сил.

Добавлено after 4 minutes 58 seconds:
https://aliexpress.ru/item/32341839317. ... 1636476435

закажу вот эту штуку -адаптер LAN под Nano, надо таки довести дело до конца

Добавлено after 3 minutes 23 seconds:
непонятно только как это повлияет на проект с gprs передачей
Реклама
Друг Кота
Сообщения: 9242
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

ты что-то делаешь неправильно... я пока не знаю что... но знаю что что-то неправильно))

я такой заказывал...
https://aliexpress.ru/item/32832354059. ... 4aa6aAlR4K
он более новый))

Добавлено after 2 hours 53 minutes 42 seconds:
я все модули уже переделал на POE (5V, 2А)... чтоб с проводами не возиться))
схема.jpg
(14.73 КБ) 71 скачивание
после переделки.jpg
(81.19 КБ) 81 скачивание
работает)).jpg
(90.09 КБ) 82 скачивания
на 80 метров по витухе работает.
дальше не проверял)) думаю и 200 метров будет нормально.

Добавлено after 1 minute 39 seconds:
надо будет потом тоже добавить звук... например для домофона))
только звук без шифрования по интернету передавать нельзя... а по локалке пойдёт))
:tea:

Добавлено after 8 minutes 34 seconds:
щас застрял с приёмником...
схема_RX.jpg
(103.96 КБ) 88 скачиваний
sn74hc00 медленно работают))
sn74hc00.jpg
(30.02 КБ) 70 скачиваний
надо другие...
:tea:
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Сообщение olegue »

roman.com, можно ли Ваш ява плейер скомпилировать под Андроид?
Друг Кота
Сообщения: 9242
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

была такая мысль)) до андроид пока не дошёл... там чуть иначе... всякие манифесты писать надо и т.д.
для андроид есть своя среда разработки... от производителя))
Реклама
Эиком - электронные компоненты и радиодетали
Собутыльник Кота
Аватара пользователя
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Сообщение olegue »

может есть андроид студио
компилировать этот код

Код: Выделить всё

package rmd.media.StreamingAudio;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.security.InvalidParameterException;

import java.net.InetAddress;
import java.net.DatagramSocket;
import java.net.DatagramPacket;
import java.net.SocketException;
import java.net.UnknownHostException;

import android.app.Activity;
import android.media.AudioFormat;
import android.media.AudioManager;
import android.media.AudioTrack;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.util.Log;

/** UdpStream activity sends and recv audio data through udp */
public class UdpStream extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.udpstream);
        Button btnSend = (Button)findViewById(R.id.btnSend);
        btnSend.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
                Log.d(LOG_TAG, "btnSend clicked");
                SendAudio();
			}
		});

        Button btnRecv = (Button)findViewById(R.id.btnRecv);
        btnRecv.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
                Log.d(LOG_TAG, "btnRecv clicked");
                RecvAudio();
			}
		});
        
    }

    static final String LOG_TAG = "UdpStream";
    static final String AUDIO_FILE_PATH = "/data/1.wav";
    static final int AUDIO_PORT = 2048;
    static final int SAMPLE_RATE = 8000;
    static final int SAMPLE_INTERVAL = 20; // milliseconds
    static final int SAMPLE_SIZE = 2; // bytes per sample
    static final int BUF_SIZE = SAMPLE_INTERVAL*SAMPLE_INTERVAL*SAMPLE_SIZE;
    
    public void RecvAudio()
    {
        Thread thrd = new Thread(new Runnable() {
			@Override
            public void run() 
            {
                Log.e(LOG_TAG, "start recv thread, thread id: "
                    + Thread.currentThread().getId());
                AudioTrack track = new AudioTrack(AudioManager.STREAM_MUSIC, 
                        SAMPLE_RATE, AudioFormat.CHANNEL_CONFIGURATION_MONO, 
                        AudioFormat.ENCODING_PCM_16BIT, BUF_SIZE, 
                        AudioTrack.MODE_STREAM);
                track.play();
                try
                {
                    DatagramSocket sock = new DatagramSocket(AUDIO_PORT);
                    byte[] buf = new byte[BUF_SIZE];

                    while(true)
                    {
                        DatagramPacket pack = new DatagramPacket(buf, BUF_SIZE);
                        sock.receive(pack);
                        Log.d(LOG_TAG, "recv pack: " + pack.getLength());
                        track.write(pack.getData(), 0, pack.getLength());
                    }
                }
                catch (SocketException se)
                {
                    Log.e(LOG_TAG, "SocketException: " + se.toString());
                }
                catch (IOException ie)
                {
                    Log.e(LOG_TAG, "IOException" + ie.toString());
                }
            } // end run
        });
        thrd.start();
    }

    public void SendAudio()
    {
        Thread thrd = new Thread(new Runnable() {
			@Override
            public void run() 
            {
                Log.e(LOG_TAG, "start send thread, thread id: "
                    + Thread.currentThread().getId());
                long file_size = 0;
                int bytes_read = 0;
                int bytes_count = 0;
                File audio = new File(AUDIO_FILE_PATH);
                FileInputStream audio_stream = null;
                file_size = audio.length();
                byte[] buf = new byte[BUF_SIZE];
                try
                {
                    InetAddress addr = InetAddress.getLocalHost();
                    DatagramSocket sock = new DatagramSocket();
                    audio_stream = new FileInputStream(audio);

                    while(bytes_count < file_size)
                    {
                        bytes_read = audio_stream.read(buf, 0, BUF_SIZE);
                        DatagramPacket pack = new DatagramPacket(buf, bytes_read,
                                addr, AUDIO_PORT);
                        sock.send(pack);
                        bytes_count += bytes_read;
                        Log.d(LOG_TAG, "bytes_count : " + bytes_count);
                        Thread.sleep(SAMPLE_INTERVAL, 0);
                    }
                }
                catch (InterruptedException ie)
                {
                    Log.e(LOG_TAG, "InterruptedException");
                }
                catch (FileNotFoundException fnfe)
                {
                    Log.e(LOG_TAG, "FileNotFoundException");
                }
                catch (SocketException se)
                {
                    Log.e(LOG_TAG, "SocketException");
                }
                catch (UnknownHostException uhe)
                {
                    Log.e(LOG_TAG, "UnknownHostException");
                }
                catch (IOException ie)
                {
                    Log.e(LOG_TAG, "IOException");
                }
            } // end run
        });
        thrd.start();
    }
    
}
отсюда

http://rxwen.blogspot.com/2011/10/strea ... droid.html

Добавлено after 9 minutes 58 seconds:
вероятно потребуется весь пакет. Тема двольно старая может я сам найду подходящий на тот момент , аэто 2012 год , компилятор

http://web.archive.org/web/201204131451 ... ing_audio/

Добавлено after 1 minute 45 seconds:
нашел его проект на гитхабе

https://github.com/rxwen/rxwen-blog-stu ... ming_audio

Добавлено after 19 minutes 50 seconds:
я там покопался в файлах, там вроде под эклипс, если он существовал в те времена.
Реклама
Друг Кота
Сообщения: 9242
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

я смотрел видеоуроки на ютуб... там всё подробно... на примерах))

ethernet уже доделал ? надо что-то одно доделать... для начала))
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Сообщение olegue »

ethernet еще не прибыл. Заказал 2 версии и такую как вы мне порекомендовали и под Нану.

но по приложению отработал на выходных
https://www.youtube.com/watch?v=fyaaMn6Av3s

поставил осюда

https://drive.google.com/file/d/1a2vg0m ... cUu7P/view

eclipse juno +Aндроид SDK

поставил java 6 jdk
Поробоовал скопилировать проект. К сожалению импорт проекта не удался. Кричит на Манифест. Манифест фообще не понимает. Тогда взял фйлы из layuot и src и перенес их в новых проект. Компилил его под Андрод 4.4. Небольшие ошибки опять повылазили, поправил. Проблема именео что проект очень старый, скорее всего он компилирся под Андроид 2.x или даже ниже. Пробовал ставить в sdk менеджере поддержку - не получилсь.

Короче , по итого проект скомпилился, под 4.4. я получил apk и я его запустил на своем телефоне. Но пока ничего не зработала, там есть процедура проигрывания , она в MainActivity, вроде как она должна играть 1.wav который лежит на data, но ругается на buffer. К сожалению проект отстался на другом компе. Завтра выложу. Может быть кто-то или , Вы , Роман занитересуетесь.

Добавлено after 18 minutes 5 seconds:
если б на гитхабе хоть писали какой версией компились

Добавлено after 1 hour 29 minutes 28 seconds:

Код: Выделить всё

import pyaudio
import socket
from threading import Thread

frames = []

def udpStream(CHUNK):

    udp = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    udp.bind(("192.168.0.124", 4210))

    while True:
        soundData, addr = udp.recvfrom(CHUNK)
        frames.append(soundData)

    udp.close()

def play(stream, CHUNK):
    BUFFER = 10
    while True:
            if len(frames) == BUFFER:
                while True:
                    stream.write(frames.pop(0))

if __name__ == "__main__":
    FORMAT = pyaudio.paInt8
    CHUNK = 1024
    CHANNELS = 1
    RATE = 8000

    p = pyaudio.PyAudio()

    stream = p.open(format=FORMAT,
                    channels = CHANNELS,
                    rate = RATE,
                    output = True,
                    frames_per_buffer = CHUNK,
                    )

    Ts = Thread(target = udpStream, args=(CHUNK,))
    Tp = Thread(target = play, args=(stream, CHUNK,))
    Ts.setDaemon=True
    Tp.setDaemon=True
    Ts.start()
    Tp.start()
    Ts.join()
    Tp.join()
еще вот на Python код нашел. Это код udp server для звука. Но не звучит. Очень плохой звук. Хотя Ваша прога воспроизводит хорошо.
Собутыльник Кота
Аватара пользователя
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Сообщение olegue »

вот проект, там внутри apk

https://files.fm/u/9yqm8xk2k
Друг Кота
Сообщения: 9242
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

olegue писал(а):ethernet еще не прибыл. Заказал 2 версии и такую как вы мне порекомендовали и под Нану.
зачем 2 версии... они одинаковые))

а в чём разница ENC28J60 и W5500 ?
ENC28J60 работает только с ethernet пакетами... остальное (UDP) делает ардуина...
W5500 работает как с ethernet пакетами, так и делает остальное (UDP)... при этом ардуина отдыхает))
вывод: W5500 более универсальный. Поэтому рекомендую его.

до Aндроид SDK ещё не дошёл... у меня нет Aндроид... пока нет))

пытался писать на Python... мне не понравилось. Вернулся на знакомый Си и java ))

Добавлено after 2 minutes 58 seconds:
olegue писал(а):попробую тправить через Serial в Esp01 и принять по wifi. по крайней мере сериал справлвяется с потоком 64кбит.
доделай уже что-нибудь одно... чтоб работало))
Собутыльник Кота
Аватара пользователя
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Сообщение olegue »

roman.com писал(а):зачем 2 версии... они одинаковые))
всегда надо иметь 2 . В случае непредвидненных ситуация проект не будет остановлен.
roman.com писал(а):доделай уже что-нибудь одно... чтоб работало))
по поводу wifi и esp8266 ....

вот прекрасно работающий код

Код: Выделить всё

void loop()
{
  Udp.beginPacket("192.168.0.124", 4210);

  for(int i=0; i<1024;i++){
    int old=micros();

    float analog = analogRead(A0);
    if (analog > 255) {
      analog = 255;
    }
    else if (analog < 0){
      analog = 0;
    }
    Udp.write(int(analog));
   // Serial.print(int(analog));
   // Serial.print(",");
    while(micros()-old<125); // 90uSec = 1Sec/11111Hz - 3uSec para los otros procesos
  }
  //Serial.print(";;;;;");
  Udp.endPacket();
  delay(5);
}


Прнимаю его на Ваш java приемник без проблем
взято отсюда
https://arduino.stackexchange.com/quest ... eger-input


Андроид проект является продолжением этой темы. Т.е теперь я хочу принимать этоо сигнал на андроиде.
Счас разберусь с sdk и кнопками и выдам чего нить или найду готовое, что предпочтительнее, потому как правило это все уже написано.

Добавлено after 3 minutes 55 seconds:
Если честно, то я , грешным делом полагал после экспериментов c gprs на sim800, что Ваш приемник не очень корректно работает. Но теперь эти подозрения сняты. проблема именно в gprs передатчике. Но, как говорится, что ни делалется все к лучшем. В итоге поучли и передатчик на esp8266 и убедился что с Вашим приемником все хорошо.

Добавлено after 2 minutes 10 seconds:
Так, что Роман, ввсе идет своим чередом, хотя изза возникших проблем со здоровьем мне это последнее время еще более нелегко дается. Уделяь это столько времени как раньше становитсья все тяжелее.
Друг Кота
Сообщения: 9242
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

[uquote="olegue",url="/forum/viewtopic.php?p=4348561#p4348561"]я , грешным делом полагал после экспериментов c gprs на sim800, что Ваш приемник не очень корректно работает.[/uquote]
в своём приёмнике я не сомневался))
единственное что вызывает сомнения - выбег частоты.
в материнской плате стоят кварцы...
кварц.jpg
(118.8 КБ) 59 скачиваний
стабильность частоты кварца не идеальная...
кварц2.jpg
(78.88 КБ) 67 скачиваний
поэтому через некоторое время может возникнуть выбег частоты приёмника и передатчика... получим рассинхронизацию...
-например передатчик будет передавать чуть с более высокой скорость (8001 семпл/с), а приёмник будут воспроизводить например чуть с меньшей скоростью (7999 семпл/c). Это приведёт сначала к задержкам воспроизведения... а потом и к переполнению буфера приёмника и потери пакета (в динамике услышим "заикания").
это надо проверить...
:roll:

Добавлено after 3 minutes 41 second:
[uquote="olegue",url="/forum/viewtopic.php?p=4348561#p4348561"]по поводу wifi и esp8266 ....

вот прекрасно работающий код[/uquote]
в esp8266 тоже стоит кварц.
в esp8266 тоже стабильность частоты не идеальная)).
как долго ты его гонял в непрерывном режиме ?
1 час ? 2 часа ? выбег частоты проверял ?
например через 1 час непрерывной работы задержка воспроизведения осталась неизменной ?

вот если бы ты использовал атомные часы... например использующие полупериод распада цезия... то у меня бы не было бы сомнений в стабильности частоты))
часы)).jpg
(75.93 КБ) 63 скачивания
:)))

Добавлено after 9 minutes 38 seconds:
короче... осталось проверить как работает по эзернет... и можно переходить к написанию своего мессенджера для андроид))
мессенджеры.jpg
(55.15 КБ) 72 скачивания
самодельный скайп для ПК у нас уже есть))
:tea:

блин.. с этими праздниками некогда заняться программами... ))
:beer:
Собутыльник Кота
Аватара пользователя
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Сообщение olegue »

На час оставлял, но тут нужно учитывать что wifi Тоже такая себе стабильность, не очень стабильная. Но работало неплох, но затыки были , причем совершенно нерегулярыные, системы я не заметил,счас занялся андроидом и пока сложил в коробку.
Собутыльник Кота
Аватара пользователя
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Сообщение olegue »

Вот если бы можно было организовать какой - нить образцовый стримовый передатчик. Тогда можно было бы отстраивать и проверять приемники

Добавлено after 3 hours 35 minutes 58 seconds:
Рабочий код для приемника Udp audio для Андроида.
Но с затыками еще предстоит бороться.

Код: Выделить всё

public void RecvAudio()

{
    Thread thrd = new Thread(new Runnable() {
		@Override
        public void run() 
        {
            Log.e(LOG_TAG, "start2 recv thread, thread id: "
                + Thread.currentThread().getId());
    
            AudioTrack track = new AudioTrack(AudioManager.STREAM_MUSIC, 
                    SAMPLE_RATE, AudioFormat.CHANNEL_OUT_MONO, 
                    AudioFormat.ENCODING_PCM_8BIT, BUF_SIZE, 
                    AudioTrack.MODE_STREAM);
            track.play();
            DatagramSocket sock = null;
    

            try
            {
                sock = new DatagramSocket(AUDIO_PORT);
                byte[] buf = new byte[BUF_SIZE];
    
                while(Server_aktiv)
                {
                    DatagramPacket pack = new DatagramPacket(buf, BUF_SIZE);
                    sock.receive(pack);
                    Log.d(LOG_TAG, "recv pack: " + pack.getLength());
                    buf=pack.getData();
                    //track.write(pack.getData(), 0, pack.getLength());
                  track.write(buf, 0, buf.length);
                }
            }
            catch (SocketException se)
            {
                Log.e(LOG_TAG, "SocketException: " + se.toString());
            }
            catch (IOException ie)
            {
                Log.e(LOG_TAG, "IOException" + ie.toString());
            }
            
            finally 
            {
              if (sock != null) 
              {
            	  sock.close();
            		 Toast toast = Toast.makeText(getApplicationContext(), 
  						   "Сервер UDP остановлен. Пора покормить кота!", Toast.LENGTH_SHORT); 
  						toast.show(); 
              }
            }
        } // end run
    });
    thrd.start();
}
как приведу немного в порядок интерйфейс выложу apk и проект

Добавлено after 4 minutes 23 seconds:
с буфером надо поигратся.

тут

https://stackoverflow.com/questions/158 ... dp-packets

человек прелагал решения , но я не смог пока его применить.
Друг Кота
Сообщения: 9242
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

olegue писал(а):тут

https://stackoverflow.com/questions/158 ... dp-packets

человек прелагал решения , но я не смог пока его применить.
я не знаю как работает audio для Андроида.))
но судя по всему примерно так же как в java...
я бы для начала поигрался с сами плеером в Андроида... а потом уже думал как это передать - принять по UDP/
в java я так и сделал)) сначала поигрался с самим плеером... а топом добавил передачу - приём по UDP.
а топом ещё добавил запись на диск ПК... получился диктофон))
а том ещё добавил ползунки... получился индикатор уровня сигнала))
а потом ещё... можно добавить всякие визуальные эффекты))
а потом ещё... можно сделать звуковой редактор))
редактор звука)).jpg
(31.07 КБ) 58 скачиваний
и т.д.
:tea:

Код: Выделить всё

            
AudioTrack track = new AudioTrack(AudioManager.STREAM_MUSIC,
SAMPLE_RATE, AudioFormat.CHANNEL_OUT_MONO,
AudioFormat.ENCODING_PCM_8BIT, BUF_SIZE,
AudioTrack.MODE_STREAM);
track.play();


track.write(buf, 0, buf.length);
:roll:

Код: Выделить всё

            try
            {
                sock = new DatagramSocket(AUDIO_PORT);
                byte[] buf = new byte[BUF_SIZE];
   
                while(Server_aktiv)
                {
                    DatagramPacket pack = new DatagramPacket(buf, BUF_SIZE);
                    sock.receive(pack);
                    Log.d(LOG_TAG, "recv pack: " + pack.getLength());
                    buf=pack.getData();
                    //track.write(pack.getData(), 0, pack.getLength());
                  track.write(buf, 0, buf.length);
                }
            }
не логично))

лучше так...

Код: Выделить всё

            try
            {
                sock = new DatagramSocket(AUDIO_PORT);
                byte[] buf = new byte[BUF_SIZE];
                DatagramPacket pack = new DatagramPacket(buf, buf.length);
 
                while(Server_aktiv)
                {
                    sock.receive(pack);
                    //Log.d(LOG_TAG, "recv pack: " + pack.getAddress(); // IP String
                    //Log.d(LOG_TAG, "recv pack: " + pack.getPort();       // port int
                    Log.d(LOG_TAG, "recv pack: " + pack.getLength());    // len int
                    
                    //buf=pack.getData();
                    //track.write(pack.getData(), 0, pack.getLength());
                   track.write(buf, 0, buf.length);
                }
            }
Собутыльник Кота
Аватара пользователя
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Сообщение olegue »

поставил VLC плейер, теперь слушаю стрим с esp8266 посредством этой строки
vlc --demux=rawaud --rawaud-channels=1 --rawaud-samplerate=8000 --rawaud-fourcc "u8 " --network-caching=2000 udp://@:4210

прикольно.

Добавлено after 1 minute 55 seconds:
Но лаги остались!!!! ааааааааа. Счас заряжу трансляцию с vlc и попытаюсь принять. Интересно будут ли лаги.

Добавлено after 56 minutes 23 seconds:
Но VLC пока не удалось зарядить на трансляцию Raw данных, не хочет он их отправлять с интерфейса. Надо коммандную строку искать
Друг Кота
Сообщения: 9242
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

а шифрование будет ? )) или у тебя без шифрования... как WEB-радио))

https://www.radiokot.ru/forum/viewtopic ... 7&start=44
Собутыльник Кота
Аватара пользователя
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Сообщение olegue »

по ка мне не откого шифроваться. ХОчу просто наладить связь и разобраться в причинах лагов. Получается , и VLC и Ваше, Роман, java проигрыватетль одинаково принимают raw данные. Если бы мне удалось настроить отправку через vlc , а прием уже есть , то былоа бы полная ясность
Друг Кота
Сообщения: 9242
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

не совсем понятно зачем использовать VLC плеер...
:roll:
у тебя же есть плееры java для ПК... и для андроид... и т.д.

а что умеет VLC плеер ?
пишут что умеет транслировать потоки по сети...
VLC плеер.jpg
(77.87 КБ) 67 скачиваний
не пробовал))
:tea:

а что умеет плеер андроид ?
умеет записывать поток...

Код: Выделить всё

            int buffersize = AudioRecord.getMinBufferSize(11025,
                    AudioFormat.CHANNEL_CONFIGURATION_MONO,
                    AudioFormat.ENCODING_PCM_16BIT);

           AudioRecord arec = new AudioRecord(
                    MediaRecorder.AudioSource.MIC, 11025,
                    AudioFormat.CHANNEL_CONFIGURATION_MONO,
                    AudioFormat.ENCODING_PCM_16BIT, buffersize);

            byte[] buffer = new byte[buffersize];
            arec.startRecording();
         //arec.read(buffer, 0, buffersize);
умеет воспроизводить поток...

Код: Выделить всё

            int buffersize = AudioRecord.getMinBufferSize(11025,
                    AudioFormat.CHANNEL_CONFIGURATION_MONO,
                    AudioFormat.ENCODING_PCM_16BIT);

            AudioTrack aTrack = new AudioTrack(
                    AudioManager.STREAM_VOICE_CALL, 11025,
                    AudioFormat.CHANNEL_CONFIGURATION_MONO,
                    AudioFormat.ENCODING_PCM_16BIT, buffersize,
                    AudioTrack.MODE_STREAM);
           
                    byte[] buffer = new byte[buffersize];
                   
                    aTrack.write(buffer, 0, buffer.length);
и т.д.))
Собутыльник Кота
Аватара пользователя
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Сообщение olegue »

roman.com писал(а):не совсем понятно зачем использовать VLC плеер...
:roll:
в нем можно задать буфер по прием и протестировать поток на какойто линии что бы разобраться почему не работает что-то самодельное на андроиде или esp


домучаал таки vlc

отправил таки с него поток в нужном мне формате 8бит/8000кгц на свой самодельный андроид плейр

вот строка
vlc.exe 1.raw --sout=#transcode{acodec="u8 ",ab=64,channels=1}:duplicate{dst=std{access=udp,mux=raw,dst=192.168.10.141:4210}}

ну че сказать. Лаги остались, вероятно в андроид плейере нужно делать буфер.
еще попробоую чуть позже с vlc на vlc.


И еще на дня придет ЛАН
Собутыльник Кота
Аватара пользователя
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Сообщение olegue »

пришел модуль 5500 . но готовых кодов нету под него. Надо писать, как я понял
Ответить

Вернуться в «AVR»