Merge branch 'develop_sky_liyi' into 'develop_sky'
Develop sky liyi See merge request StarlockTeam/app-starlock!262
This commit is contained in:
commit
bfc6363957
@ -1164,5 +1164,7 @@
|
|||||||
"您的图像和视频数据仅保留": "يتم الاحتفاظ ببيانات الصور والفيديو فقط",
|
"您的图像和视频数据仅保留": "يتم الاحتفاظ ببيانات الصور والفيديو فقط",
|
||||||
"后图像和视频数据将会失效,开通": "بعد ذلك ، ستكون بيانات الصورة والفيديو غير صالحة ويتم تنشيطها",
|
"后图像和视频数据将会失效,开通": "بعد ذلك ، ستكون بيانات الصورة والفيديو غير صالحة ويتم تنشيطها",
|
||||||
"云存会员": "عضوية التخزين السحابي",
|
"云存会员": "عضوية التخزين السحابي",
|
||||||
"服务,图像视频信息随心存!": "معلومات الخدمة والصور والفيديو في قلبك!"
|
"服务,图像视频信息随心存!": "معلومات الخدمة والصور والفيديو في قلبك!",
|
||||||
|
"图像": "صورة",
|
||||||
|
"视频": "فيديو"
|
||||||
}
|
}
|
||||||
@ -1165,5 +1165,7 @@
|
|||||||
"您的图像和视频数据仅保留": "Данните ви за изображения и видеоклипове се запазват само",
|
"您的图像和视频数据仅保留": "Данните ви за изображения и видеоклипове се запазват само",
|
||||||
"后图像和视频数据将会失效,开通": "След това данните за изображението и видеото ще бъдат невалидни и активирани",
|
"后图像和视频数据将会失效,开通": "След това данните за изображението и видеото ще бъдат невалидни и активирани",
|
||||||
"云存会员": "Членство в Cloud Storage",
|
"云存会员": "Членство в Cloud Storage",
|
||||||
"服务,图像视频信息随心存!": "Информацията за обслужване, изображения и видео са във вашето сърце!"
|
"服务,图像视频信息随心存!": "Информацията за обслужване, изображения и видео са във вашето сърце!",
|
||||||
|
"图像": "изображение",
|
||||||
|
"视频": "Видео"
|
||||||
}
|
}
|
||||||
@ -1165,5 +1165,7 @@
|
|||||||
"您的图像和视频数据仅保留": "আপনার চিত্র এবং ভিডিও ডেটা কেবল ধরে রাখা হয়",
|
"您的图像和视频数据仅保留": "আপনার চিত্র এবং ভিডিও ডেটা কেবল ধরে রাখা হয়",
|
||||||
"后图像和视频数据将会失效,开通": "এর পরে, চিত্র এবং ভিডিও ডেটা অবৈধ এবং সক্রিয় হবে",
|
"后图像和视频数据将会失效,开通": "এর পরে, চিত্র এবং ভিডিও ডেটা অবৈধ এবং সক্রিয় হবে",
|
||||||
"云存会员": "ক্লাউড স্টোরেজ সদস্যতা",
|
"云存会员": "ক্লাউড স্টোরেজ সদস্যতা",
|
||||||
"服务,图像视频信息随心存!": "পরিষেবা, চিত্র এবং ভিডিও তথ্য আপনার হৃদয়ে!"
|
"服务,图像视频信息随心存!": "পরিষেবা, চিত্র এবং ভিডিও তথ্য আপনার হৃদয়ে!",
|
||||||
|
"图像": "প্রতিচ্ছবি",
|
||||||
|
"视频": "ভিডিও"
|
||||||
}
|
}
|
||||||
@ -1165,5 +1165,7 @@
|
|||||||
"您的图像和视频数据仅保留": "Uchovávají se pouze vaše obrazová data a data videí",
|
"您的图像和视频数据仅保留": "Uchovávají se pouze vaše obrazová data a data videí",
|
||||||
"后图像和视频数据将会失效,开通": "Poté budou obrazová a video data neplatná a aktivovaná",
|
"后图像和视频数据将会失效,开通": "Poté budou obrazová a video data neplatná a aktivovaná",
|
||||||
"云存会员": "Členství v cloudovém úložišti",
|
"云存会员": "Členství v cloudovém úložišti",
|
||||||
"服务,图像视频信息随心存!": "Servis, obrazové a video informace jsou na prvním místě!"
|
"服务,图像视频信息随心存!": "Servis, obrazové a video informace jsou na prvním místě!",
|
||||||
|
"图像": "obraz",
|
||||||
|
"视频": "Video"
|
||||||
}
|
}
|
||||||
@ -1165,5 +1165,7 @@
|
|||||||
"您的图像和视频数据仅保留": "Dine billed- og videodata opbevares kun",
|
"您的图像和视频数据仅保留": "Dine billed- og videodata opbevares kun",
|
||||||
"后图像和视频数据将会失效,开通": "Derefter vil billed- og videodataene være ugyldige og aktiveret",
|
"后图像和视频数据将会失效,开通": "Derefter vil billed- og videodataene være ugyldige og aktiveret",
|
||||||
"云存会员": "Medlemskab af Cloud Storage",
|
"云存会员": "Medlemskab af Cloud Storage",
|
||||||
"服务,图像视频信息随心存!": "Service-, billed- og videoinformation er i dit hjerte!"
|
"服务,图像视频信息随心存!": "Service-, billed- og videoinformation er i dit hjerte!",
|
||||||
|
"图像": "billede",
|
||||||
|
"视频": "Video"
|
||||||
}
|
}
|
||||||
@ -1165,5 +1165,7 @@
|
|||||||
"您的图像和视频数据仅保留": "Ihre Bild- und Videodaten werden nur dann aufbewahrt",
|
"您的图像和视频数据仅保留": "Ihre Bild- und Videodaten werden nur dann aufbewahrt",
|
||||||
"后图像和视频数据将会失效,开通": "Danach sind die Bild- und Videodaten ungültig und aktiviert",
|
"后图像和视频数据将会失效,开通": "Danach sind die Bild- und Videodaten ungültig und aktiviert",
|
||||||
"云存会员": "Cloud-Speicher-Mitgliedschaft",
|
"云存会员": "Cloud-Speicher-Mitgliedschaft",
|
||||||
"服务,图像视频信息随心存!": "Service-, Bild- und Videoinformationen liegen Ihnen am Herzen!"
|
"服务,图像视频信息随心存!": "Service-, Bild- und Videoinformationen liegen Ihnen am Herzen!",
|
||||||
|
"图像": "Bild",
|
||||||
|
"视频": "Video"
|
||||||
}
|
}
|
||||||
@ -1165,5 +1165,7 @@
|
|||||||
"您的图像和视频数据仅保留": "Τα δεδομένα εικόνας και βίντεο διατηρούνται μόνο",
|
"您的图像和视频数据仅保留": "Τα δεδομένα εικόνας και βίντεο διατηρούνται μόνο",
|
||||||
"后图像和视频数据将会失效,开通": "Μετά από αυτό, τα δεδομένα εικόνας και βίντεο θα είναι άκυρα και θα ενεργοποιηθούν",
|
"后图像和视频数据将会失效,开通": "Μετά από αυτό, τα δεδομένα εικόνας και βίντεο θα είναι άκυρα και θα ενεργοποιηθούν",
|
||||||
"云存会员": "Συνδρομή Cloud Storage",
|
"云存会员": "Συνδρομή Cloud Storage",
|
||||||
"服务,图像视频信息随心存!": "Οι πληροφορίες εξυπηρέτησης, εικόνας και βίντεο είναι στην καρδιά σας!"
|
"服务,图像视频信息随心存!": "Οι πληροφορίες εξυπηρέτησης, εικόνας και βίντεο είναι στην καρδιά σας!",
|
||||||
|
"图像": "εικόνα",
|
||||||
|
"视频": "Βίντεο"
|
||||||
}
|
}
|
||||||
@ -1171,5 +1171,7 @@
|
|||||||
"您的图像和视频数据仅保留": "Your image and video data is only retained",
|
"您的图像和视频数据仅保留": "Your image and video data is only retained",
|
||||||
"后图像和视频数据将会失效,开通": "After that, the image and video data will be invalid and activated",
|
"后图像和视频数据将会失效,开通": "After that, the image and video data will be invalid and activated",
|
||||||
"云存会员": "Cloud Storage Membership",
|
"云存会员": "Cloud Storage Membership",
|
||||||
"服务,图像视频信息随心存!": "Service, image and video information are at your heart!"
|
"服务,图像视频信息随心存!": "Service, image and video information are at your heart!",
|
||||||
|
"图像": "image",
|
||||||
|
"视频": "Video"
|
||||||
}
|
}
|
||||||
@ -1165,5 +1165,7 @@
|
|||||||
"您的图像和视频数据仅保留": "Solo se conservan los datos de imagen y vídeo",
|
"您的图像和视频数据仅保留": "Solo se conservan los datos de imagen y vídeo",
|
||||||
"后图像和视频数据将会失效,开通": "Después de eso, los datos de imagen y video no serán válidos y se activarán",
|
"后图像和视频数据将会失效,开通": "Después de eso, los datos de imagen y video no serán válidos y se activarán",
|
||||||
"云存会员": "Membresía de almacenamiento en la nube",
|
"云存会员": "Membresía de almacenamiento en la nube",
|
||||||
"服务,图像视频信息随心存!": "¡La información de servicio, imagen y video está en su corazón!"
|
"服务,图像视频信息随心存!": "¡La información de servicio, imagen y video está en su corazón!",
|
||||||
|
"图像": "imagen",
|
||||||
|
"视频": "Vídeo"
|
||||||
}
|
}
|
||||||
@ -1165,5 +1165,7 @@
|
|||||||
"您的图像和视频数据仅保留": "Teie pildi- ja videoandmeid säilitatakse ainult",
|
"您的图像和视频数据仅保留": "Teie pildi- ja videoandmeid säilitatakse ainult",
|
||||||
"后图像和视频数据将会失效,开通": "Pärast seda on pildi- ja videoandmed kehtetud ja aktiveeritud",
|
"后图像和视频数据将会失效,开通": "Pärast seda on pildi- ja videoandmed kehtetud ja aktiveeritud",
|
||||||
"云存会员": "Pilvesalvestuse liikmelisus",
|
"云存会员": "Pilvesalvestuse liikmelisus",
|
||||||
"服务,图像视频信息随心存!": "Teenindus-, pildi- ja videoteave on teie südames!"
|
"服务,图像视频信息随心存!": "Teenindus-, pildi- ja videoteave on teie südames!",
|
||||||
|
"图像": "Piltide",
|
||||||
|
"视频": "Video"
|
||||||
}
|
}
|
||||||
@ -1165,5 +1165,7 @@
|
|||||||
"您的图像和视频数据仅保留": "Kuva- ja videotietosi säilytetään vain",
|
"您的图像和视频数据仅保留": "Kuva- ja videotietosi säilytetään vain",
|
||||||
"后图像和视频数据将会失效,开通": "Sen jälkeen kuva- ja videotiedot ovat virheellisiä ja aktivoituvat",
|
"后图像和视频数据将会失效,开通": "Sen jälkeen kuva- ja videotiedot ovat virheellisiä ja aktivoituvat",
|
||||||
"云存会员": "Pilvitallennustilan jäsenyys",
|
"云存会员": "Pilvitallennustilan jäsenyys",
|
||||||
"服务,图像视频信息随心存!": "Palvelu-, kuva- ja videotiedot ovat sydämessäsi!"
|
"服务,图像视频信息随心存!": "Palvelu-, kuva- ja videotiedot ovat sydämessäsi!",
|
||||||
|
"图像": "kuva",
|
||||||
|
"视频": "Video"
|
||||||
}
|
}
|
||||||
@ -1165,5 +1165,7 @@
|
|||||||
"您的图像和视频数据仅保留": "Vos données d’image et de vidéo ne sont conservées que",
|
"您的图像和视频数据仅保留": "Vos données d’image et de vidéo ne sont conservées que",
|
||||||
"后图像和视频数据将会失效,开通": "Après cela, les données de l’image et de la vidéo seront invalides et activées",
|
"后图像和视频数据将会失效,开通": "Après cela, les données de l’image et de la vidéo seront invalides et activées",
|
||||||
"云存会员": "Adhésion au stockage dans le cloud",
|
"云存会员": "Adhésion au stockage dans le cloud",
|
||||||
"服务,图像视频信息随心存!": "Le service, l’image et les informations vidéo sont au cœur de vos préoccupations !"
|
"服务,图像视频信息随心存!": "Le service, l’image et les informations vidéo sont au cœur de vos préoccupations !",
|
||||||
|
"图像": "image",
|
||||||
|
"视频": "Vidéo"
|
||||||
}
|
}
|
||||||
@ -1165,5 +1165,7 @@
|
|||||||
"您的图像和视频数据仅保留": "נתוני התמונה והסרטונים נשמרים רק",
|
"您的图像和视频数据仅保留": "נתוני התמונה והסרטונים נשמרים רק",
|
||||||
"后图像和视频数据将会失效,开通": "לאחר מכן, נתוני התמונה והווידאו לא יהיו חוקיים ויופעלו",
|
"后图像和视频数据将会失效,开通": "לאחר מכן, נתוני התמונה והווידאו לא יהיו חוקיים ויופעלו",
|
||||||
"云存会员": "חברות באחסון בענן",
|
"云存会员": "חברות באחסון בענן",
|
||||||
"服务,图像视频信息随心存!": "מידע על שירות, תמונה ווידאו נמצאים בלב שלך!"
|
"服务,图像视频信息随心存!": "מידע על שירות, תמונה ווידאו נמצאים בלב שלך!",
|
||||||
|
"图像": "תמונה",
|
||||||
|
"视频": "וידאו"
|
||||||
}
|
}
|
||||||
@ -1165,5 +1165,7 @@
|
|||||||
"您的图像和视频数据仅保留": "आपकी छवि और वीडियो डेटा केवल बनाए रखा जाता है",
|
"您的图像和视频数据仅保留": "आपकी छवि और वीडियो डेटा केवल बनाए रखा जाता है",
|
||||||
"后图像和视频数据将会失效,开通": "उसके बाद, छवि और वीडियो डेटा अमान्य और सक्रिय हो जाएगा",
|
"后图像和视频数据将会失效,开通": "उसके बाद, छवि और वीडियो डेटा अमान्य और सक्रिय हो जाएगा",
|
||||||
"云存会员": "क्लाउड स्टोरेज सदस्यता",
|
"云存会员": "क्लाउड स्टोरेज सदस्यता",
|
||||||
"服务,图像视频信息随心存!": "सेवा, छवि और वीडियो जानकारी आपके दिल में हैं!"
|
"服务,图像视频信息随心存!": "सेवा, छवि और वीडियो जानकारी आपके दिल में हैं!",
|
||||||
|
"图像": "प्रतिबिंब",
|
||||||
|
"视频": "वीडियो"
|
||||||
}
|
}
|
||||||
@ -1166,5 +1166,7 @@
|
|||||||
"您的图像和视频数据仅保留": "您的圖像和視頻數據僅保留",
|
"您的图像和视频数据仅保留": "您的圖像和視頻數據僅保留",
|
||||||
"后图像和视频数据将会失效,开通": "后圖像和視頻數據將會失效,開通",
|
"后图像和视频数据将会失效,开通": "后圖像和視頻數據將會失效,開通",
|
||||||
"云存会员": "雲存會員",
|
"云存会员": "雲存會員",
|
||||||
"服务,图像视频信息随心存!": "服務,圖像視頻資訊隨心存!"
|
"服务,图像视频信息随心存!": "服務,圖像視頻資訊隨心存!",
|
||||||
|
"图像": "圖像",
|
||||||
|
"视频": "視頻"
|
||||||
}
|
}
|
||||||
@ -1165,5 +1165,7 @@
|
|||||||
"您的图像和视频数据仅保留": "Vaši podaci o slici i videozapisu zadržavaju se samo",
|
"您的图像和视频数据仅保留": "Vaši podaci o slici i videozapisu zadržavaju se samo",
|
||||||
"后图像和视频数据将会失效,开通": "Nakon toga, slikovni i video podaci bit će nevažeći i aktivirani",
|
"后图像和视频数据将会失效,开通": "Nakon toga, slikovni i video podaci bit će nevažeći i aktivirani",
|
||||||
"云存会员": "Članstvo u pohrani u oblaku",
|
"云存会员": "Članstvo u pohrani u oblaku",
|
||||||
"服务,图像视频信息随心存!": "Informacije o usluzi, slikama i videozapisima su vam u srcu!"
|
"服务,图像视频信息随心存!": "Informacije o usluzi, slikama i videozapisima su vam u srcu!",
|
||||||
|
"图像": "slika",
|
||||||
|
"视频": "Video"
|
||||||
}
|
}
|
||||||
@ -1165,5 +1165,7 @@
|
|||||||
"您的图像和视频数据仅保留": "A kép- és videóadatokat csak a rendszer őrzi meg",
|
"您的图像和视频数据仅保留": "A kép- és videóadatokat csak a rendszer őrzi meg",
|
||||||
"后图像和视频数据将会失效,开通": "Ezt követően a kép- és videóadatok érvénytelenek lesznek és aktiválódnak",
|
"后图像和视频数据将会失效,开通": "Ezt követően a kép- és videóadatok érvénytelenek lesznek és aktiválódnak",
|
||||||
"云存会员": "Felhőalapú tárolási tagság",
|
"云存会员": "Felhőalapú tárolási tagság",
|
||||||
"服务,图像视频信息随心存!": "A szolgáltatás, a képi és videós információk a szívedben vannak!"
|
"服务,图像视频信息随心存!": "A szolgáltatás, a képi és videós információk a szívedben vannak!",
|
||||||
|
"图像": "kép",
|
||||||
|
"视频": "Video"
|
||||||
}
|
}
|
||||||
@ -1171,5 +1171,7 @@
|
|||||||
"您的图像和视频数据仅保留": "Ձեր պատկերի եւ վիդեո տվյալները պահպանվում են միայն",
|
"您的图像和视频数据仅保留": "Ձեր պատկերի եւ վիդեո տվյալները պահպանվում են միայն",
|
||||||
"后图像和视频数据将会失效,开通": "Դրանից հետո պատկերի եւ վիդեո տվյալները կլինեն անվավեր եւ կակտիվացվեն",
|
"后图像和视频数据将会失效,开通": "Դրանից հետո պատկերի եւ վիդեո տվյալները կլինեն անվավեր եւ կակտիվացվեն",
|
||||||
"云存会员": "Cloud Storage Membership",
|
"云存会员": "Cloud Storage Membership",
|
||||||
"服务,图像视频信息随心存!": "Ծառայությունը, պատկերը եւ վիդեո տեղեկատվությունը ձեր սրտում են:"
|
"服务,图像视频信息随心存!": "Ծառայությունը, պատկերը եւ վիդեո տեղեկատվությունը ձեր սրտում են:",
|
||||||
|
"图像": "Պատկերասրահ",
|
||||||
|
"视频": "Տեսանյութ"
|
||||||
}
|
}
|
||||||
@ -1165,5 +1165,7 @@
|
|||||||
"您的图像和视频数据仅保留": "Data gambar dan video Anda hanya disimpan",
|
"您的图像和视频数据仅保留": "Data gambar dan video Anda hanya disimpan",
|
||||||
"后图像和视频数据将会失效,开通": "Setelah itu, data gambar dan video akan tidak valid dan diaktifkan",
|
"后图像和视频数据将会失效,开通": "Setelah itu, data gambar dan video akan tidak valid dan diaktifkan",
|
||||||
"云存会员": "Keanggotaan Cloud Storage",
|
"云存会员": "Keanggotaan Cloud Storage",
|
||||||
"服务,图像视频信息随心存!": "Informasi layanan, gambar, dan video adalah inti Anda!"
|
"服务,图像视频信息随心存!": "Informasi layanan, gambar, dan video adalah inti Anda!",
|
||||||
|
"图像": "citra",
|
||||||
|
"视频": "Video"
|
||||||
}
|
}
|
||||||
@ -1165,5 +1165,7 @@
|
|||||||
"您的图像和视频数据仅保留": "I dati delle immagini e dei video vengono conservati solo",
|
"您的图像和视频数据仅保留": "I dati delle immagini e dei video vengono conservati solo",
|
||||||
"后图像和视频数据将会失效,开通": "Successivamente, i dati dell'immagine e del video non saranno più validi e attivati",
|
"后图像和视频数据将会失效,开通": "Successivamente, i dati dell'immagine e del video non saranno più validi e attivati",
|
||||||
"云存会员": "Iscrizione al cloud storage",
|
"云存会员": "Iscrizione al cloud storage",
|
||||||
"服务,图像视频信息随心存!": "Le informazioni sul servizio, le immagini e i video sono al tuo centro!"
|
"服务,图像视频信息随心存!": "Le informazioni sul servizio, le immagini e i video sono al tuo centro!",
|
||||||
|
"图像": "immagine",
|
||||||
|
"视频": "Video"
|
||||||
}
|
}
|
||||||
@ -1165,5 +1165,7 @@
|
|||||||
"您的图像和视频数据仅保留": "画像と動画のデータのみが保持されます",
|
"您的图像和视频数据仅保留": "画像と動画のデータのみが保持されます",
|
||||||
"后图像和视频数据将会失效,开通": "その後、画像とビデオのデータは無効になり、アクティブになります",
|
"后图像和视频数据将会失效,开通": "その後、画像とビデオのデータは無効になり、アクティブになります",
|
||||||
"云存会员": "クラウドストレージメンバーシップ",
|
"云存会员": "クラウドストレージメンバーシップ",
|
||||||
"服务,图像视频信息随心存!": "サービス、画像、ビデオ情報があなたの中心にあります!"
|
"服务,图像视频信息随心存!": "サービス、画像、ビデオ情報があなたの中心にあります!",
|
||||||
|
"图像": "画像",
|
||||||
|
"视频": "ビデオ"
|
||||||
}
|
}
|
||||||
@ -1171,5 +1171,7 @@
|
|||||||
"您的图像和视频数据仅保留": "თქვენი სურათი და ვიდეო მონაცემები ინახება მხოლოდ",
|
"您的图像和视频数据仅保留": "თქვენი სურათი და ვიდეო მონაცემები ინახება მხოლოდ",
|
||||||
"后图像和视频数据将会失效,开通": "ამის შემდეგ, სურათისა და ვიდეო მონაცემები არასწორი და გააქტიურებული იქნება",
|
"后图像和视频数据将会失效,开通": "ამის შემდეგ, სურათისა და ვიდეო მონაცემები არასწორი და გააქტიურებული იქნება",
|
||||||
"云存会员": "Cloud Storage წევრობა",
|
"云存会员": "Cloud Storage წევრობა",
|
||||||
"服务,图像视频信息随心存!": "მომსახურება, სურათი და ვიდეო ინფორმაცია თქვენს გულშია!"
|
"服务,图像视频信息随心存!": "მომსახურება, სურათი და ვიდეო ინფორმაცია თქვენს გულშია!",
|
||||||
|
"图像": "სურათი",
|
||||||
|
"视频": "ვიდეო"
|
||||||
}
|
}
|
||||||
@ -1176,5 +1176,7 @@
|
|||||||
"您的图像和视频数据仅保留": "您的图像和视频数据仅保留",
|
"您的图像和视频数据仅保留": "您的图像和视频数据仅保留",
|
||||||
"后图像和视频数据将会失效,开通": "后图像和视频数据将会失效,开通",
|
"后图像和视频数据将会失效,开通": "后图像和视频数据将会失效,开通",
|
||||||
"云存会员": "云存会员",
|
"云存会员": "云存会员",
|
||||||
"服务,图像视频信息随心存!": "服务,图像视频信息随心存!"
|
"服务,图像视频信息随心存!": "服务,图像视频信息随心存!",
|
||||||
|
"图像": "图像",
|
||||||
|
"视频": "视频"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1165,5 +1165,7 @@
|
|||||||
"您的图像和视频数据仅保留": "Сіздің кескініңіз бен бейне деректеріңіз тек сақталады",
|
"您的图像和视频数据仅保留": "Сіздің кескініңіз бен бейне деректеріңіз тек сақталады",
|
||||||
"后图像和视频数据将会失效,开通": "Осыдан кейін кескін мен бейне деректер жарамсыз болып, белсендіріледі",
|
"后图像和视频数据将会失效,开通": "Осыдан кейін кескін мен бейне деректер жарамсыз болып, белсендіріледі",
|
||||||
"云存会员": "Бұлтты сақтауға мүшелік",
|
"云存会员": "Бұлтты сақтауға мүшелік",
|
||||||
"服务,图像视频信息随心存!": "Қызмет, бейне және бейне ақпарат сіздің жүрегіңізде жатыр!"
|
"服务,图像视频信息随心存!": "Қызмет, бейне және бейне ақпарат сіздің жүрегіңізде жатыр!",
|
||||||
|
"图像": "кескіні",
|
||||||
|
"视频": "Бейне"
|
||||||
}
|
}
|
||||||
@ -1165,5 +1165,7 @@
|
|||||||
"您的图像和视频数据仅保留": "이미지 및 동영상 데이터만 보존됩니다.",
|
"您的图像和视频数据仅保留": "이미지 및 동영상 데이터만 보존됩니다.",
|
||||||
"后图像和视频数据将会失效,开通": "그 후 이미지 및 비디오 데이터는 유효하지 않고 활성화됩니다",
|
"后图像和视频数据将会失效,开通": "그 후 이미지 및 비디오 데이터는 유효하지 않고 활성화됩니다",
|
||||||
"云存会员": "클라우드 스토리지 멤버십",
|
"云存会员": "클라우드 스토리지 멤버십",
|
||||||
"服务,图像视频信息随心存!": "서비스, 이미지 및 비디오 정보가 당신의 중심에 있습니다!"
|
"服务,图像视频信息随心存!": "서비스, 이미지 및 비디오 정보가 당신의 중심에 있습니다!",
|
||||||
|
"图像": "이미지",
|
||||||
|
"视频": "비디오"
|
||||||
}
|
}
|
||||||
@ -1165,5 +1165,7 @@
|
|||||||
"您的图像和视频数据仅保留": "Vaizdo ir vaizdo įrašų duomenys saugomi tik",
|
"您的图像和视频数据仅保留": "Vaizdo ir vaizdo įrašų duomenys saugomi tik",
|
||||||
"后图像和视频数据将会失效,开通": "Po to vaizdo ir vaizdo duomenys bus negaliojantys ir suaktyvinti",
|
"后图像和视频数据将会失效,开通": "Po to vaizdo ir vaizdo duomenys bus negaliojantys ir suaktyvinti",
|
||||||
"云存会员": "Debesies saugyklos narystė",
|
"云存会员": "Debesies saugyklos narystė",
|
||||||
"服务,图像视频信息随心存!": "Aptarnavimas, vaizdas ir video informacija yra jūsų širdis!"
|
"服务,图像视频信息随心存!": "Aptarnavimas, vaizdas ir video informacija yra jūsų širdis!",
|
||||||
|
"图像": "vaizdas",
|
||||||
|
"视频": "Video"
|
||||||
}
|
}
|
||||||
@ -1165,5 +1165,7 @@
|
|||||||
"您的图像和视频数据仅保留": "Data imej dan video anda hanya dikekalkan",
|
"您的图像和视频数据仅保留": "Data imej dan video anda hanya dikekalkan",
|
||||||
"后图像和视频数据将会失效,开通": "Selepas itu, data imej dan video akan menjadi tidak sah dan diaktifkan",
|
"后图像和视频数据将会失效,开通": "Selepas itu, data imej dan video akan menjadi tidak sah dan diaktifkan",
|
||||||
"云存会员": "Keahlian Storan Awan",
|
"云存会员": "Keahlian Storan Awan",
|
||||||
"服务,图像视频信息随心存!": "Maklumat perkhidmatan, imej dan video adalah di hati anda!"
|
"服务,图像视频信息随心存!": "Maklumat perkhidmatan, imej dan video adalah di hati anda!",
|
||||||
|
"图像": "Imej",
|
||||||
|
"视频": "Video"
|
||||||
}
|
}
|
||||||
@ -1165,5 +1165,7 @@
|
|||||||
"您的图像和视频数据仅保留": "Uw beeld- en videogegevens worden alleen bewaard",
|
"您的图像和视频数据仅保留": "Uw beeld- en videogegevens worden alleen bewaard",
|
||||||
"后图像和视频数据将会失效,开通": "Daarna zijn de afbeeldings- en videogegevens ongeldig en geactiveerd",
|
"后图像和视频数据将会失效,开通": "Daarna zijn de afbeeldings- en videogegevens ongeldig en geactiveerd",
|
||||||
"云存会员": "Lidmaatschap voor cloudopslag",
|
"云存会员": "Lidmaatschap voor cloudopslag",
|
||||||
"服务,图像视频信息随心存!": "Service-, beeld- en video-informatie staan bij u centraal!"
|
"服务,图像视频信息随心存!": "Service-, beeld- en video-informatie staan bij u centraal!",
|
||||||
|
"图像": "beeld",
|
||||||
|
"视频": "Video"
|
||||||
}
|
}
|
||||||
@ -1165,5 +1165,7 @@
|
|||||||
"您的图像和视频数据仅保留": "Dane obrazu i filmu są przechowywane tylko",
|
"您的图像和视频数据仅保留": "Dane obrazu i filmu są przechowywane tylko",
|
||||||
"后图像和视频数据将会失效,开通": "Po tym czasie dane obrazu i wideo zostaną nieważne i aktywowane",
|
"后图像和视频数据将会失效,开通": "Po tym czasie dane obrazu i wideo zostaną nieważne i aktywowane",
|
||||||
"云存会员": "Członkostwo w usłudze Cloud Storage",
|
"云存会员": "Członkostwo w usłudze Cloud Storage",
|
||||||
"服务,图像视频信息随心存!": "Informacje o serwisie, obrazie i wideo są w Twoim sercu!"
|
"服务,图像视频信息随心存!": "Informacje o serwisie, obrazie i wideo są w Twoim sercu!",
|
||||||
|
"图像": "obraz",
|
||||||
|
"视频": "Wideo"
|
||||||
}
|
}
|
||||||
@ -1165,5 +1165,7 @@
|
|||||||
"您的图像和视频数据仅保留": "Seus dados de imagem e vídeo são retidos apenas",
|
"您的图像和视频数据仅保留": "Seus dados de imagem e vídeo são retidos apenas",
|
||||||
"后图像和视频数据将会失效,开通": "Depois disso, os dados de imagem e vídeo serão inválidos e ativados",
|
"后图像和视频数据将会失效,开通": "Depois disso, os dados de imagem e vídeo serão inválidos e ativados",
|
||||||
"云存会员": "Associação de armazenamento em nuvem",
|
"云存会员": "Associação de armazenamento em nuvem",
|
||||||
"服务,图像视频信息随心存!": "Informações de serviço, imagem e vídeo estão no seu coração!"
|
"服务,图像视频信息随心存!": "Informações de serviço, imagem e vídeo estão no seu coração!",
|
||||||
|
"图像": "imagem",
|
||||||
|
"视频": "Vídeo"
|
||||||
}
|
}
|
||||||
@ -1170,5 +1170,7 @@
|
|||||||
"您的图像和视频数据仅保留": "Seus dados de imagem e vídeo são retidos apenas",
|
"您的图像和视频数据仅保留": "Seus dados de imagem e vídeo são retidos apenas",
|
||||||
"后图像和视频数据将会失效,开通": "Depois disso, os dados de imagem e vídeo serão inválidos e ativados",
|
"后图像和视频数据将会失效,开通": "Depois disso, os dados de imagem e vídeo serão inválidos e ativados",
|
||||||
"云存会员": "Associação de armazenamento em nuvem",
|
"云存会员": "Associação de armazenamento em nuvem",
|
||||||
"服务,图像视频信息随心存!": "Informações de serviço, imagem e vídeo estão no seu coração!"
|
"服务,图像视频信息随心存!": "Informações de serviço, imagem e vídeo estão no seu coração!",
|
||||||
|
"图像": "imagem",
|
||||||
|
"视频": "Vídeo"
|
||||||
}
|
}
|
||||||
@ -1165,5 +1165,7 @@
|
|||||||
"您的图像和视频数据仅保留": "Datele tale de imagine și video sunt păstrate numai",
|
"您的图像和视频数据仅保留": "Datele tale de imagine și video sunt păstrate numai",
|
||||||
"后图像和视频数据将会失效,开通": "După aceea, datele de imagine și video vor fi invalide și activate",
|
"后图像和视频数据将会失效,开通": "După aceea, datele de imagine și video vor fi invalide și activate",
|
||||||
"云存会员": "Abonament de stocare în cloud",
|
"云存会员": "Abonament de stocare în cloud",
|
||||||
"服务,图像视频信息随心存!": "Serviciile, imaginile și informațiile video sunt în centrul dumneavoastră!"
|
"服务,图像视频信息随心存!": "Serviciile, imaginile și informațiile video sunt în centrul dumneavoastră!",
|
||||||
|
"图像": "imagine",
|
||||||
|
"视频": "Video"
|
||||||
}
|
}
|
||||||
@ -1169,5 +1169,7 @@
|
|||||||
"您的图像和视频数据仅保留": "Ваши изображения и видеоданные сохраняются только",
|
"您的图像和视频数据仅保留": "Ваши изображения и видеоданные сохраняются только",
|
||||||
"后图像和视频数据将会失效,开通": "После этого изображение и видео данные будут недействительными и активированы",
|
"后图像和视频数据将会失效,开通": "После этого изображение и видео данные будут недействительными и активированы",
|
||||||
"云存会员": "Членство в облачном хранилище",
|
"云存会员": "Членство в облачном хранилище",
|
||||||
"服务,图像视频信息随心存!": "Сервисная, имиджевая и видеоинформация в Вашем сердце!"
|
"服务,图像视频信息随心存!": "Сервисная, имиджевая и видеоинформация в Вашем сердце!",
|
||||||
|
"图像": "образ",
|
||||||
|
"视频": "Видео"
|
||||||
}
|
}
|
||||||
@ -1165,5 +1165,7 @@
|
|||||||
"您的图像和视频数据仅保留": "Vaše údaje o obrázkoch a videách sa zachovajú iba",
|
"您的图像和视频数据仅保留": "Vaše údaje o obrázkoch a videách sa zachovajú iba",
|
||||||
"后图像和视频数据将会失效,开通": "Potom budú údaje o obrázku a videu neplatné a aktivované",
|
"后图像和视频数据将会失效,开通": "Potom budú údaje o obrázku a videu neplatné a aktivované",
|
||||||
"云存会员": "Členstvo v cloudovom úložisku",
|
"云存会员": "Členstvo v cloudovom úložisku",
|
||||||
"服务,图像视频信息随心存!": "Informácie o službách, obrázkoch a videách sú vo vašom srdci!"
|
"服务,图像视频信息随心存!": "Informácie o službách, obrázkoch a videách sú vo vašom srdci!",
|
||||||
|
"图像": "obraz",
|
||||||
|
"视频": "Video"
|
||||||
}
|
}
|
||||||
@ -1165,5 +1165,7 @@
|
|||||||
"您的图像和视频数据仅保留": "Ваши подаци о слици и видео записима се задржавају само",
|
"您的图像和视频数据仅保留": "Ваши подаци о слици и видео записима се задржавају само",
|
||||||
"后图像和视频数据将会失效,开通": "Након тога, сликовни и видео подаци ће бити неважећи и активирани",
|
"后图像和视频数据将会失效,开通": "Након тога, сликовни и видео подаци ће бити неважећи и активирани",
|
||||||
"云存会员": "Чланство у облаку за складиштење",
|
"云存会员": "Чланство у облаку за складиштење",
|
||||||
"服务,图像视频信息随心存!": "Сервис , слике и видео информације су у вашем срцу!"
|
"服务,图像视频信息随心存!": "Сервис , слике и видео информације су у вашем срцу!",
|
||||||
|
"图像": "Слика",
|
||||||
|
"视频": "Пријава"
|
||||||
}
|
}
|
||||||
@ -1165,5 +1165,7 @@
|
|||||||
"您的图像和视频数据仅保留": "Dina bild- och videodata sparas endast",
|
"您的图像和视频数据仅保留": "Dina bild- och videodata sparas endast",
|
||||||
"后图像和视频数据将会失效,开通": "Efter det kommer bild- och videodata att vara ogiltiga och aktiverade",
|
"后图像和视频数据将会失效,开通": "Efter det kommer bild- och videodata att vara ogiltiga och aktiverade",
|
||||||
"云存会员": "Medlemskap i molnlagring",
|
"云存会员": "Medlemskap i molnlagring",
|
||||||
"服务,图像视频信息随心存!": "Service, bild- och videoinformation finns i ditt hjärta!"
|
"服务,图像视频信息随心存!": "Service, bild- och videoinformation finns i ditt hjärta!",
|
||||||
|
"图像": "bild",
|
||||||
|
"视频": "Video"
|
||||||
}
|
}
|
||||||
@ -1165,5 +1165,7 @@
|
|||||||
"您的图像和视频数据仅保留": "ระบบจะเก็บข้อมูลรูปภาพและวิดีโอของคุณไว้เท่านั้น",
|
"您的图像和视频数据仅保留": "ระบบจะเก็บข้อมูลรูปภาพและวิดีโอของคุณไว้เท่านั้น",
|
||||||
"后图像和视频数据将会失效,开通": "หลังจากนั้น ข้อมูลรูปภาพและวิดีโอจะไม่ถูกต้องและเปิดใช้งาน",
|
"后图像和视频数据将会失效,开通": "หลังจากนั้น ข้อมูลรูปภาพและวิดีโอจะไม่ถูกต้องและเปิดใช้งาน",
|
||||||
"云存会员": "สมาชิกที่เก็บข้อมูลบนคลาวด์",
|
"云存会员": "สมาชิกที่เก็บข้อมูลบนคลาวด์",
|
||||||
"服务,图像视频信息随心存!": "ข้อมูลบริการ รูปภาพ และวิดีโออยู่ที่หัวใจของคุณ!"
|
"服务,图像视频信息随心存!": "ข้อมูลบริการ รูปภาพ และวิดีโออยู่ที่หัวใจของคุณ!",
|
||||||
|
"图像": "ภาพ",
|
||||||
|
"视频": "วีดิทัศน์"
|
||||||
}
|
}
|
||||||
@ -1165,5 +1165,7 @@
|
|||||||
"您的图像和视频数据仅保留": "Görüntü ve video verileriniz yalnızca korunur",
|
"您的图像和视频数据仅保留": "Görüntü ve video verileriniz yalnızca korunur",
|
||||||
"后图像和视频数据将会失效,开通": "Bundan sonra, görüntü ve video verileri geçersiz olacak ve etkinleştirilecektir",
|
"后图像和视频数据将会失效,开通": "Bundan sonra, görüntü ve video verileri geçersiz olacak ve etkinleştirilecektir",
|
||||||
"云存会员": "Bulut Depolama Üyeliği",
|
"云存会员": "Bulut Depolama Üyeliği",
|
||||||
"服务,图像视频信息随心存!": "Servis, görüntü ve video bilgileri kalbinizde!"
|
"服务,图像视频信息随心存!": "Servis, görüntü ve video bilgileri kalbinizde!",
|
||||||
|
"图像": "resim",
|
||||||
|
"视频": "Video"
|
||||||
}
|
}
|
||||||
@ -1165,5 +1165,7 @@
|
|||||||
"您的图像和视频数据仅保留": "您的圖像和視頻數據僅保留",
|
"您的图像和视频数据仅保留": "您的圖像和視頻數據僅保留",
|
||||||
"后图像和视频数据将会失效,开通": "后圖像和視頻數據將會失效,開通",
|
"后图像和视频数据将会失效,开通": "后圖像和視頻數據將會失效,開通",
|
||||||
"云存会员": "雲存會員",
|
"云存会员": "雲存會員",
|
||||||
"服务,图像视频信息随心存!": "服務,圖像視頻資訊隨心存!"
|
"服务,图像视频信息随心存!": "服務,圖像視頻資訊隨心存!",
|
||||||
|
"图像": "圖像",
|
||||||
|
"视频": "視頻"
|
||||||
}
|
}
|
||||||
@ -1165,5 +1165,7 @@
|
|||||||
"您的图像和视频数据仅保留": "Ваші зображення та відеодані зберігаються лише",
|
"您的图像和视频数据仅保留": "Ваші зображення та відеодані зберігаються лише",
|
||||||
"后图像和视频数据将会失效,开通": "Після цього дані зображення та відео будуть недійсними та активованими",
|
"后图像和视频数据将会失效,开通": "Після цього дані зображення та відео будуть недійсними та активованими",
|
||||||
"云存会员": "Членство в хмарних сховищах",
|
"云存会员": "Членство в хмарних сховищах",
|
||||||
"服务,图像视频信息随心存!": "Сервіс, зображення та відео інформація у вашому серці!"
|
"服务,图像视频信息随心存!": "Сервіс, зображення та відео інформація у вашому серці!",
|
||||||
|
"图像": "образ",
|
||||||
|
"视频": "Відео"
|
||||||
}
|
}
|
||||||
@ -1165,5 +1165,7 @@
|
|||||||
"您的图像和视频数据仅保留": "آپ کی تصویر اور ویڈیو کا ڈیٹا صرف برقرار رکھا گیا ہے",
|
"您的图像和视频数据仅保留": "آپ کی تصویر اور ویڈیو کا ڈیٹا صرف برقرار رکھا گیا ہے",
|
||||||
"后图像和视频数据将会失效,开通": "اس کے بعد ، تصویر اور ویڈیو کا ڈیٹا غیر قانونی اور فعال ہوجائے گا۔",
|
"后图像和视频数据将会失效,开通": "اس کے بعد ، تصویر اور ویڈیو کا ڈیٹا غیر قانونی اور فعال ہوجائے گا۔",
|
||||||
"云存会员": "Cloud Storage Membership",
|
"云存会员": "Cloud Storage Membership",
|
||||||
"服务,图像视频信息随心存!": "خدمت، تصویر اور ویڈیو کی معلومات آپ کے دل میں ہیں!"
|
"服务,图像视频信息随心存!": "خدمت، تصویر اور ویڈیو کی معلومات آپ کے دل میں ہیں!",
|
||||||
|
"图像": "روپ",
|
||||||
|
"视频": "ویڈیو"
|
||||||
}
|
}
|
||||||
@ -1165,5 +1165,7 @@
|
|||||||
"您的图像和视频数据仅保留": "Dữ liệu hình ảnh và video của bạn chỉ được giữ lại",
|
"您的图像和视频数据仅保留": "Dữ liệu hình ảnh và video của bạn chỉ được giữ lại",
|
||||||
"后图像和视频数据将会失效,开通": "Sau đó, dữ liệu hình ảnh và video sẽ không hợp lệ và được kích hoạt",
|
"后图像和视频数据将会失效,开通": "Sau đó, dữ liệu hình ảnh và video sẽ không hợp lệ và được kích hoạt",
|
||||||
"云存会员": "Tư cách thành viên lưu trữ đám mây",
|
"云存会员": "Tư cách thành viên lưu trữ đám mây",
|
||||||
"服务,图像视频信息随心存!": "Thông tin dịch vụ, hình ảnh và video là trọng tâm của bạn!"
|
"服务,图像视频信息随心存!": "Thông tin dịch vụ, hình ảnh và video là trọng tâm của bạn!",
|
||||||
|
"图像": "ảnh",
|
||||||
|
"视频": "Video"
|
||||||
}
|
}
|
||||||
@ -1177,5 +1177,7 @@
|
|||||||
"您的图像和视频数据仅保留": "您的图像和视频数据仅保留",
|
"您的图像和视频数据仅保留": "您的图像和视频数据仅保留",
|
||||||
"后图像和视频数据将会失效,开通": "后图像和视频数据将会失效,开通",
|
"后图像和视频数据将会失效,开通": "后图像和视频数据将会失效,开通",
|
||||||
"云存会员": "云存会员",
|
"云存会员": "云存会员",
|
||||||
"服务,图像视频信息随心存!": "服务,图像视频信息随心存!"
|
"服务,图像视频信息随心存!": "服务,图像视频信息随心存!",
|
||||||
|
"图像": "图像",
|
||||||
|
"视频": "视频"
|
||||||
}
|
}
|
||||||
@ -426,7 +426,13 @@ class _DoorLockLogPageState extends State<DoorLockLogPage> with RouteAware {
|
|||||||
((timelineData.imagesUrl == null &&
|
((timelineData.imagesUrl == null &&
|
||||||
timelineData.videoUrl == null) ||
|
timelineData.videoUrl == null) ||
|
||||||
(timelineData.videoUrl == '' && timelineData.imagesUrl == ''));
|
(timelineData.videoUrl == '' && timelineData.imagesUrl == ''));
|
||||||
AppLog.log('isInvalid:${isInvalid}');
|
|
||||||
|
String typeText = '';
|
||||||
|
if (timelineData.recordType == 130) {
|
||||||
|
typeText = '图像'.tr;
|
||||||
|
} else if (timelineData.recordType == 220) {
|
||||||
|
typeText = '视频'.tr;
|
||||||
|
}
|
||||||
return GestureDetector(
|
return GestureDetector(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
Get.toNamed(
|
Get.toNamed(
|
||||||
@ -459,7 +465,11 @@ class _DoorLockLogPageState extends State<DoorLockLogPage> with RouteAware {
|
|||||||
children: [
|
children: [
|
||||||
TextSpan(
|
TextSpan(
|
||||||
text: _buildIDByType(timelineData) +
|
text: _buildIDByType(timelineData) +
|
||||||
(isInvalid ? '(' + '已失效'.tr + ')' : ''),
|
(isInvalid
|
||||||
|
? '(${typeText}' +
|
||||||
|
'已失效'.tr +
|
||||||
|
')'
|
||||||
|
: ''),
|
||||||
),
|
),
|
||||||
WidgetSpan(
|
WidgetSpan(
|
||||||
alignment: PlaceholderAlignment.middle,
|
alignment: PlaceholderAlignment.middle,
|
||||||
|
|||||||
@ -110,22 +110,8 @@ class ImageTransmissionLogic extends BaseGetXController {
|
|||||||
// 判断数据类型,进行分发处理
|
// 判断数据类型,进行分发处理
|
||||||
switch (contentType) {
|
switch (contentType) {
|
||||||
case TalkData_ContentTypeE.G711:
|
case TalkData_ContentTypeE.G711:
|
||||||
// // 第一帧到达时记录开始时间
|
// 没有开启所有和录音时不缓存和播放音频
|
||||||
if (_isFirstAudioFrame) {
|
if (!state.isOpenVoice.value && state.isRecordingAudio.value) {
|
||||||
_startAudioTime = currentTime;
|
|
||||||
_isFirstAudioFrame = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 计算音频延迟
|
|
||||||
final expectedTime = _startAudioTime + talkData.durationMs;
|
|
||||||
final audioDelay = currentTime - expectedTime;
|
|
||||||
|
|
||||||
// 如果延迟太大,清空缓冲区并直接播放
|
|
||||||
if (audioDelay > 500) {
|
|
||||||
state.audioBuffer.clear();
|
|
||||||
if (state.isOpenVoice.value) {
|
|
||||||
_playAudioFrames();
|
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (state.audioBuffer.length >= audioBufferSize) {
|
if (state.audioBuffer.length >= audioBufferSize) {
|
||||||
@ -212,7 +198,8 @@ class ImageTransmissionLogic extends BaseGetXController {
|
|||||||
|
|
||||||
/// 播放音频数据
|
/// 播放音频数据
|
||||||
void _playAudioData(TalkData talkData) async {
|
void _playAudioData(TalkData talkData) async {
|
||||||
if (state.isOpenVoice.value) {
|
if (state.isOpenVoice.value &&
|
||||||
|
state.isRecordingAudio.value == false) {
|
||||||
final list =
|
final list =
|
||||||
G711().decodeAndDenoise(talkData.content, true, 8000, 300, 150);
|
G711().decodeAndDenoise(talkData.content, true, 8000, 300, 150);
|
||||||
// // 将 PCM 数据转换为 PcmArrayInt16
|
// // 将 PCM 数据转换为 PcmArrayInt16
|
||||||
@ -565,7 +552,6 @@ class ImageTransmissionLogic extends BaseGetXController {
|
|||||||
|
|
||||||
//开始录音
|
//开始录音
|
||||||
Future<void> startProcessingAudio() async {
|
Future<void> startProcessingAudio() async {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (await state.voiceProcessor?.hasRecordAudioPermission() ?? false) {
|
if (await state.voiceProcessor?.hasRecordAudioPermission() ?? false) {
|
||||||
await state.voiceProcessor?.start(state.frameLength, state.sampleRate);
|
await state.voiceProcessor?.start(state.frameLength, state.sampleRate);
|
||||||
@ -656,12 +642,14 @@ class ImageTransmissionLogic extends BaseGetXController {
|
|||||||
List<int> encodedData = G711Tool.encode(applyGain, 0); // 0表示A-law
|
List<int> encodedData = G711Tool.encode(applyGain, 0); // 0表示A-law
|
||||||
_bufferedAudioFrames.addAll(encodedData);
|
_bufferedAudioFrames.addAll(encodedData);
|
||||||
|
|
||||||
|
|
||||||
// 启动定时发送器(仅启动一次)
|
// 启动定时发送器(仅启动一次)
|
||||||
if (_startProcessingAudioTimer == null && _bufferedAudioFrames.length > chunkSize) {
|
if (_startProcessingAudioTimer == null &&
|
||||||
_startProcessingAudioTimer = Timer.periodic(Duration(milliseconds: intervalMs), _sendAudioChunk);
|
_bufferedAudioFrames.length > chunkSize) {
|
||||||
|
_startProcessingAudioTimer =
|
||||||
|
Timer.periodic(Duration(milliseconds: intervalMs), _sendAudioChunk);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 错误监听
|
// 错误监听
|
||||||
void _onError(VoiceProcessorException error) {
|
void _onError(VoiceProcessorException error) {
|
||||||
AppLog.log(error.message!);
|
AppLog.log(error.message!);
|
||||||
|
|||||||
@ -493,7 +493,9 @@ class TalkViewNativeDecodeLogic extends BaseGetXController {
|
|||||||
|
|
||||||
/// 播放音频数据
|
/// 播放音频数据
|
||||||
void _playAudioData(TalkData talkData) async {
|
void _playAudioData(TalkData talkData) async {
|
||||||
if (state.isOpenVoice.value && state.isLoading.isFalse) {
|
if (state.isOpenVoice.value &&
|
||||||
|
state.isLoading.isFalse &&
|
||||||
|
state.isRecordingAudio.value == false) {
|
||||||
List<int> encodedData = G711Tool.decode(talkData.content, 0); // 0表示A-law
|
List<int> encodedData = G711Tool.decode(talkData.content, 0); // 0表示A-law
|
||||||
// 将 PCM 数据转换为 PcmArrayInt16
|
// 将 PCM 数据转换为 PcmArrayInt16
|
||||||
final PcmArrayInt16 fromList = PcmArrayInt16.fromList(encodedData);
|
final PcmArrayInt16 fromList = PcmArrayInt16.fromList(encodedData);
|
||||||
@ -970,7 +972,8 @@ class TalkViewNativeDecodeLogic extends BaseGetXController {
|
|||||||
// 判断数据类型,进行分发处理
|
// 判断数据类型,进行分发处理
|
||||||
switch (contentType) {
|
switch (contentType) {
|
||||||
case TalkData_ContentTypeE.G711:
|
case TalkData_ContentTypeE.G711:
|
||||||
if (!state.isOpenVoice.value) {
|
// 没有开启所有和录音时不缓存和播放音频
|
||||||
|
if (!state.isOpenVoice.value && state.isRecordingAudio.value) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (state.audioBuffer.length >= audioBufferSize) {
|
if (state.audioBuffer.length >= audioBufferSize) {
|
||||||
|
|||||||
@ -109,22 +109,8 @@ class TalkViewLogic extends BaseGetXController {
|
|||||||
// 判断数据类型,进行分发处理
|
// 判断数据类型,进行分发处理
|
||||||
switch (contentType) {
|
switch (contentType) {
|
||||||
case TalkData_ContentTypeE.G711:
|
case TalkData_ContentTypeE.G711:
|
||||||
// // 第一帧到达时记录开始时间
|
// 没有开启所有和录音时不缓存和播放音频
|
||||||
if (_isFirstAudioFrame) {
|
if (!state.isOpenVoice.value && state.isRecordingAudio.value) {
|
||||||
_startAudioTime = currentTime;
|
|
||||||
_isFirstAudioFrame = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 计算音频延迟
|
|
||||||
final expectedTime = _startAudioTime + talkData.durationMs;
|
|
||||||
final audioDelay = currentTime - expectedTime;
|
|
||||||
|
|
||||||
// 如果延迟太大,清空缓冲区并直接播放
|
|
||||||
if (audioDelay > 500) {
|
|
||||||
state.audioBuffer.clear();
|
|
||||||
if (state.isOpenVoice.value) {
|
|
||||||
_playAudioFrames();
|
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (state.audioBuffer.length >= audioBufferSize) {
|
if (state.audioBuffer.length >= audioBufferSize) {
|
||||||
@ -388,9 +374,11 @@ class TalkViewLogic extends BaseGetXController {
|
|||||||
if (state.videoBuffer.isNotEmpty) {
|
if (state.videoBuffer.isNotEmpty) {
|
||||||
final TalkData oldestFrame = state.videoBuffer.removeAt(0);
|
final TalkData oldestFrame = state.videoBuffer.removeAt(0);
|
||||||
if (oldestFrame.content.isNotEmpty) {
|
if (oldestFrame.content.isNotEmpty) {
|
||||||
state.listData.value = Uint8List.fromList(oldestFrame.content); // 备份原始数据
|
state.listData.value =
|
||||||
|
Uint8List.fromList(oldestFrame.content); // 备份原始数据
|
||||||
final int decodeStart = DateTime.now().millisecondsSinceEpoch;
|
final int decodeStart = DateTime.now().millisecondsSinceEpoch;
|
||||||
decodeImageFromList(Uint8List.fromList(oldestFrame.content)).then((ui.Image img) {
|
decodeImageFromList(Uint8List.fromList(oldestFrame.content))
|
||||||
|
.then((ui.Image img) {
|
||||||
final int decodeEnd = DateTime.now().millisecondsSinceEpoch;
|
final int decodeEnd = DateTime.now().millisecondsSinceEpoch;
|
||||||
state.currentImage.value = img;
|
state.currentImage.value = img;
|
||||||
_renderedFrameCount++;
|
_renderedFrameCount++;
|
||||||
@ -524,7 +512,7 @@ class TalkViewLogic extends BaseGetXController {
|
|||||||
|
|
||||||
final lockPeerId = StartChartManage().lockPeerId;
|
final lockPeerId = StartChartManage().lockPeerId;
|
||||||
final LockListInfoGroupEntity? lockListInfoGroupEntity =
|
final LockListInfoGroupEntity? lockListInfoGroupEntity =
|
||||||
await Storage.getLockMainListData();
|
await Storage.getLockMainListData();
|
||||||
if (lockListInfoGroupEntity != null) {
|
if (lockListInfoGroupEntity != null) {
|
||||||
lockListInfoGroupEntity!.groupList?.forEach((element) {
|
lockListInfoGroupEntity!.groupList?.forEach((element) {
|
||||||
final lockList = element.lockList;
|
final lockList = element.lockList;
|
||||||
@ -562,7 +550,6 @@ class TalkViewLogic extends BaseGetXController {
|
|||||||
|
|
||||||
//开始录音
|
//开始录音
|
||||||
Future<void> startProcessingAudio() async {
|
Future<void> startProcessingAudio() async {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (await state.voiceProcessor?.hasRecordAudioPermission() ?? false) {
|
if (await state.voiceProcessor?.hasRecordAudioPermission() ?? false) {
|
||||||
await state.voiceProcessor?.start(state.frameLength, state.sampleRate);
|
await state.voiceProcessor?.start(state.frameLength, state.sampleRate);
|
||||||
@ -653,10 +640,11 @@ class TalkViewLogic extends BaseGetXController {
|
|||||||
List<int> encodedData = G711Tool.encode(applyGain, 0); // 0表示A-law
|
List<int> encodedData = G711Tool.encode(applyGain, 0); // 0表示A-law
|
||||||
_bufferedAudioFrames.addAll(encodedData);
|
_bufferedAudioFrames.addAll(encodedData);
|
||||||
|
|
||||||
|
|
||||||
// 启动定时发送器(仅启动一次)
|
// 启动定时发送器(仅启动一次)
|
||||||
if (_startProcessingAudioTimer == null && _bufferedAudioFrames.length > chunkSize) {
|
if (_startProcessingAudioTimer == null &&
|
||||||
_startProcessingAudioTimer = Timer.periodic(Duration(milliseconds: intervalMs), _sendAudioChunk);
|
_bufferedAudioFrames.length > chunkSize) {
|
||||||
|
_startProcessingAudioTimer =
|
||||||
|
Timer.periodic(Duration(milliseconds: intervalMs), _sendAudioChunk);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user