ஒற்றுமையில் ESP32 வீடியோ ஸ்ட்ரீம்களை தடையின்றிக் காட்டுகிறது
உங்கள் யூனிட்டி திட்டத்தில் நிகழ்நேர வீடியோ ஸ்ட்ரீமை ஒருங்கிணைக்க நீங்கள் எப்போதாவது விரும்பினீர்களா? நீங்கள் ESP32 கேமராவைப் பரிசோதித்துக்கொண்டிருந்தால், வீடியோ ஊட்டம் எதிர்பார்த்தபடி வழங்காதபோது நீங்கள் குழப்பமடையலாம். யூனிட்டியின் வளைந்து கொடுக்கும் தன்மையானது, இது போன்ற பணிகளுக்கான பிரதான தேர்வாக அமைகிறது, ஆனால் யூனிட்டி மற்றும் MJPEG ஸ்ட்ரீமிங்கிற்கு இடையே உள்ள இடைவெளியைக் குறைக்க சில முயற்சிகள் எடுக்கலாம். 🖥️
பல டெவலப்பர்கள், குறிப்பாக யூனிட்டியில் அடியெடுத்து வைப்பவர்கள், ESP32 கேமராவிலிருந்து RawImage பாகத்துடன் நேரடி ஊட்டத்தை இணைக்க முயற்சிக்கும்போது சவால்களை எதிர்கொள்கின்றனர். வெற்று பின்னணிகள், கன்சோல் பிழைகள் இல்லாமை அல்லது MJPEG ஸ்ட்ரீம்களின் முறையற்ற ரெண்டரிங் போன்ற சிக்கல்கள் மிகவும் வெறுப்பாக இருக்கலாம். ஆயினும்கூட, இந்த தடைகள் ஒரு சிறிய வழிகாட்டுதல் மற்றும் ஸ்கிரிப்டிங் நுணுக்கத்துடன் முற்றிலும் கடக்கக்கூடியவை. 🚀
உதாரணமாக, நீங்கள் ஒரு ESP32 கேமரா ஸ்ட்ரீமிங் வீடியோவை `http://192.1.1.1:81/stream` இல் அமைத்துள்ளீர்கள் என்று கற்பனை செய்து பாருங்கள். உங்கள் யூனிட்டி கேன்வாஸில் RawImageஐச் சேர்த்து, ஸ்கிரிப்டைப் பயன்படுத்துங்கள், மேலும் ஸ்ட்ரீம் காண்பிக்கப்படும் என்று எதிர்பார்க்கிறீர்கள், ஆனால் நீங்கள் பெறுவது வெற்றுத் திரை மட்டுமே. அத்தகைய சூழ்நிலையில் பிழைத்திருத்தத்திற்கு ஸ்கிரிப்ட், ஸ்ட்ரீமிங் நெறிமுறைகள் மற்றும் யூனிட்டி அமைப்புகளில் உள்ள விவரங்களுக்கு கவனம் தேவை.
யூனிட்டியில் MJPEG ஸ்ட்ரீம்களை வழங்குவதற்கான தீர்வை சரிசெய்து செயல்படுத்த இந்த வழிகாட்டி உதவும். வீடியோ பிரேம்களைப் படம்பிடித்து, அவற்றைச் செயலாக்கி, யூனிட்டி கேன்வாஸில் காண்பிக்கும் ஸ்கிரிப்டை எப்படி எழுதுவது என்பதை நீங்கள் கற்றுக் கொள்வீர்கள். முடிவில், உங்கள் ESP32 கேமரா ஊட்டம் யூனிட்டியில் உயிர்ப்பிக்கப்படும், இது உங்கள் திட்டத்தை ஊடாடும் மற்றும் பார்வைக்கு மாறும். உள்ளே நுழைவோம்! 💡
கட்டளை | பயன்பாடு மற்றும் விளக்கத்திற்கான எடுத்துக்காட்டு |
---|---|
HttpWebRequest | HTTP கோரிக்கைகளை உருவாக்க மற்றும் அனுப்ப பயன்படுகிறது. இந்த சூழலில், இது MJPEG ஸ்ட்ரீமைப் பெற ESP32 கேமரா ஸ்ட்ரீம் URL உடன் இணைப்பை நிறுவுகிறது. |
GetResponse() | சேவையகத்தின் பதிலைப் பெற HttpWebRequest ஆப்ஜெக்ட்டில் அழைக்கப்பட்டது. ESP32 கேமரா வழங்கிய வீடியோ ஸ்ட்ரீம் தரவை அணுகுவதற்கு இந்த முறை முக்கியமானது. |
Stream.Read() | தரவு ஸ்ட்ரீமில் இருந்து பைட்டுகளின் வரிசையைப் படிக்கிறது. ESP32 இன் MJPEG ஸ்ட்ரீமில் இருந்து வீடியோ பிரேம்களை துண்டுகளாகப் பெற இது இங்கே பயன்படுத்தப்படுகிறது. |
Texture2D.LoadImage() | படத்தின் பைட் வரிசையைப் பயன்படுத்தி ஒற்றுமை அமைப்பைப் புதுப்பிக்கிறது. இந்த கட்டளை MJPEG பிரேம்களை யூனிட்டி ரெண்டர் செய்யக்கூடிய டெக்ஸ்ச்சர் வடிவத்தில் டிகோட் செய்கிறது. |
UnityWebRequestTexture.GetTexture() | URL இலிருந்து ஒரு அமைப்பைப் பதிவிறக்க UnityWebRequest ஐ உருவாக்குகிறது. இது யூனிட்டியில் HTTP கோரிக்கைகளைக் கையாள்வதற்கான உயர்நிலை மாற்றாகும். |
DownloadHandlerTexture | HTTP பதிலில் இருந்து அமைப்புத் தரவைப் பிரித்தெடுக்கும் ஒரு ஒற்றுமை வகுப்பு. இது யூனிட்டியின் ரெண்டரிங் பைப்லைனுக்குப் பயன்படுத்தக்கூடிய அமைப்பாக பதிலை மாற்றுவதை எளிதாக்குகிறது. |
IEnumerator | ஒற்றுமையில் கரோட்டின் முறைகளை வரையறுக்கப் பயன்படுகிறது. இது மெயின் த்ரெட்டைத் தடுக்காமல் MJPEG பிரேம்களைத் தொடர்ந்து படிப்பது போன்ற ஒத்திசைவற்ற செயல்பாடுகளை செயல்படுத்துகிறது. |
MemoryStream | நினைவகத்தில் சேமிக்கப்பட்ட ஸ்ட்ரீம்களை உருவாக்குவதற்கான .NET வகுப்பு. இந்த எடுத்துக்காட்டில், ஒவ்வொரு வீடியோ சட்டத்தையும் செயலாக்கும் போது இது தற்காலிகமாக MJPEG சட்ட தரவை வைத்திருக்கிறது. |
RawImage | UI கேன்வாஸில் அமைப்புகளைக் காட்ட யூனிட்டி பாகம் பயன்படுத்தப்படுகிறது. இது கேம் காட்சியில் MJPEG வீடியோ ஊட்டத்தை வழங்குவதற்கான காட்சி இலக்காக செயல்படுகிறது. |
yield return null | அடுத்த ஃபிரேம் வரை கரோட்டினை இடைநிறுத்துகிறது. வீடியோ பிரேம்களை ஒத்திசைவற்ற முறையில் செயலாக்கும்போது இது சீரான செயல்பாட்டை உறுதி செய்கிறது. |
ஒற்றுமையில் ESP32 வீடியோ ஸ்ட்ரீமிங் ஒருங்கிணைப்பைப் புரிந்துகொள்வது
முதல் ஸ்கிரிப்ட் யூனிட்டியைப் பயன்படுத்துகிறது RawImage ESP32 கேமராவிலிருந்து ஸ்ட்ரீம் செய்யப்பட்ட வீடியோ பிரேம்களை வழங்குவதற்கான கூறு. ESP32 இன் ஸ்ட்ரீமிங் URL உடன் HTTP இணைப்பை நிறுவுவதன் மூலம், ஸ்கிரிப்ட் MJPEG தரவைப் பெறுகிறது, ஒவ்வொரு சட்டகத்தையும் செயலாக்குகிறது மற்றும் அதை கேன்வாஸில் ஒரு அமைப்பாகக் காட்டுகிறது. இதை அடைவதற்கான திறவுகோல் இதில் உள்ளது Texture2D.LoadImage() MJPEG ஸ்ட்ரீமில் இருந்து மூல பைட்டுகளை யூனிட்டி காட்டக்கூடிய வடிவத்தில் டிகோட் செய்யும் முறை. யூனிட்டியில் IoT ஒருங்கிணைப்புகளை முயற்சிக்கும் புதிய டெவலப்பர்களுக்கும் கூட, நிகழ்நேர வீடியோ திறமையாக வழங்கப்படுவதை இந்த அணுகுமுறை உறுதி செய்கிறது. 🖼️
இன் போன்ற கொரூட்டின்களின் பயன்பாடு IEnumerator StartStream(), இந்த நடைமுறைக்கு இன்றியமையாதது. யூனிட்டி மெயின் த்ரெட்டைத் தடுக்காமல் ஒத்திசைவற்ற தரவைப் பெறுவதற்கு Coroutines அனுமதிக்கின்றன. இது வீடியோ ஊட்டத்தின் தடையற்ற ஃப்ரேம்-பை-ஃபிரேம் புதுப்பிப்பை உறுதிசெய்கிறது, இது கேம் அல்லது பயன்பாட்டின் வினைத்திறனைப் பராமரிக்கிறது. எடுத்துக்காட்டாக, கரோட்டின் MJPEG பிரேம்களைப் படிக்கும் போது, மற்ற விளையாட்டு கூறுகள் சீராகச் செயல்படுகின்றன. நிகழ்நேர வீடியோ முக்கியமானதாக இருக்கும் பாதுகாப்பு கண்காணிப்பு அல்லது ஊடாடும் கியோஸ்க்குகள் போன்ற பயன்பாடுகளுக்கு இது மிகவும் பயனுள்ளதாக இருக்கும்.
இரண்டாவது ஸ்கிரிப்ட் பயன்படுத்துவதன் மூலம் முதல் ஸ்கிரிப்டை மேம்படுத்துகிறது UnityWebRequest, இணைய கோரிக்கைகளை கையாளும் நவீன மற்றும் உகந்த முறை. போலல்லாமல் HttpWebRequest, ஸ்ட்ரீம்களை அதிக கைமுறையாகக் கையாள வேண்டும், UnityWebRequestTexture.GetTexture() ESP32 இன் வீடியோ ஸ்ட்ரீம் URL இலிருந்து அமைப்புகளை நேரடியாகப் பெற்று செயலாக்குகிறது. இது வளர்ச்சி செயல்முறையை நெறிப்படுத்துகிறது, குறிப்பாக செயல்திறன் மற்றும் பயன்பாட்டின் எளிமைக்கு முன்னுரிமை அளிக்கும் யூனிட்டி டெவலப்பர்களுக்கு. நிகழ்நேர வழிசெலுத்தலுக்கான யூனிட்டி அடிப்படையிலான VR உருவகப்படுத்துதலில் ட்ரோனின் கேமரா ஊட்டத்தை டெவலப்பர் ஒருங்கிணைக்கும் ஒரு நடைமுறை உதாரணம். 🚁
இரண்டு ஸ்கிரிப்ட்களும் மட்டு மற்றும் மீண்டும் பயன்படுத்தக்கூடிய குறியீட்டின் முக்கியத்துவத்தை எடுத்துக்காட்டுகின்றன. யூனிட்டி இன்ஸ்பெக்டர் மூலம் தனிப்பயனாக்கக்கூடிய URL மற்றும் RawImage போன்ற பண்புகளுடன், யூனிட்டி பொருளுடன் எளிதாக இணைக்கும் வகையில் வகுப்புகள் வடிவமைக்கப்பட்டுள்ளன. ரோபாட்டிக்ஸ், ஐஓடி சாதனங்கள் அல்லது தனிப்பயன் மீடியா பயன்பாடுகள் என வெவ்வேறு பயன்பாட்டு நிகழ்வுகளுக்கு டெவலப்பர்கள் விரைவாக ஸ்கிரிப்டை மாற்றியமைக்க முடியும் என்பதை இந்த மாடுலாரிட்டி உறுதி செய்கிறது. இந்த எடுத்துக்காட்டுகள் யூனிட்டியில் நிகழ்நேர வீடியோவை வழங்குவதற்கான வலுவான அடித்தளத்தை வழங்குகின்றன, இது மாறும் காட்சி உள்ளீடு தேவைப்படும் திட்டங்களில் படைப்பாற்றல் வளர அனுமதிக்கிறது. 🌟
ESP32 கேமரா ஒருங்கிணைப்புடன் MJPEG ஸ்ட்ரீம்களை ஒற்றுமையாக வழங்குதல்
அணுகுமுறை 1: யூனிட்டியின் RawImage மற்றும் HTTP கோரிக்கைகளைப் பயன்படுத்தி MJPEG ஸ்ட்ரீமிங்
using UnityEngine;
using UnityEngine.UI;
using System.IO;
using System.Net;
using System.Collections;
public class ESP32Stream : MonoBehaviour
{
public string url = "http://192.1.1.1:81/stream";
public RawImage rawImage;
private Texture2D texture;
void Start()
{
if (rawImage == null)
{
Debug.LogError("RawImage is not assigned.");
return;
}
texture = new Texture2D(2, 2);
rawImage.texture = texture;
StartCoroutine(StreamVideo());
}
IEnumerator StreamVideo()
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
WebResponse response = request.GetResponse();
Stream stream = response.GetResponseStream();
while (true)
{
MemoryStream ms = new MemoryStream();
byte[] buffer = new byte[1024];
int bytesRead = 0;
while ((bytesRead = stream.Read(buffer, 0, buffer.Length)) > 0)
{
ms.Write(buffer, 0, bytesRead);
texture.LoadImage(ms.ToArray());
rawImage.texture = texture;
yield return null;
}
}
}
}
திறமையான வீடியோ ஸ்ட்ரீமிங்கிற்கு UnityWebRequest ஐப் பயன்படுத்துதல்
அணுகுமுறை 2: சிறந்த செயல்திறனுக்கான UnityWebRequest ஐ மேம்படுத்துதல்
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Networking;
using System.Collections;
public class UnityWebRequestStream : MonoBehaviour
{
public string streamURL = "http://192.1.1.1:81/stream";
public RawImage videoDisplay;
private Texture2D videoTexture;
void Start()
{
videoTexture = new Texture2D(2, 2);
videoDisplay.texture = videoTexture;
StartCoroutine(StreamVideo());
}
IEnumerator StreamVideo()
{
while (true)
{
UnityWebRequest request = UnityWebRequestTexture.GetTexture(streamURL);
yield return request.SendWebRequest();
if (request.result != UnityWebRequest.Result.Success)
{
Debug.LogError("Stream failed: " + request.error);
}
else
{
videoTexture = ((DownloadHandlerTexture)request.downloadHandler).texture;
videoDisplay.texture = videoTexture;
}
yield return new WaitForSeconds(0.1f);
}
}
}
நிகழ்நேர ESP32 வீடியோ ஸ்ட்ரீம்களுடன் ஒற்றுமை திட்டங்களை மேம்படுத்துதல்
யூனிட்டியில் ESP32 வீடியோ ஸ்ட்ரீம்களை ஒருங்கிணைக்கும்போது அடிக்கடி கவனிக்கப்படாத ஒரு அம்சம் நீண்ட இயக்க நேர அமர்வுகளுக்கான செயல்திறனைக் கையாள்வது. MJPEG ஸ்ட்ரீமுடன் பணிபுரியும் போது, பிரேம்கள் தொடர்ச்சியான வரிசையாக வழங்கப்படுகின்றன, ஒவ்வொன்றையும் டிகோட் செய்து ரெண்டர் செய்ய யூனிட்டி தேவைப்படுகிறது. சரியான தேர்வுமுறை இல்லாமல், இது நினைவக கசிவுக்கு வழிவகுக்கும் அல்லது உங்கள் பயன்பாட்டில் தாமதம் ஏற்படலாம். போன்ற கருவிகளைப் பயன்படுத்துதல் விவரக்குறிப்பாளர் யூனிட்டியில் டெவலப்பர்கள் நினைவகப் பயன்பாட்டைக் கண்காணிக்கவும் வீடியோ ரெண்டரிங் பைப்லைனில் சாத்தியமான இடையூறுகளைக் கண்டறியவும் அனுமதிக்கிறது. நன்கு டியூன் செய்யப்பட்ட கேம் மென்மையான காட்சிகளை உறுதி செய்கிறது, குறிப்பாக ட்ரோன் கண்காணிப்பு அல்லது ரோபோடிக் இடைமுகங்கள் போன்ற ஊடாடும் பயன்பாடுகளுக்கு. 🚁
மற்றொரு முக்கியமான தலைப்பு பாதுகாப்பு, குறிப்பாக ESP32 போன்ற IoT சாதனங்களைக் கையாளும் போது. ஸ்ட்ரீமிங் URL, பெரும்பாலும் ஸ்கிரிப்ட்களில் கடின குறியீடு செய்யப்பட்டு, அங்கீகரிக்கப்படாத அணுகலுக்கு கேமராவை வெளிப்படுத்துகிறது. மறைகுறியாக்கப்பட்ட டோக்கன்களுடன் பாதுகாப்பான URLகளைப் பயன்படுத்துவதும் குறிப்பிட்ட IPகளுக்கான அணுகலைக் கட்டுப்படுத்துவதும் சிறந்த அணுகுமுறையாகும். டெவலப்பர்கள் ஸ்ட்ரீமிங் முகவரியை யூனிட்டி ஸ்கிரிப்ட்டில் வெளிப்படுத்துவதற்குப் பதிலாக மறைகுறியாக்கப்பட்ட உள்ளமைவு கோப்பில் சேமிக்கலாம். இதைச் செய்வதன் மூலம், உங்கள் யூனிட்டி அடிப்படையிலான பயன்பாடுகள் பாதுகாப்பானதாகவும், சாத்தியமான அச்சுறுத்தல்களுக்கு எதிராக அதிக மீள்திறன் கொண்டதாகவும் மாறும். 🔒
இறுதியாக, வீடியோ ஸ்ட்ரீமை மாறும் வகையில் இடைநிறுத்த அல்லது நிறுத்த செயல்பாட்டைச் சேர்ப்பதைக் கவனியுங்கள். பல திட்டப்பணிகள் வீடியோவை எளிமையாக வழங்குவதில் கவனம் செலுத்தும் அதே வேளையில், நிஜ உலக காட்சிகளுக்கு பெரும்பாலும் அதிக ஊடாடுதல் தேவைப்படுகிறது. உதாரணமாக, ஒரு பாதுகாப்பு கண்காணிப்பு அமைப்பு பராமரிப்பிற்காக ஊட்டத்தை நிறுத்த வேண்டும் அல்லது பல கேமராக்களுக்கு இடையில் மாற வேண்டும். UI பொத்தான்களுடன் "பாஸ் ஸ்ட்ரீம்" அல்லது "ஸ்விட்ச் கேமரா" போன்ற கட்டளைகளை செயல்படுத்துவது பயன்பாட்டினை பெரிதும் மேம்படுத்தும், உங்கள் பயன்பாட்டை பல்வேறு பயன்பாட்டு நிகழ்வுகளுக்கு மாற்றியமைக்கும். 🌟
யூனிட்டியில் ESP32 வீடியோவை ஸ்ட்ரீமிங் செய்வது பற்றிய பொதுவான கேள்விகள்
- வீடியோ காட்சியளிக்காதபோது பிழையை எவ்வாறு சரிசெய்வது?
- என்பதை சரிபார்க்கவும் RawImage கூறு ஒதுக்கப்பட்டுள்ளது மற்றும் ஸ்ட்ரீம் வேலைகளைச் சரிபார்க்க உங்கள் உலாவியில் URL அணுகக்கூடியதா என்பதை உறுதிப்படுத்தவும்.
- MJPEG தவிர வேறு நெறிமுறைகளை நான் பயன்படுத்தலாமா?
- ஆம், யூனிட்டி RTSP போன்ற பிற வடிவங்களை ஆதரிக்கிறது, ஆனால் அவற்றை டிகோடிங் செய்ய உங்களுக்கு வெளிப்புற செருகுநிரல்கள் அல்லது கருவிகள் தேவைப்படும்.
- பெரிய திட்டங்களுக்கான செயல்திறனை எவ்வாறு மேம்படுத்துவது?
- பயன்படுத்தவும் UnityWebRequest பதிலாக HttpWebRequest சிறந்த செயல்திறன் மற்றும் குறைந்த நினைவக மேல்நிலைக்கு.
- ESP32 வீடியோ ஸ்ட்ரீமை யூனிட்டியில் பதிவு செய்ய முடியுமா?
- ஆம், நீங்கள் பிரேம்களை a இல் சேமிக்கலாம் MemoryStream மூன்றாம் தரப்பு நூலகங்களைப் பயன்படுத்தி MP4 போன்ற வீடியோ வடிவத்தில் அவற்றை குறியாக்கம் செய்யவும்.
- இந்த ஒருங்கிணைப்புக்கான சிறந்த பயன்பாடு எது?
- IoT கண்காணிப்பு, நிகழ்நேர VR அனுபவங்கள் அல்லது நேரடி நிகழ்வு ஒளிபரப்பு போன்ற பயன்பாடுகள் யூனிட்டியில் ESP32 ஸ்ட்ரீமிங் ஒருங்கிணைப்பிலிருந்து பெரிதும் பயனடைகின்றன.
யூனிட்டியில் வீடியோ ஸ்ட்ரீம்களை வழங்குவதற்கான முக்கிய அம்சங்கள்
யூனிட்டியில் உள்ள ESP32 கேமராவிலிருந்து நேரடி வீடியோவை வழங்குவதற்கு, MJPEG ஸ்ட்ரீமிங்கைப் புரிந்துகொண்டு யூனிட்டியின் கூறுகளை திறம்பட பயன்படுத்த வேண்டும். வழங்கப்பட்ட ஸ்கிரிப்ட்களை செயல்படுத்துவதன் மூலம், டெவலப்பர்கள் யூனிட்டியை IoT சாதனங்களுடன் இணைக்கலாம் மற்றும் நிகழ்நேர வீடியோவை ஒரு RawImage. இது ரோபாட்டிக்ஸ் மற்றும் விஆர் போன்ற பயன்பாடுகளுக்கான புதிய சாத்தியங்களைத் திறக்கிறது. 🎥
மென்மையான பின்னணி மற்றும் அளவிடுதல் ஆகியவற்றை உறுதிப்படுத்த, ஸ்கிரிப்ட்களை மேம்படுத்துவது, பிழைகளை அழகாகக் கையாள்வது மற்றும் ஸ்ட்ரீமிங் URL ஐப் பாதுகாப்பது முக்கியம். இந்த நடைமுறைகள் செயல்திறனை மேம்படுத்துவதோடு மட்டுமல்லாமல் திட்டங்களை மிகவும் வலுவானதாகவும், பயனர்களுக்கு ஏற்றதாகவும் ஆக்குகின்றன. இந்த உதவிக்குறிப்புகள் மூலம், தொடக்கநிலையாளர்கள் கூட தங்கள் வீடியோ ஸ்ட்ரீமிங் ஒருங்கிணைப்பில் வெற்றிபெற முடியும்.
யூனிட்டியில் ESP32 வீடியோ ஸ்ட்ரீமிங்கிற்கான ஆதாரங்கள் மற்றும் குறிப்புகள்
- MJPEG ஸ்ட்ரீமிங் மற்றும் யூனிட்டி ஒருங்கிணைப்பு பற்றிய விவரங்கள் அதிகாரப்பூர்வ யூனிட்டி ஆவணத்தால் ஈர்க்கப்பட்டன. இல் மேலும் அறிக Unity RawImage ஆவணம் .
- ESP32 கேமரா பயன்பாடு மற்றும் HTTP ஸ்ட்ரீம் அமைப்பு பற்றிய தகவல்கள் குறிப்பிடப்பட்டது சீரற்ற மேதாவி பயிற்சிகள் .
- கொரூடின்கள் மற்றும் UnityWebRequest ஆகியவற்றின் செயல்பாட்டின் எடுத்துக்காட்டுகள் மூலம் வழிநடத்தப்பட்டது ஒற்றுமை கற்க .
- IoT திட்டங்களுக்கான MJPEG டிகோடிங்கை மேம்படுத்துவதற்கான நுண்ணறிவு பெறப்பட்டது ஸ்டேக் ஓவர்ஃப்ளோ விவாதங்கள் .