Thanks for you reply.
it is not possible to share full code but i have added part of code whre im initilizing and deinitilizing the camera and what issues im facing
Here is the code
// ============================================================================
// software Configuration for Streaming
// ============================================================================
void startStreamingSession() {
lastActivityTime = millis();
Serial.println(“\n===== Starting Streaming Session =====”);
if (isRecording) {
Serial.println(“\n[Streaming] recording is active. Skipping Streaming.”);
return; // Skip the recording session if streaming is already active
}
setupStreamingHardware();
isStreaming = true;
Serial.println(“[Streaming] Live streaming started.”);
}
void stopStreamingSession() {
if (!isStreaming) {
Serial.println(“\n[streaming] Streaming is not active. Skipping teardown.”);
return; // Skip
}
Serial.println(“\n===== Stopping Live Streaming Session =====”);
teardownStreamingHardware();
isStreaming = false;
Serial.println(“[Streaming] Live streaming stopped.”);
delay(1000);
}
// ============================================================================
// Hardware Configuration for Streaming
// ============================================================================
void setupStreamingHardware() {
Serial.println(“[Streaming] Initializing hardware for live streaming…”);
Camera.configVideoChannel(CHANNEL, configV);
Camera.videoInit();
delay(100);
MMFModule camStream = Camera.getStream(CHANNEL);
audio.configAudio(configA);
audio.begin();
aac.configAudio(configA);
aac.begin();
rtsp.configVideo(configV);
rtsp.configAudio(configA, CODEC_AAC);
rtsp.begin();
audioStreamer.end();
avMixStreamer.end();
audioStreamer.registerInput(audio);
audioStreamer.registerOutput(aac);
if (audioStreamer.begin() != 0) {
Serial.println(“[Streaming] Audio StreamIO link start failed!”);
} else {
Serial.println(“[Streaming] Audio StreamIO link started.”);
}
avMixStreamer.registerInput1(camStream);
avMixStreamer.registerInput2(aac);
avMixStreamer.registerOutput(rtsp);
if (avMixStreamer.begin() != 0) {
Serial.println(“[Streaming] AV Mix StreamIO link start failed!”);
} else {
Serial.println(“[Streaming] AV Mix StreamIO link started.”);
}
Camera.channelBegin(CHANNEL);
IPAddress ip = WiFi.localIP();
Serial.print(“[Streaming] RTSP URL: rtsp://”);
Serial.print(ip);
Serial.print(“:”);
Serial.println(rtsp.getPort());
Serial.println(“[Streaming] Streaming hardware initialization complete.”);
// String rtspURL = “rtsp://” + ip.toString() + “:” + String(rtsp.getPort());
String rtspURL = “rtsp://” + String(ip[0]) + “.” + String(ip[1]) + “.” + String(ip[2]) + “.” + String(ip[3]) + “:” + String(rtsp.getPort());
// Publishing MQTT message after successful connection
String mqttMessage = rtspURL;
// mqttClient.publish(MQTT_STATUS_TOPIC, mqttMessage.c_str());
mqttClient.publish(mqttstatusTopic, mqttMessage.c_str());
Serial.print("[Streaming] RTSP URL: ");
Serial.println(rtspURL); // This will print the RTSP URL
}
void teardownStreamingHardware() {
Serial.println(“[Streaming] Tearing down streaming hardware…”);
rtsp.end();
audioStreamer.end();
avMixStreamer.end();
Camera.channelEnd(CHANNEL);
aac.end();
audio.end();
delay(500);
Serial.println(“[Streaming] Streaming hardware stopped.”);
}
// ============================================================================
// Software Configuration for Recording
// ============================================================================
void startRecordingSession() {
lastActivityTime = millis();
Serial.println(“\n===== Starting Recording Session =====”);
if (isStreaming) {
// Serial.println(“[Recording] Stopping active streaming before starting recording…”);
// stopStreamingSession();
Serial.println(“\n[Recording] Streaming is active. Skipping recording.”);
return; // Skip the recording session if streaming is already active
}
setupRecordingHardware();
recordingBaseFileName = generateFileName();
nextSegmentToUpload = 0;
Serial.print("[Recording] Base file name: ");
Serial.println(recordingBaseFileName);
mp4.setRecordingFileName(recordingBaseFileName.c_str());
mp4.setRecordingDuration(RECORDING_DURATION);
mp4.setRecordingFileCount(1000);
mp4.begin();
Serial.println(“[Recording] MP4 recording started.”);
isRecording = true;
}
void stopRecordingSession() {
if (!isRecording) {
Serial.println(“\n[Recording] recording is not active. Skipping teardown.”);
return; // Skip
}
Serial.println(“\n===== Stopping Recording Session =====”);
mp4.end();
teardownRecordingHardware();
isRecording = false;
Serial.println(“[Recording] MP4 recording stopped.”);
// Before rebooting, store the upload info so pending files can be resumed
storeLastUploadInfo();
delay(1000);
}
// ============================================================================
// Hardware Configuration for Recording
// ============================================================================
void setupRecordingHardware() {
Serial.println(“[Recording] Initializing hardware for recording…”);
Camera.configVideoChannel(CHANNEL, configV);
Camera.videoInit();
delay(100); // Allow camera to stabilize
MMFModule camStream = Camera.getStream(CHANNEL);
audio.configAudio(configA);
audio.begin();
aac.configAudio(configA);
aac.begin();
mp4.configVideo(configV);
mp4.configAudio(configA, CODEC_AAC);
audioStreamer.end();
avMixStreamer.end();
audioStreamer.registerInput(audio);
audioStreamer.registerOutput(aac);
if (audioStreamer.begin() != 0) {
Serial.println(“[Recording] Audio StreamIO link start failed!”);
} else {
Serial.println(“[Recording] Audio StreamIO link started.”);
}
avMixStreamer.registerInput1(camStream);
avMixStreamer.registerInput2(aac);
avMixStreamer.registerOutput(mp4);
if (avMixStreamer.begin() != 0) {
Serial.println(“[Recording] AV Mix StreamIO link start failed!”);
} else {
Serial.println(“[Recording] AV Mix StreamIO link started.”);
}
Camera.channelBegin(CHANNEL);
Serial.println(“[Recording] Recording hardware initialization complete.”);
}
void teardownRecordingHardware() {
Serial.println(“[Recording] Tearing down recording hardware…”);
mp4.end();
audioStreamer.end();
avMixStreamer.end();
Camera.channelEnd(CHANNEL);
aac.end();
audio.end();
delay(500); // Allow flush of pending frames
Serial.println(“[Recording] Recording hardware stopped.”);
}
termianl output
[VID Wrn]
CH 1 MMF ENC Queue full