snapshot
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
|
||||
/**
|
||||
* @file communication-rtsp-audiokit.ino
|
||||
* @brief RTSP client demo using the new UDP/RTP client and AudioKit output.
|
||||
* Connects to an RTSP server, decodes audio via MultiDecoder, and plays
|
||||
* out via `AudioBoardStream` (AudioKit ES8388). Tested with RTSP
|
||||
* servers. Requires WiFi on ESP32.
|
||||
*
|
||||
* Steps:
|
||||
* - Update WiFi credentials and RTSP server address/path below
|
||||
* - Builds a fixed pipeline: MultiDecoder -> ResampleStream -> AudioKit output
|
||||
* - Call client.copy() in loop to push received RTP payloads into decoders
|
||||
*/
|
||||
#include "AudioTools.h"
|
||||
#include "AudioTools/AudioCodecs/CodecADPCM.h"
|
||||
#include "AudioTools/AudioCodecs/CodecMP3Helix.h" // https://github.com/pschatzmann/arduino-libhelix
|
||||
#include "AudioTools/AudioLibs/AudioBoardStream.h"
|
||||
#include "AudioTools/Communication/RTSP.h" // brings RTSPClientWiFi alias
|
||||
|
||||
const char* SSID = "ssid";
|
||||
const char* PASS = "password";
|
||||
IPAddress srv(192, 168, 1, 39); // change to your RTSP server IP
|
||||
const uint16_t rtspPort = 8554; // typical RTSP port
|
||||
const char* rtspPath =
|
||||
"stream"; // change to your RTSP server path (e.g., "audio", "stream1")
|
||||
AudioBoardStream i2s(AudioKitEs8388V1);
|
||||
RTSPClientWiFi client(i2s);
|
||||
MP3DecoderHelix mp3; // Decoder for "audio/mpeg" (MP3) payloads
|
||||
ADPCMDecoder adpcm(AV_CODEC_ID_ADPCM_IMA_WAV, 512); // ima adpcm decoder
|
||||
|
||||
void startWiFi() {
|
||||
WiFi.begin(SSID, PASS);
|
||||
Serial.print("Connecting to WiFi");
|
||||
while (WiFi.status() != WL_CONNECTED) {
|
||||
delay(500);
|
||||
Serial.print(".");
|
||||
}
|
||||
Serial.println();
|
||||
Serial.print("WiFi connected, IP: ");
|
||||
Serial.println(WiFi.localIP());
|
||||
WiFi.setSleep(false);
|
||||
}
|
||||
|
||||
void setup() {
|
||||
Serial.begin(115200);
|
||||
AudioToolsLogger.begin(Serial, AudioToolsLogLevel::Info);
|
||||
|
||||
// Connect WiFi
|
||||
startWiFi();
|
||||
|
||||
// Configure and start I2S/AudioKit output
|
||||
auto cfg = i2s.defaultConfig(TX_MODE);
|
||||
cfg.sd_active = false;
|
||||
i2s.begin(cfg);
|
||||
|
||||
// Start RTSP session
|
||||
client.addDecoder("audio/mpeg", mp3);
|
||||
client.addDecoder("audio/adpcm", adpcm);
|
||||
client.setResampleFactor(1.0); // no resampling
|
||||
// Servers often require a concrete path; also extend header timeout if needed
|
||||
client.setHeaderTimeoutMs(8000);
|
||||
if (!client.begin(srv, rtspPort, rtspPath)) {
|
||||
Serial.println("Failed to start RTSP client");
|
||||
stop();
|
||||
}
|
||||
Serial.println("RTSP client started");
|
||||
}
|
||||
|
||||
void loop() {
|
||||
// Push next available RTP payload to decoder chain
|
||||
client.copy();
|
||||
}
|
||||
Reference in New Issue
Block a user