FMUSER Wirless Verzend video en audio eenvoudiger!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> Albanees
ar.fmuser.org -> Arabisch
hy.fmuser.org -> Armenian
az.fmuser.org -> Azerbeidzjaans
eu.fmuser.org -> Baskisch
be.fmuser.org -> Wit-Russisch
bg.fmuser.org -> Bulgarian
ca.fmuser.org -> Catalaans
zh-CN.fmuser.org -> Chinees (vereenvoudigd)
zh-TW.fmuser.org -> Chinees (traditioneel)
hr.fmuser.org -> Kroatisch
cs.fmuser.org -> Tsjechisch
da.fmuser.org -> Deens
nl.fmuser.org -> Nederlands
et.fmuser.org -> Ests
tl.fmuser.org -> Filipijns
fi.fmuser.org -> Fins
fr.fmuser.org -> Frans
gl.fmuser.org -> Galicisch
ka.fmuser.org -> Georgisch
de.fmuser.org -> Duits
el.fmuser.org -> Greek
ht.fmuser.org -> Haïtiaans Creools
iw.fmuser.org -> Hebreeuws
hi.fmuser.org -> Hindi
hu.fmuser.org -> Hungarian
is.fmuser.org -> IJslands
id.fmuser.org -> Indonesisch
ga.fmuser.org -> Iers
it.fmuser.org -> Italian
ja.fmuser.org -> Japans
ko.fmuser.org -> Koreaans
lv.fmuser.org -> Lets
lt.fmuser.org -> Lithuanian
mk.fmuser.org -> Macedonisch
ms.fmuser.org -> Maleis
mt.fmuser.org -> Maltees
no.fmuser.org -> Norwegian
fa.fmuser.org -> Perzisch
pl.fmuser.org -> Pools
pt.fmuser.org -> Portugees
ro.fmuser.org -> Roemeens
ru.fmuser.org -> Russisch
sr.fmuser.org -> Servisch
sk.fmuser.org -> Slowaaks
sl.fmuser.org -> Slovenian
es.fmuser.org -> Spaans
sw.fmuser.org -> Swahili
sv.fmuser.org -> Zweeds
th.fmuser.org -> Thai
tr.fmuser.org -> Turks
uk.fmuser.org -> Oekraïens
ur.fmuser.org -> Urdu
vi.fmuser.org -> Vietnamese
cy.fmuser.org -> Welsh
yi.fmuser.org -> Jiddisch
3. collectie
Acquisitie omvat hoofdzakelijk twee aspecten: video-acquisitie en audio-acquisitie. De video wordt verzameld door de camera, wat de relevante bediening van de camera en de parameterinstelling van de camera betreft. Door de verschillen in de camera's van verschillende mobiele telefoonfabrikanten zijn er in dit opzicht enkele valkuilen, die in het artikel over de camera zullen worden beschreven. Audio wordt verzameld via een microfoon. De microfoons van verschillende mobiele telefoons ondersteunen verschillende audiosamplingfrequenties, en soms moet de echo worden onderdrukt om de microfoonfunctie te ondersteunen.
Kernpunten van video-opnametechnologie:
Controleer of de camera kan worden gebruikt;
Het beeld dat door de camera is vastgelegd, is horizontaal en het vastgelegde beeld moet tot op zekere hoogte worden gedraaid voordat het wordt weergegeven;
Er is een reeks beeldformaten waaruit u kunt kiezen wanneer de camera opnamen maakt. Als de grootte van het vastgelegde beeld niet overeenkomt met de schermgrootte van de mobiele telefoon, is een speciale verwerking vereist;
De camera van de Android-telefoon heeft een aantal statussen en de bijbehorende werking van de camera moet in de juiste staat zijn;
Veel parameters van de Android-telefooncamera hebben compatibiliteitsproblemen, en deze compatibiliteitsproblemen moeten beter worden aangepakt.
Belangrijkste punten van audio-opnametechnologie:
Controleer of de microfoon kan worden gebruikt;
Noodzaak om de ondersteuning van de mobiele telefoon voor een bepaalde bemonsteringsfrequentie van audio te detecteren;
In sommige gevallen is het nodig om de echo-onderdrukking op de audio uit te voeren;
Stel de juiste buffergrootte in tijdens het vastleggen van audio.
Let op: er komt later een speciaal artikel over de collectie
4. verwerking
Video verwerking
Schoonheid is nu bijna een standaardconfiguratie van live-uitzendsoftware voor mobiele telefoons. Na verfraaiing ziet de gastheer er hoger uit en is hij aantrekkelijker voor fans. Er zijn ook enkele Android-toepassingen voor live-uitzendingen die het gezicht van de gastheer kunnen herkennen en leuke animaties kunnen toevoegen. Speciale effecten, soms moeten we ook een watermerk aan de video toevoegen.
In feite worden het verfraaien van video en het toevoegen van speciale effecten verwerkt via OpenGL. Er is GLSurfaceView in Android, dat vergelijkbaar is met SurfaceView, maar het kan worden weergegeven met Renderer. Texture kan worden gegenereerd via OpenGL, SurfaceTexture kan worden gegenereerd via de texture-ID en SurfaceTexture kan worden overgedragen aan Camera, en tenslotte zijn het cameravoorbeeldscherm en OpenGL verbonden via de texture, zodat een reeks bewerkingen kan worden uitgevoerd via OpenGL .
Het hele proces van verfraaiing is niets meer dan het genereren van een nieuwe textuur via de FBO-technologie in OpenGL op basis van de textuur die door de camera wordt bekeken, en vervolgens de nieuwe textuur gebruiken om te tekenen op het onDrawFrame () in de Renderer. Als u een watermerk toevoegt, converteert u eerst een afbeelding naar een textuur en gebruikt u vervolgens OpenGL om te tekenen. Het toevoegen van speciale effecten voor dynamische hangers is ingewikkelder. Ten eerste is het nodig om een algoritmische analyse uit te voeren om de corresponderende delen van het menselijk gezicht te identificeren op basis van de huidige voorbeeldafbeelding, en vervolgens de corresponderende afbeeldingen te tekenen op elk corresponderend onderdeel. De realisatie van het hele proces is enigszins moeilijk.
De volgende afbeelding is een stroomschema van het hele schoonheidsproces:
Schoonheidsproces
De onderstaande afbeelding laat de schoonheid en animatie-effecten heel goed zien.
Beauty
Animatie-effecten en watermerken
Let op: er komt een speciaal artikel over OpenGL en de realisatie van het hele proces.
Audio verwerking
In sommige gevallen moet de gastheer wat extra geluiden toevoegen om de sfeer van live-uitzendingen te verbeteren, zoals applaus enzovoort. Een manier om ermee om te gaan, is door het extra geluid rechtstreeks af te spelen, zodat de microfoon het opvangt en het vervolgens samen opneemt, maar dit soort verwerking werkt niet wanneer het anker een koptelefoon draagt of als het echo-onderdrukkingsverwerking op het geluid moet uitvoeren. . Aangezien de bijbehorende functie niet aan ons project is toegevoegd, is er voorlopig geen relevante ervaring om te delen, we kunnen deze functie later toevoegen en deze vervolgens met u delen.
5. codering
Via de camera en microfoon kunnen we de bijbehorende video- en audiogegevens verzamelen, maar dit zijn ruwe gegevens in een vast formaat. Over het algemeen verzamelt de camera één frame voor frame en de microfoon verzamelt PCM-audiogegevens. Als deze gegevens rechtstreeks worden verzonden, is de hoeveelheid gegevens vaak erg groot, wat resulteert in een grote verspilling van bandbreedte, dus het is vaak nodig om video en audio te coderen voordat u deze verzendt.
Videocodering
1. Voorspellende codering
Zoals we allemaal weten, is een afbeelding opgebouwd uit vele zogenaamde pixels. Uit een groot aantal statistieken blijkt dat er een sterke correlatie bestaat tussen pixels in dezelfde afbeelding. Hoe korter de afstand tussen twee pixels, hoe sterker de correlatie. In termen van de leek, hoe dichter de waarden van de twee pixels zijn. Daarom kunnen mensen deze correlatie tussen pixels gebruiken om compressiecodering uit te voeren. Deze compressiemethode wordt intra-frame voorspellingscodering genoemd. Niet alleen dat, de correlatie tussen aangrenzende frames is over het algemeen sterker dan de correlatie tussen pixels binnen een frame, en de compressieverhouding is ook groter. Het is duidelijk dat door gebruik te maken van de correlatie tussen pixels (intra-frame) en de correlatie tussen frames, dat wil zeggen het vinden van het corresponderende referentiepixel of referentieframe als de voorspelde waarde, videocompressiecodering kan worden gerealiseerd.
2. Transformeer codering
Uit een groot aantal statistieken blijkt dat het videosignaal de meest energie-intensieve gelijkstroom- en laagfrequente componenten bevat, dat wil zeggen het platte deel van het beeld, en een kleine hoeveelheid hoogfrequente componenten, dat wil zeggen de details van de beeld. Daarom kan een andere methode worden gebruikt voor videocodering. Nadat het beeld een bepaalde wiskundige transformatie heeft ondergaan, wordt het beeld in het getransformeerde domein verkregen (zoals weergegeven in de figuur), waarbij u en v respectievelijk de ruimtelijke frequentiecoördinaten zijn.
Transformeer codering
3. Op golfvormen gebaseerde codering
Op golfvormen gebaseerde codering maakt gebruik van een op blokken gebaseerde hybride coderingsmethode die voorspellende codering en transformatiecodering combineert. Om de coderingscomplexiteit te verminderen en de videocodering gemakkelijker uit te voeren, moet u bij gebruik van de hybride coderingsmethode eerst een afbeelding in blokken met een vaste grootte verdelen, zoals blok 8 × 8 (dat wil zeggen, 8 rijen per blok, 8 pixels per rij), blok 16 × 16 (16 regels per blok, 16 pixels per regel) enzovoort, en comprimeer en codeer vervolgens het blok.
Sinds ITU-T in 261 de eerste digitale videocoderingsstandaard-H.1989 uitbracht, heeft het achtereenvolgens videocoderingsstandaarden zoals H.263 en multimedia-terminalstandaarden zoals H.320 en H.323 uitgebracht. De Moving Picture Experts Group (MPEG) onder ISO heeft MPEG-1, MPEG-2, MPEG-4 en andere internationale standaarden voor het coderen van entertainment en digitale tv-compressie gedefinieerd.
In maart 2003 publiceerde ITU-T de H.264-norm voor videocodering. Het maakt niet alleen videocompressie aanzienlijk verbeterd in vergelijking met eerdere standaarden, maar heeft ook een goede netwerkaffiniteit, vooral voor IP-internet, draadloze mobiele netwerken en andere netwerkvideo-overdrachtsprestaties die gemakkelijk fouten maken, gemakkelijk te blokkeren en niet gemakkelijk QoS garanderen. . . Al deze videocodering maakt gebruik van blokgebaseerde hybride codering, die allemaal op golfvormen zijn gebaseerd.
4. Op inhoud gebaseerde codering
Er is ook een op inhoud gebaseerde coderingstechnologie, waarbij het videoframe eerst wordt verdeeld in gebieden die overeenkomen met verschillende objecten, en vervolgens wordt gecodeerd. Concreet codeert het de vorm, beweging en textuur van verschillende objecten. In het eenvoudigste geval wordt een tweedimensionale omtrek gebruikt om de vorm van een object te beschrijven, wordt een bewegingsvector gebruikt om de bewegingstoestand te beschrijven en wordt een textuur beschreven door een kleurgolfvorm.
Als de soorten objecten in de videosequentie bekend zijn, kan op kennis gebaseerde of modelgebaseerde codering worden gebruikt. Voor menselijke gezichten zijn bijvoorbeeld enkele vooraf gedefinieerde wireframes ontwikkeld om de kenmerken van het gezicht te coderen. Op dit moment is de coderingsefficiëntie erg hoog en zijn er slechts een paar bits nodig om de kenmerken ervan te beschrijven. Voor gezichtsuitdrukkingen (zoals boos, blij, etc.) kunnen mogelijke gedragingen worden gecodeerd door semantiek. Aangezien het aantal mogelijke gedragingen van een object erg klein is, kan een zeer hoge coderingsefficiëntie worden verkregen.
De coderingsmethode die door MPEG-4 wordt gebruikt, is zowel blokgebaseerde hybride codering als op inhoud gebaseerde coderingsmethode.
5. Zacht en hard breien
Er zijn twee manieren om videocodering op het Android-platform te implementeren, de ene is zachte codering en de andere is harde codering. Voor zachte bewerking is het vaak afhankelijk van de cpu en gebruikt het de rekenkracht van de cpu om codering uit te voeren. We kunnen bijvoorbeeld de x264-coderingsbibliotheek downloaden, de relevante jni-interface schrijven en vervolgens de bijbehorende afbeeldingsgegevens doorgeven. Na verwerking door de x264-bibliotheek wordt de originele afbeelding geconverteerd naar een video in h264-indeling.
De harde code maakt gebruik van de MediaCodec die door Android zelf wordt geleverd. Om MediaCodec te gebruiken, moet u de bijbehorende gegevens doorgeven. Deze gegevens kunnen je afbeeldingsinformatie of een Surface zijn. Het oppervlak wordt over het algemeen aanbevolen, wat efficiënter is. Surface gebruikt rechtstreeks lokale videogegevensbuffers zonder ze in kaart te brengen of te kopiëren naar ByteBuffers; daarom zal deze benadering efficiënter zijn. Wanneer je Surface gebruikt, heb je meestal niet rechtstreeks toegang tot de originele videogegevens, maar je kunt de ImageReader-klasse gebruiken om toegang te krijgen tot onbetrouwbare gedecodeerde (of originele) videoframes. Dit kan nog steeds efficiënter zijn dan het gebruik van ByteBuffers, omdat sommige lokale buffers kunnen worden toegewezen aan directe ByteBuffers. Als u de ByteBuffer-modus gebruikt, kunt u de methoden Image en getInput / OutputImage (int) gebruiken om toegang te krijgen tot het originele videodataframe.
Opmerking: in het volgende artikel wordt specifiek beschreven hoe u videocodering uitvoert
audio Coding
AudioRecord kan in Android worden gebruikt om geluid op te nemen, en het opgenomen geluid is PCM-geluid. Als u het geluid in computertaal wilt uitdrukken, moet u het geluid digitaliseren. De meest gebruikelijke manier om geluid te digitaliseren is via Pulse Code Modulation (PCM). Het geluid gaat door de microfoon en wordt omgezet in een reeks signalen van spanningsveranderingen. De manier om een dergelijk signaal naar PCM-formaat om te zetten, is door drie parameters te gebruiken om het geluid weer te geven. Dit zijn: het aantal kanalen, het aantal bemonsteringsbits en de bemonsteringsfrequentie.
1. Bemonsteringsfrequentie
Dat wil zeggen, de bemonsteringsfrequentie, die verwijst naar het aantal keren dat een geluidssample per seconde wordt verkregen. Hoe hoger de bemonsteringsfrequentie, hoe beter de geluidskwaliteit en hoe realistischer de geluidsweergave, maar neemt tegelijkertijd meer bronnen in beslag. Door de beperkte resolutie van het menselijk oor is een te hoge frequentie niet te onderscheiden. Er zijn 22 KHz, 44 KHz en andere niveaus in 16-bits geluidskaarten. Onder hen is 22 KHz gelijk aan de geluidskwaliteit van gewone FM-uitzendingen en 44 KHz is gelijk aan de geluidskwaliteit van CD. De huidige gemeenschappelijke bemonsteringsfrequentie is niet hoger dan 48 KHz.
2. Aantal bemonsteringsbits
Dat wil zeggen, de bemonsteringswaarde of bemonsteringswaarde (dat wil zeggen, de amplitude van het bemonsteringsmonster wordt gekwantiseerd). Het is een parameter die wordt gebruikt om de fluctuatie van het geluid te meten, en het kan ook de resolutie van de geluidskaart zijn. Hoe groter de waarde, hoe hoger de resolutie en hoe sterker het geluidsvermogen.
In de computer is het aantal bemonsteringsbits over het algemeen 8 bits en 16 bits, maar houd er rekening mee dat 8 bits niet betekent dat de ordinaat in 8 delen wordt verdeeld, maar verdeeld in 2 tot de 8ste macht, dat is 256 delen; hetzelfde geldt voor 16 bits. Het verdeelt de ordinaat in 2 tot de 16e macht van 65,536.
3. Aantal kanalen
Het is gemakkelijk te begrijpen dat er monofoon en stereofonisch zijn. Monofoon geluid kan alleen worden geproduceerd door één luidspreker (sommige worden ook verwerkt tot twee luidsprekers om hetzelfde kanaalgeluid uit te voeren), en stereo pcm kan twee luidsprekers maken Beide geluid (over het algemeen is er een taakverdeling tussen het linker- en rechterkanaal), zodat je het ruimtelijke effect beter kunt voelen.
Dus nu kunnen we de formule voor de capaciteit van het pcm-bestand krijgen:
Opslagcapaciteit = (bemonsteringsfrequentie ✖️ aantal bemonsteringsbits ✖️ kanaal ✖️ tijd) ➗ 8 (eenheid: aantal bytes)
Als de audio allemaal in het PCM-formaat wordt verzonden, is de gebruikte bandbreedte relatief groot, dus de audio moet vóór verzending worden gecodeerd.
Er zijn al een aantal veelgebruikte geluidsformaten, zoals wav, MIDI, MP3, WMA, AAC, Ogg, enz. In vergelijking met het pcm-formaat comprimeren deze formaten de geluidsgegevens, wat de transmissiebandbreedte kan verminderen.
De audiocodering kan ook worden onderverdeeld in twee typen: zachte codering en harde codering. Voor zachte bewerking downloadt u de corresponderende coderingsbibliotheek, schrijft u de corresponderende jni en geeft u de gegevens door voor codering. De harde code maakt gebruik van de MediaCodec die door Android zelf wordt geleverd.
Opmerking: in het volgende artikel wordt specifiek beschreven hoe u audiocodering uitvoert
6, verpakking
De video en audio moeten tijdens het overdrachtsproces het corresponderende formaat definiëren, zodat het correct kan worden geparseerd wanneer het naar het andere uiteinde wordt verzonden.
1. HTTP-FLV
In het Web 2.0-tijdperk zijn de meest populaire soorten websites natuurlijk YouTube uit het buitenland, Youku en Tudou-websites in China. Van de video-inhoud van dergelijke sites kan worden gezegd dat ze hun eigen verdiensten hebben, maar ze gebruiken allemaal Flash zonder uitzondering als een videoweergavedrager. De technische basis voor deze videosites is Flash Video (FLV). FLV is een gloednieuw videoformaat voor streaming media, dat gebruikmaakt van het veelgebruikte Flash Player-platform op webpagina's om video in Flash-animatie te integreren. Met andere woorden, zolang bezoekers van de website Flash-animaties kunnen bekijken, kunnen ze natuurlijk video's in FLV-formaat bekijken zonder dat ze extra video-plug-ins hoeven te installeren. Het gebruik van FLV-video's zorgt voor een groot gemak bij de verspreiding van video's.
HTTP-FLV kapselt audio- en videogegevens in FLV in en verzendt deze vervolgens naar de client via het HTTP-protocol. Als uploader hoeven alleen de video en audio in FLV-indeling naar de server te worden verzonden.
Over het algemeen gebruiken de video en audio in het FLV-formaat over het algemeen het h264-formaat voor de video, en de audio gebruikt over het algemeen het AAC-LC-formaat.
Het FLV-formaat is om eerst de FLV-headerinformatie te verzenden, vervolgens de metadata met de video- en audioparameters (Metadata), vervolgens de video- en audioparameterinformatie en vervolgens de video- en audiogegevens.
Opmerking: in het volgende artikel wordt FLV in detail beschreven
2. RTMP
RTMP is de afkorting voor Real Time Messaging Protocol. Het protocol is gebaseerd op TCP en is een protocolcluster, inclusief het RTMP-basisprotocol en RTMPT / RTMPS / RTMPE en vele andere varianten. RTMP is een netwerkprotocol dat is ontworpen voor real-time datacommunicatie. Het wordt voornamelijk gebruikt voor audio-, video- en datacommunicatie tussen het Flash / AIR-platform en een streaming media / interactieve server die het RTMP-protocol ondersteunt.
Het RTMP-protocol is een real-time transmissieprotocol gelanceerd door Adobe, dat voornamelijk wordt gebruikt voor real-time transmissie van audio- en videostreams op basis van het flv-formaat. Nadat de gecodeerde video- en audiogegevens zijn opgehaald, is eerst FLV-verpakking vereist en vervolgens verpakt in rtmp-indeling en vervolgens verzonden.
Om de RTMP-indeling voor verzending te gebruiken, moet u eerst verbinding maken met de server, vervolgens een stream maken, vervolgens de stream publiceren en vervolgens de bijbehorende video- en audiogegevens verzenden. De volledige verzending wordt bepaald door berichten, rtmp definieert verschillende vormen van berichten, en om de berichten goed te verzenden, worden de berichten opgedeeld in blokken, wat het hele protocol ingewikkelder maakt.
Opmerking: in latere artikelen wordt RTMP in detail beschreven
Er zijn ook verschillende andere vormen van protocollen, zoals RTP, enz. De algemene principes zijn vergelijkbaar, dus ik zal ze niet een voor een uitleggen.
7. slechte netwerkverwerking
De video en audio kunnen op tijd worden verzonden onder een goed netwerk, zonder dat er lokaal video- en audiogegevens worden verzameld, het live-uitzendingseffect is vloeiend en de vertraging is klein. Als in een slechte netwerkomgeving de audio- en videogegevens niet kunnen worden verzonden, moeten we de audio- en videogegevens verwerken. Er zijn over het algemeen vier verwerkingsmethoden voor video- en audiogegevens in een slechte netwerkomgeving: bufferontwerp, netwerkdetectie, verwerking van frameverlies en verwerking van bitsnelheidreductie.
1. Bufferontwerp
Video- en audiogegevens worden overgebracht naar de buffer en de afzender haalt de gegevens uit de buffer en verzendt deze, waardoor een asynchrone producent-consumentmodus wordt gevormd. De producent hoeft alleen de verzamelde en gecodeerde video- en audiogegevens naar de buffer te pushen, en de consument is verantwoordelijk voor het verwijderen van de gegevens uit de buffer en het verzenden ervan.
Video- en audiobuffer
Alleen het videoframe wordt getoond in de bovenstaande afbeelding, en uiteraard zijn er overeenkomstige audioframes binnenin. Om een asynchroon producer-consumentmodel te bouwen, heeft Java een goede klasse geleverd. Aangezien frameverlies, invoegen, verwijderen, enz. Later moeten worden verwerkt, is het duidelijk dat LinkedBlockingQueue een zeer goede keuze is.
2. Netwerkdetectie
Een belangrijk proces in het proces van slechte netwerkverwerking is netwerkdetectie. Wanneer het netwerk slecht wordt, kan het snel worden gedetecteerd en dienovereenkomstig worden verwerkt. Dit maakt de netwerkreactie gevoeliger en het effect zal veel beter zijn.
We berekenen de gegevens in de invoerbuffer per seconde en de gegevens die in realtime worden verzonden. Als de verzonden gegevens kleiner zijn dan de gegevens in de invoerbuffer, is de netwerkbandbreedte niet goed. Op dit moment zullen de gegevens in de buffer blijven toenemen. Activeer het bijbehorende mechanisme.
3. Drop frame-verwerking
Wanneer netwerkverslechtering wordt gedetecteerd, is frameverlies een goed reactiemechanisme. Nadat de video is gecodeerd, zijn er keyframes en niet-keyframes. Het keyframe is een compleet beeld en het niet-keyframe beschrijft de relatieve verandering van het beeld.
De strategie voor het neerzetten van frames kan op zichzelf worden bepaald. Een ding om op te merken is: als u P-frames (niet-keyframes) wilt verwijderen, moet u alle niet-keyframes tussen de twee keyframes laten vallen, anders ontstaan er mozaïeken. Het ontwerp van de strategie voor frameverlies varieert afhankelijk van de behoeften en u kunt deze zelf ontwerpen.
4. Verlagingspercentage code
Als in Android harde codering wordt gebruikt voor codering, kunnen we in een slechte netwerkomgeving de bitsnelheid van harde codering in realtime wijzigen om de live-uitzending soepeler te maken. Wanneer wordt gedetecteerd dat de netwerkomgeving slecht is, kunnen we ook de video- en audiobitsnelheid verlagen terwijl we frames laten vallen. Als de Android sdk-versie groter is dan of gelijk is aan 19, kunt u parameters doorgeven aan MediaCodec om de bitsnelheid van de gegevens van de hardgecodeerde encoder te wijzigen.
Bitrate van de bundel = nieuwe bundel (); bitrate.putInt (MediaCodec.PARAMETER_KEY_VIDEO_BITRATE, bps * 1024);
mMediaCodec.setParameters (bitsnelheid);
8. verzenden
Na verschillende bewerkingen moeten de gegevens uiteindelijk worden verzonden, deze stap is relatief eenvoudig. Of het nu gaat om HTTP-FLV of RTMP, we gebruiken TCP om een verbinding tot stand te brengen. Voor de live uitzending moet u verbinding maken met de server via de Socket om te controleren of u verbinding kunt maken met de server. Gebruik deze socket na de verbinding om gegevens naar de server te sturen en sluit de socket nadat de gegevens zijn verzonden.
|
Voer een e-mailadres in om een verrassing te ontvangen
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> Albanees
ar.fmuser.org -> Arabisch
hy.fmuser.org -> Armenian
az.fmuser.org -> Azerbeidzjaans
eu.fmuser.org -> Baskisch
be.fmuser.org -> Wit-Russisch
bg.fmuser.org -> Bulgarian
ca.fmuser.org -> Catalaans
zh-CN.fmuser.org -> Chinees (vereenvoudigd)
zh-TW.fmuser.org -> Chinees (traditioneel)
hr.fmuser.org -> Kroatisch
cs.fmuser.org -> Tsjechisch
da.fmuser.org -> Deens
nl.fmuser.org -> Nederlands
et.fmuser.org -> Ests
tl.fmuser.org -> Filipijns
fi.fmuser.org -> Fins
fr.fmuser.org -> Frans
gl.fmuser.org -> Galicisch
ka.fmuser.org -> Georgisch
de.fmuser.org -> Duits
el.fmuser.org -> Greek
ht.fmuser.org -> Haïtiaans Creools
iw.fmuser.org -> Hebreeuws
hi.fmuser.org -> Hindi
hu.fmuser.org -> Hungarian
is.fmuser.org -> IJslands
id.fmuser.org -> Indonesisch
ga.fmuser.org -> Iers
it.fmuser.org -> Italian
ja.fmuser.org -> Japans
ko.fmuser.org -> Koreaans
lv.fmuser.org -> Lets
lt.fmuser.org -> Lithuanian
mk.fmuser.org -> Macedonisch
ms.fmuser.org -> Maleis
mt.fmuser.org -> Maltees
no.fmuser.org -> Norwegian
fa.fmuser.org -> Perzisch
pl.fmuser.org -> Pools
pt.fmuser.org -> Portugees
ro.fmuser.org -> Roemeens
ru.fmuser.org -> Russisch
sr.fmuser.org -> Servisch
sk.fmuser.org -> Slowaaks
sl.fmuser.org -> Slovenian
es.fmuser.org -> Spaans
sw.fmuser.org -> Swahili
sv.fmuser.org -> Zweeds
th.fmuser.org -> Thai
tr.fmuser.org -> Turks
uk.fmuser.org -> Oekraïens
ur.fmuser.org -> Urdu
vi.fmuser.org -> Vietnamese
cy.fmuser.org -> Welsh
yi.fmuser.org -> Jiddisch
FMUSER Wirless Verzend video en audio eenvoudiger!
Neem contact op
Adres:
No.305 Zaal HuiLan Gebouw No.273 Huanpu Road Guangzhou China 510620
Categorieën
Nieuwsbrief