FMUSER Bezdrátový přenos videa a zvuku snadnější!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> afrikánština
sq.fmuser.org -> albánština
ar.fmuser.org -> arabština
hy.fmuser.org -> Arménský
az.fmuser.org -> Ázerbájdžánština
eu.fmuser.org -> baskičtina
be.fmuser.org -> běloruský
bg.fmuser.org -> Bulgarian
ca.fmuser.org -> Katalánština
zh-CN.fmuser.org -> čínština (zjednodušená)
zh-TW.fmuser.org -> Čínsky (zjednodušeně)
hr.fmuser.org -> chorvatština
cs.fmuser.org -> čeština
da.fmuser.org -> dánština
nl.fmuser.org -> Dutch
et.fmuser.org -> estonština
tl.fmuser.org -> filipínský
fi.fmuser.org -> finština
fr.fmuser.org -> French
gl.fmuser.org -> galicijština
ka.fmuser.org -> gruzínština
de.fmuser.org -> němčina
el.fmuser.org -> Greek
ht.fmuser.org -> haitská kreolština
iw.fmuser.org -> hebrejština
hi.fmuser.org -> hindština
hu.fmuser.org -> Hungarian
is.fmuser.org -> islandština
id.fmuser.org -> Indonéština
ga.fmuser.org -> Irština
it.fmuser.org -> Italian
ja.fmuser.org -> japonština
ko.fmuser.org -> korejština
lv.fmuser.org -> lotyština
lt.fmuser.org -> Litevština
mk.fmuser.org -> makedonština
ms.fmuser.org -> Malajština
mt.fmuser.org -> maltština
no.fmuser.org -> Norwegian
fa.fmuser.org -> perština
pl.fmuser.org -> polština
pt.fmuser.org -> portugalština
ro.fmuser.org -> Rumunština
ru.fmuser.org -> ruština
sr.fmuser.org -> srbština
sk.fmuser.org -> slovenština
sl.fmuser.org -> Slovinština
es.fmuser.org -> španělština
sw.fmuser.org -> svahilština
sv.fmuser.org -> švédština
th.fmuser.org -> Thai
tr.fmuser.org -> turečtina
uk.fmuser.org -> ukrajinština
ur.fmuser.org -> urdština
vi.fmuser.org -> Vietnamská
cy.fmuser.org -> velština
yi.fmuser.org -> Jidiš
3. sběr
Akvizice zahrnuje hlavně dva aspekty: pořizování videa a pořizování zvuku. Video sbírá kamera, což zahrnuje příslušnou činnost kamery a nastavení parametrů kamery. Vzhledem k rozdílům ve fotoaparátech různých výrobců mobilních telefonů existují v tomto ohledu některá úskalí, která budou popsána v článku o fotoaparátu. Zvuk se shromažďuje prostřednictvím mikrofonu. Mikrofony různých mobilních telefonů podporují různé vzorkovací frekvence zvuku a někdy je nutné zvuk zrušit, aby byla podporována funkce mikrofonu.
Klíčové body technologie snímání videa:
Zkontrolujte, zda lze kameru používat;
Obrázek zachycený fotoaparátem je vodorovný a zachycený obrázek je před zobrazením nutné do určité míry otočit;
Při snímání fotoaparátem si můžete vybrat z řady velikostí snímků. Pokud velikost zachyceného obrazu není v souladu s velikostí obrazovky mobilního telefonu, je nutné speciální zpracování;
Fotoaparát telefonu Android má řadu stavů a odpovídající provoz fotoaparátu musí být ve správném stavu;
Mnoho parametrů fotoaparátu telefonu Android má problémy s kompatibilitou a tyto problémy s kompatibilitou je třeba lépe řešit.
Klíčové body technologie snímání zvuku:
Zkontrolujte, zda lze mikrofon použít;
Potřeba detekovat podporu mobilního telefonu pro určitou vzorkovací frekvenci zvuku;
V některých případech je nutné provést zpracování zrušení ozvěny u zvuku;
Během snímání zvuku nastavte správnou velikost vyrovnávací paměti.
Poznámka: O sbírce bude později speciální článek
4. zpracování
Zpracování videa
Krása je nyní téměř standardní konfigurací softwaru pro živé vysílání mobilních telefonů. Po zkrášlení má hostitel vyšší vzhled a je pro fanoušky atraktivnější. Existují také některé aplikace pro živé vysílání Android, které dokážou rozpoznat tvář hostitele a přidat zábavné animace. Speciální efekty, někdy také musíme do videa přidat vodoznak.
Ve skutečnosti je zkrášlování videa a přidávání speciálních efektů zpracováváno prostřednictvím OpenGL. V systému Android existuje GLSurfaceView, který je podobný SurfaceView, ale lze jej vykreslit pomocí Renderer. Texturu lze generovat pomocí OpenGL, SurfaceTexture lze generovat prostřednictvím ID textury a SurfaceTexture lze předat fotoaparátu a nakonec se prostřednictvím textury propojí obrazovka náhledu kamery a OpenGL, takže lze pomocí OpenGL provádět řadu operací. .
Celý proces zkrášlování není nic jiného než generování nové textury pomocí technologie FBO v OpenGL na základě textury zobrazené v náhledu kamery a poté pomocí nové textury nakreslete na onDrawFrame () v Rendereru. Přidáním vodoznaku je nejprve převést obrázek na texturu a poté použít OpenGL pro kreslení. Přidání speciálních efektů dynamického přívěsku je komplikovanější. Nejprve je nutné provést algoritmickou analýzu k identifikaci odpovídajících částí lidské tváře na základě aktuálního náhledu a poté nakreslit odpovídající obrázky na každou odpovídající část. Realizace celého procesu je poněkud obtížná.
Následující obrázek je vývojovým diagramem celého kosmetického procesu:
Proces krásy
Na následujícím obrázku jsou velmi dobře znázorněny efekty krásy a animace.
Krása
Efekty animace a vodoznaky
Poznámka: O OpenGL a realizaci celého procesu bude speciální článek.
Zvukové zpracování
V některých případech musí hostitel přidat několik dalších zvuků ke zvýšení atmosféry živého vysílání, jako je potlesk atd. Jedním ze způsobů, jak se s tím vypořádat, je přehrát další zvuk přímo, aby jej mikrofon shromáždil a poté jej společně nahrál, ale tento druh zpracování nebude fungovat, když kotva nosí sluchátka nebo potřebuje provést zpracování zrušení ozvěny . Vzhledem k tomu, že do našeho projektu nebyla přidána odpovídající funkce, není v současné době k dispozici žádná relevantní zkušenost, kterou bychom mohli sdílet, můžeme tuto funkci přidat později a poté ji sdílet s vámi.
5. kódování
Prostřednictvím kamery a mikrofonu můžeme shromažďovat odpovídající obrazová a zvuková data, ale jedná se o nezpracovaná data v pevném formátu. Obecně řečeno, kamera sbírá jeden snímek po snímku a mikrofon sbírá zvuková data PCM. Pokud jsou tato data odesílána přímo, je množství dat často velmi velké, což vede k velkému plýtvání šířkou pásma, takže je často nutné před odesláním kódovat video a zvuk.
Kódování videa
1. Prediktivní kódování
Jak všichni víme, obraz se skládá z mnoha takzvaných pixelů. Velké množství statistik ukazuje, že mezi pixely ve stejném obrázku existuje silná korelace. Čím kratší je vzdálenost mezi dvěma pixely, tím silnější je korelace. Laicky řečeno, čím blíže jsou hodnoty dvou pixelů. Lidé proto mohou použít tuto korelaci mezi pixely k provádění kompresního kódování. Tato metoda komprese se nazývá intra-frame prediction coding. Nejen to, korelace mezi sousedními snímky je obecně silnější než korelace mezi pixely v rámci a kompresní poměr je také větší. Je vidět, že pomocí korelace mezi pixely (uvnitř snímku) a korelace mezi snímky, tj. Nalezení odpovídajícího referenčního pixelu nebo referenčního snímku jako predikované hodnoty, lze realizovat kódování komprese videa.
2. Transformujte kódování
Velké množství statistik ukazuje, že videosignál obsahuje energeticky nejnáročnější stejnosměrné a nízkofrekvenční složky, tj. Plochou část obrazu, a malé množství vysokofrekvenčních složek, tj. Podrobnosti o obraz. Proto lze pro kódování videa použít jinou metodu. Poté, co obraz podstoupí určitou matematickou transformaci, je získán obraz v transformované doméně (jak je znázorněno na obrázku), kde u a v jsou souřadnice prostorové frekvence.
Transformační kódování
3. Kódování založené na křivkách
Kódování založené na vlnových formách používá blokovou hybridní metodu kódování, která kombinuje prediktivní kódování a transformační kódování. Aby se snížila složitost kódování a usnadnilo provádění operace kódování videa, při použití metody hybridního kódování nejprve rozdělte obraz na bloky pevné velikosti, jako je blok 8 × 8 (tj. 8 řádků na blok, 8 pixelů na řádek), blok 16 × 16 (16 řádků na blok, 16 pixelů na řádek) atd., a pak blok komprimujte a zakódujte.
Od doby, kdy ITU-T vydal první standard pro kódování digitálního videa H.261 v roce 1989, postupně vydal standardy pro kódování videa, jako je H.263, a standardy pro multimediální terminály, jako jsou H.320 a H.323. Skupina Moving Picture Experts Group (MPEG) podle ISO definovala mezinárodní standardy kódování komprese MPEG-1, MPEG-2, MPEG-4 a dalších zábavních a digitálních TV.
V březnu 2003 vyhlásila společnost ITU-T standard kódování videa H.264. Ve srovnání s předchozími standardy nejen výrazně zlepšuje kompresi videa, ale také má dobrou síťovou afinitu, zejména pro IP internet, bezdrátovou mobilní síť a další výkon přenosu videa v síti, který je snadno chybný, snadno blokovatelný a není snadné zaručit QoS . . Všechna tato kódování videa používají blokové hybridní kódování, což jsou všechny kódování založené na křivkách.
4. Obsahové kódování
K dispozici je také technologie kódování na základě obsahu, kdy je obrazový snímek nejprve rozdělen na oblasti odpovídající různým objektům a poté kódován. Konkrétně kóduje tvar, pohyb a texturu různých objektů. V nejjednodušším případě se k popisu tvaru objektu používá dvourozměrný obrys, pohybový vektor k popisu jeho stavu pohybu a textura je popsána barevným průběhem.
Když jsou známy typy objektů ve videosekvenci, lze použít kódování založené na znalostech nebo modelu. Například pro lidské tváře byly vyvinuty některé předdefinované drátové modely, které kódují rysy obličeje. V tuto chvíli je účinnost kódování velmi vysoká a k popisu jeho vlastností je zapotřebí jen pár bitů. U výrazů obličeje (například naštvaný, šťastný atd.) Lze možné chování kódovat sémantikou. Protože počet možných chování objektu je velmi malý, lze dosáhnout velmi vysoké účinnosti kódování.
Metoda kódování přijatá MPEG-4 je jak blokové hybridní kódování, tak metoda kódování na základě obsahu.
5. Měkké a tvrdé pletení
Existují dva způsoby, jak implementovat kódování videa na platformě Android, jeden je měkké kódování a druhý je tvrdé kódování. Pro měkké úpravy se často spoléhá na procesor a k provádění kódování využívá výpočetní výkon procesoru. Můžeme například stáhnout knihovnu kódování x264, napsat příslušné rozhraní jni a poté předat odpovídající obrazová data. Po zpracování knihovnou x264 se původní obrázek převede na video ve formátu h264.
Pevný kód používá MediaCodec poskytovaný samotným Androidem. Chcete-li použít MediaCodec, musíte předat odpovídající data. Těmito daty mohou být obrazové informace yuv nebo povrch. Obecně se doporučuje povrch, který je efektivnější. Surface přímo používá lokální vyrovnávací paměť pro video data, aniž by je mapovala nebo kopírovala do ByteBuffers; proto bude tento přístup účinnější. Když používáte Surface, obvykle nemůžete přímo přistupovat k původním datům videa, ale můžete použít třídu ImageReader pro přístup k nespolehlivým dekódovaným (nebo původním) snímkům videa. To může být stále efektivnější než použití ByteBuffers, protože některé místní vyrovnávací paměti lze namapovat na přímé ByteBuffers. Při použití režimu ByteBuffer můžete pro přístup k původnímu datovému rámci videa použít třídu Image a metody getInput / OutputImage (int).
Poznámka: Následující článek konkrétně popisuje, jak provádět kódování videa
Audio Coding
Program AudioRecord lze v systému Android použít k záznamu zvuku a zaznamenaný zvuk je zvuk PCM. Chcete-li vyjádřit zvuk v počítačovém jazyce, musíte zvuk digitalizovat. Nejběžnějším způsobem digitalizace zvuku je pulzní kódová modulace (PCM). Zvuk prochází mikrofonem a je převeden na řadu signálů o změnách napětí. Způsob, jak převést takový signál do formátu PCM, je použít tři parametry k reprezentaci zvuku. Jsou to: počet kanálů, počet vzorkovacích bitů a vzorkovací frekvence.
1. Vzorkovací frekvence
To znamená vzorkovací frekvence, která odpovídá počtu případů, kdy je zvukový vzorek získán za sekundu. Čím vyšší je vzorkovací frekvence, tím lepší je kvalita zvuku a realističtější reprodukce zvuku, ale zároveň zabírá více zdrojů. Kvůli omezenému rozlišení lidského ucha nelze rozlišit příliš vysokou frekvenci. Na 22bitových zvukových kartách je 44KHz, 16KHz a další úrovně. Mezi nimi 22KHz odpovídá kvalitě zvuku běžného FM vysílání a 44KHz odpovídá kvalitě zvuku CD. Aktuální společná vzorkovací frekvence nepřesahuje 48 KHz.
2. Počet vzorkovacích bitů
To znamená, že hodnota vzorkování nebo hodnota vzorkování (tj. Je kvantována amplituda vzorku vzorkování). Jedná se o parametr používaný k měření fluktuace zvuku a lze o něm také říci, že jde o rozlišení zvukové karty. Čím větší je jeho hodnota, tím vyšší je rozlišení a silnější zvukový výkon.
V počítači je počet vzorkovacích bitů obecně 8 bitů a 16 bitů, ale mějte na paměti, že 8 bitů neznamená rozdělení ordinátu na 8 částí, ale je rozdělen na 2 až 8. sílu, což je 256 částí; totéž platí pro 16 bitů. Rozděluje souřadnici na 2 až 16. sílu 65,536 XNUMX.
3. Počet kanálů
Je snadné pochopit, že existují monofonní a stereofonní. Monofonní zvuk může produkovat pouze jeden reproduktor (některé jsou také zpracovány do dvou reproduktorů pro výstup zvuku stejného kanálu) a stereofonní zvuk může vytvořit dva reproduktory Oba zvuky (obecně existuje dělba práce mezi levým a pravým kanálem), abyste více cítili prostorový efekt.
Nyní tedy můžeme získat vzorec pro kapacitu souboru pcm:
Úložná kapacita = (vzorkovací frekvence ✖️ počet vzorkovacích bitů ✖️ kanál ✖️ čas) ➗ 8 (jednotka: počet bytů)
Pokud je veškerý zvuk přenášen ve formátu PCM, je obsazená šířka pásma relativně velká, takže je třeba zvuk před přenosem kódovat.
Existuje již několik široce používaných zvukových formátů, například wav, MIDI, MP3, WMA, AAC, Ogg atd. Ve srovnání s formátem pcm tyto formáty komprimují zvuková data, což může snížit šířku pásma přenosu.
Kódování zvuku lze také rozdělit na dva typy: měkké kódování a tvrdé kódování. Pro měkkou editaci si stáhněte příslušnou knihovnu kódování, napište odpovídající jni a poté předejte data pro kódování. Pevný kód používá MediaCodec poskytovaný samotným Androidem.
Poznámka: Následující článek konkrétně popisuje, jak provádět kódování zvuku
6, balení
Video a zvuk musí během přenosu definovat odpovídající formát, aby mohl být správně analyzován, když je přenášen na opačný konec.
1. HTTP-FLV
V éře Web 2.0 jsou nejoblíbenějšími typy webů přirozeně Youtube ze zahraničí, weby Youku a Tudou v Číně. O videoobsahu poskytovaném takovými stránkami lze říci, že mají své vlastní přednosti, ale všechny bez výjimky používají Flash jako nosič přehrávání videa. Technickým základem podporujícím tyto video weby je Flash Video (FLV). FLV je zbrusu nový formát streamovaného mediálního videa, který využívá široce používanou platformu Flash Player na webových stránkách k integraci videa do animace Flash. Jinými slovy, pokud mohou návštěvníci webových stránek sledovat animace Flash, mohou přirozeně sledovat videa ve formátu FLV bez nutnosti instalace dalších video zásuvných modulů. Používání videí FLV přináší diseminaci videa velké pohodlí.
HTTP-FLV zapouzdřuje zvuková a obrazová data do FLV a poté je přenáší klientovi prostřednictvím protokolu HTTP. Jako uploader je na server nutné přenášet pouze video a audio ve formátu FLV.
Obecně řečeno, video a zvuk ve formátu FLV obecně používají pro video formát h264 a zvuk obecně používá formát AAC-LC.
Formát FLV má nejprve přenášet informace záhlaví FLV, poté přenášet metadata s parametry videa a zvuku (Metadata), poté přenášet informace o parametrech videa a zvuku a poté přenášet obrazová a zvuková data.
Poznámka: Následující článek podrobně popisuje FLV
2. RTMP
RTMP je zkratka pro Real Time Messaging Protocol. Protokol je založen na TCP a je to klastr protokolů, včetně základního protokolu RTMP a RTMPT / RTMPS / RTMPE a mnoha dalších variant. RTMP je síťový protokol určený pro datovou komunikaci v reálném čase. Používá se hlavně pro zvukovou, obrazovou a datovou komunikaci mezi platformou Flash / AIR a streamovacím médiem / interaktivním serverem, který podporuje protokol RTMP.
Protokol RTMP je přenosový protokol v reálném čase spuštěný společností Adobe, který se používá hlavně pro přenos zvukových a obrazových toků v reálném čase na základě formátu flv. Po získání kódovaných obrazových a zvukových dat je nutné nejprve zabalit soubor FLV a poté zabalit do formátu rtmp a poté jej přenést.
Chcete-li pro přenos použít formát RTMP, musíte se nejprve připojit k serveru, poté vytvořit stream, poté stream publikovat a poté přenést odpovídající obrazová a zvuková data. Celý přenos je definován zprávami, rtmp definuje různé formy zpráv a aby se zprávy dobře odesílaly, jsou zprávy rozděleny do bloků, což komplikuje celý protokol.
Poznámka: aLater články budou podrobně popisovat RTMP
Existuje také několik dalších forem protokolů, například RTP atd. Obecné zásady jsou podobné, takže je nebudu vysvětlovat jeden po druhém.
7. špatné síťové zpracování
Video a zvuk lze odeslat včas v dobré síti, aniž by došlo k místnímu hromadění obrazových a zvukových dat, efekt živého vysílání je plynulý a zpoždění malé. Pokud ve špatném síťovém prostředí nelze odeslat zvuková a obrazová data, musíme zvuková a obrazová data zpracovat. Obecně existují čtyři způsoby zpracování obrazových a zvukových dat ve špatném síťovém prostředí: návrh vyrovnávací paměti, detekce sítě, zpracování ztráty rámce a zpracování snížení přenosové rychlosti.
1. Návrh vyrovnávací paměti
Video a audio data se přenášejí do vyrovnávací paměti a odesílatel získává data z vyrovnávací paměti a odesílá je, čímž vytváří asynchronní režim producent-spotřebitel. Producent potřebuje pouze poslat shromážděná a kódovaná obrazová a zvuková data do vyrovnávací paměti a spotřebitel je odpovědný za odebrání dat z vyrovnávací paměti a jejich odeslání.
Video a audio buffer
Na obrázku výše je zobrazen pouze snímek videa a uvnitř jsou samozřejmě odpovídající zvukové snímky. K vytvoření modelu asynchronního producenta a spotřebitele poskytla Java dobrou třídu. Protože ztrátu rámce, vložení, odebrání atd. Je třeba zpracovat později, je zřejmé, že LinkedBlockingQueue je velmi dobrá volba.
2. Detekce sítě
Důležitým procesem v procesu špatného síťového zpracování je detekce sítě. Když se síť zhorší, lze ji rychle detekovat a poté odpovídajícím způsobem zpracovat. Díky tomu bude reakce sítě citlivější a účinek bude mnohem lepší.
Vypočítáváme data ve vstupní vyrovnávací paměti za sekundu a data odesílaná v reálném čase. Pokud jsou odesílaná data menší než data ve vstupní vyrovnávací paměti, není šířka pásma sítě dobrá. V tuto chvíli se budou data ve vyrovnávací paměti stále zvyšovat. Aktivujte odpovídající mechanismus.
3. Zpracování zrušeného rámečku
Když je detekována degradace sítě, ztráta rámce je dobrý mechanismus odezvy. Po kódování videa jsou klíčové snímky a neklíčové snímky. Klíčový snímek je úplný obrázek a neklíčový snímek popisuje relativní změnu obrazu.
Strategie vynechání rámce může být definována sama. Jedna věc, kterou je třeba si uvědomit, je: pokud chcete zrušit P snímky (neklíčové snímky), musíte zrušit všechny neklíčové snímky mezi dvěma klíčovými snímky, jinak se objeví mozaiky. Návrh strategie ztráty rámce se liší v závislosti na potřebách a můžete si ji navrhnout sami.
4. Míra snížení kódu
Pokud se v systému Android pro kódování používá tvrdé kódování, ve špatném síťovém prostředí můžeme změnit bitovou rychlost pevného kódování v reálném čase, aby bylo živé vysílání plynulejší. Když se zjistí, že síťové prostředí je špatné, můžeme také snížit bitovou rychlost videa a zvuku při rušení snímků. Když je verze Android sdk větší nebo rovna 19, můžete předat parametry do MediaCodec a změnit bitovou rychlost dat z pevně kódovaného kodéru.
Přenosová rychlost svazku = nový balíček (); bitrate.putInt (MediaCodec.PARAMETER_KEY_VIDEO_BITRATE, b / s * 1024);
mMediaCodec.setParameters (bitrate);
8. odeslat
Po různých zpracováních je třeba data konečně odeslat, tento krok je relativně jednoduchý. Ať už je to HTTP-FLV nebo RTMP, k navázání spojení používáme TCP. Před živým vysíláním se musíte připojit k serveru prostřednictvím zásuvky a ověřit, zda se můžete připojit k serveru. Po připojení použijte tuto zásuvku k odeslání dat na server a po odeslání dat zásuvku zavřete.
|
Zadejte e-mail a získejte překvapení
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> afrikánština
sq.fmuser.org -> albánština
ar.fmuser.org -> arabština
hy.fmuser.org -> Arménský
az.fmuser.org -> Ázerbájdžánština
eu.fmuser.org -> baskičtina
be.fmuser.org -> běloruský
bg.fmuser.org -> Bulgarian
ca.fmuser.org -> Katalánština
zh-CN.fmuser.org -> čínština (zjednodušená)
zh-TW.fmuser.org -> Čínsky (zjednodušeně)
hr.fmuser.org -> chorvatština
cs.fmuser.org -> čeština
da.fmuser.org -> dánština
nl.fmuser.org -> Dutch
et.fmuser.org -> estonština
tl.fmuser.org -> filipínský
fi.fmuser.org -> finština
fr.fmuser.org -> French
gl.fmuser.org -> galicijština
ka.fmuser.org -> gruzínština
de.fmuser.org -> němčina
el.fmuser.org -> Greek
ht.fmuser.org -> haitská kreolština
iw.fmuser.org -> hebrejština
hi.fmuser.org -> hindština
hu.fmuser.org -> Hungarian
is.fmuser.org -> islandština
id.fmuser.org -> Indonéština
ga.fmuser.org -> Irština
it.fmuser.org -> Italian
ja.fmuser.org -> japonština
ko.fmuser.org -> korejština
lv.fmuser.org -> lotyština
lt.fmuser.org -> Litevština
mk.fmuser.org -> makedonština
ms.fmuser.org -> Malajština
mt.fmuser.org -> maltština
no.fmuser.org -> Norwegian
fa.fmuser.org -> perština
pl.fmuser.org -> polština
pt.fmuser.org -> portugalština
ro.fmuser.org -> Rumunština
ru.fmuser.org -> ruština
sr.fmuser.org -> srbština
sk.fmuser.org -> slovenština
sl.fmuser.org -> Slovinština
es.fmuser.org -> španělština
sw.fmuser.org -> svahilština
sv.fmuser.org -> švédština
th.fmuser.org -> Thai
tr.fmuser.org -> turečtina
uk.fmuser.org -> ukrajinština
ur.fmuser.org -> urdština
vi.fmuser.org -> Vietnamská
cy.fmuser.org -> velština
yi.fmuser.org -> Jidiš
FMUSER Bezdrátový přenos videa a zvuku snadnější!
Kontakt
Adresa:
Budova č. 305 Room HuiLan No.273 Huanpu Road Guangzhou Čína 510620
Kategorie
Newsletter