FMUSER Wirless Transmit Video and Audio Errazago!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> afrikaansa
sq.fmuser.org -> Albaniera
ar.fmuser.org -> arabiera
hy.fmuser.org -> Armenian
az.fmuser.org -> azerbaijanera
eu.fmuser.org -> euskara
be.fmuser.org -> Bielorrusiera
bg.fmuser.org -> Bulgarian
ca.fmuser.org -> Katalana
zh-CN.fmuser.org -> Txinera (sinplifikatua)
zh-TW.fmuser.org -> Chinese (Traditional)
hr.fmuser.org -> kroaziera
cs.fmuser.org -> Txekiera
da.fmuser.org -> Danimarkarra
nl.fmuser.org -> Holandako
et.fmuser.org -> Estoniera
tl.fmuser.org -> Filipinoa
fi.fmuser.org -> finlandiera
fr.fmuser.org -> Frantsesa
gl.fmuser.org -> Galiziera
ka.fmuser.org -> Georgiarra
de.fmuser.org -> alemana
el.fmuser.org -> Greek
ht.fmuser.org -> Haitiko kreolera
iw.fmuser.org -> Hebreera
hi.fmuser.org -> Hindi
hu.fmuser.org -> Hungarian
is.fmuser.org -> Islandiera
id.fmuser.org -> Indonesiera
ga.fmuser.org -> Irlandera
it.fmuser.org -> Italian
ja.fmuser.org -> Japoniera
ko.fmuser.org -> Koreera
lv.fmuser.org -> Letoniera
lt.fmuser.org -> Lithuanian
mk.fmuser.org -> mazedoniera
ms.fmuser.org -> malaysiera
mt.fmuser.org -> maltera
no.fmuser.org -> Norwegian
fa.fmuser.org -> persiera
pl.fmuser.org -> poloniera
pt.fmuser.org -> Portugesa
ro.fmuser.org -> Romanian
ru.fmuser.org -> errusiera
sr.fmuser.org -> serbiera
sk.fmuser.org -> Eslovakiera
sl.fmuser.org -> Slovenian
es.fmuser.org -> Gaztelania
sw.fmuser.org -> Swahilia
sv.fmuser.org -> Suediera
th.fmuser.org -> Thai
tr.fmuser.org -> Turkiera
uk.fmuser.org -> ukrainera
ur.fmuser.org -> urdua
vi.fmuser.org -> Vietnamese
cy.fmuser.org -> galesera
yi.fmuser.org -> Yiddish
H264
Nalu-ren egitura Nalu da, eta Nalu-ren egitura nal head + rbsp. Benetako transmisioan datuen fluxua irudian agertzen da:
Hemen duzue irudiaren deskribapena
Nal goiburuak byte bat hartzen du eta beheko 5 biteko bitek nal mota adierazten dute, ondoko taulan agertzen den moduan:
NAL motakoa | Nal motakoa |
0 | ez da erabiltzen |
bat | IDR ez diren filmak |
bi | Zatitu partizio bat |
hiru | Xerra datuen partizioa B |
lau | Xerra datuak C partizioa |
bost | IDR irudiaren filma |
sei | Hobekuntzarako informazio unitate osagarria (SEI) |
zazpi | Sekuentzia parametro multzoa (SPS) |
zortzi | Irudi parametro multzoa (PPS) |
bederatzi | Mugaketa marka |
hamar | Sekuentziaren amaiera |
hamaika | Korrontearen amaiera |
hamabi | bete |
13..23 | atxikitzen |
24..31 | Erreserbarik ez |
RBSP jatorrizko byte sekuentziaren karga da.
Nal mota 5 bada, fotograma I fotograma da, hau da, gako fotograma eta gakoa ez den fotograma (P fotograma ...) mota 1 denean.
Benetako H264 datu-markoan, markoaren nal motaren aurretik 00, 001 edo 00001 bereizlea egon ohi da. Orokorrean kodetzaileak bildutako lehen fotograma datuak PPS eta SPS dira, ondoren I fotograma eta gero P fotograma
Easypusher / easytmp bideo erreprodukzio push
Easypusher eta easytmp H264 bideo korrontea eta audio bideo korrontea tokiko bideo iturri gisa lortzeko erabiltzen dira kameraren SDK deituz, RTSP korrontea tiratuz, MP4 fitxategia irakurtzerakoan, etab. Windows, Linux, Android, IOS, arm eta bestelako plataformak onartzen dituzten bideo streaming bidezko push programak dira guztiak.
Jarraian, I fotograma eta P fotograma nola bereizten diren deskribatzen da bideo korrontea tokira iritsi eta gero bultzatzen dituztenean:
// Kode honek fitxategiko H264 datuak irakurtzen ditu eta zerbitzarira bultzatzen ditu
sinatu gabeko karaktere * ptr = sinatu gabeko karaktere berria [lagin_ tamaina];
fread (ptr, lagin_ tamaina, 1, g_ fin);
// Idatzi datu markoa - sarean zuzenean bultza daiteke
// fwrite (ptr, sample_ size, 1, fout);
EASY_ AV_ Frame avFrame;
memset (& avFrame, 0x00, sizeof (EASY_ AV_ Frame));
/*
* PTRren lehen 4 byteak 0000001 fotograma zatiketa karakterea dira eta bosgarren byteak nal motakoak dira
*/
unsigned char naltype = ((unsigned char) ptr [4] & 0x1F);
avFrame.pBuffer = (sinatu gabeko karaktere *) ptr;
avFrame.u32AVFrameLen = lagin_ tamaina;
avFrame.u32VFrameType = (naltype == 0x05)? EASY_ SDK_ VIDEO_ FRAME_ I: EASY_ SDK_ VIDEO_ FRAME_ P;
avFrame.u32AVFrameFlag = EASY_ SDK_ VIDEO_ FRAME_ FLAG;
avFrame.u32TimestampSec = lTimeStamp / 1000000;
avFrame.u32TimestampUsec = (lTimeStamp% 1000000);
Bideoaren iturburua fitxategia ez bada, IP kamera edo RTSP korrontea bada, baliteke dagoeneko uneko fotograma jakinaraztea uneko fotograma I fotograma edo P fotograma den ala ez bideo erreprodukzioaren atzera modulazioan, beraz, mota ez da onartzen.
HI_ S32 NETSDK_ APICALL OnStreamCallback (HI_ U32 u32handle, / * handle * /
HI_ U32 u32datatype, / * datu mota, bideo edo audio datuak edo audio bideo datu konposatuak * /
HI_ U8 * pu8buffer, / * datuek fotograma goiburua dute * /
HI_ U32 u32length, / * datuen luzera * /
HI_ Void * puserdata / * erabiltzailearen datuak * /
)
{
HI_ S_ AVFrame * pstruAV = HI_ NULL;
HI_ S_ SysHeader * pstruSys = HI_ NULL;
bada (u32DataType == HI_ NET_ DEV_ AV_ DATA)
{
pstruAV = (HI_ S_ AVFrame *) pu8Buffer;
if (pstruAV-> u32AVFrameFlag == HI_ NET_ DEV_ VIDEO_ FRAME_ FLAG)
{
if (fPusherHandle == 0) 0 itzultzen du;
if (pstruAV-> u32AVFrameLen> 0)
{
unsigned char * pbuf = (unsigned char *) (pu8Buffer + sizeof (HI_ S_ AVFrame));
EASY_ AV_ Frame avFrame;
memset (& avFrame, 0x00, sizeof (EASY_ AV_ Frame));
avFrame.u32AVFrameLen = pstruAV-> u32AVFrameLen;
avFrame.pBuffer = (sinatu gabeko karaktere *) pbuf;
avFrame.u32VFrameType = (pstruAV-> u32VFrameType == HI_ NET_ DEV_ VIDEO_ FRAME_ I)? EASY_ SDK_ VIDEO_ FRAME_ I: EASY_ SDK_ VIDEO_ FRAME_ P;
avFrame.u32AVFrameFlag = EASY_ SDK_ VIDEO_ FRAME_ FLAG;
avFrame.u32TimestampSec = pstruAV-> u32AVFramePTS / 1000;
avFrame.u32TimestampUsec = (pstruAV-> u32AVFramePTS% 1000) * 1000;
EasyPusher_ PushFrame (fPusherHandle, & avFrame);
}
}
bestela
if (pstruAV-> u32AVFrameFlag == HI_ NET_ DEV_ AUDIO_ FRAME_ FLAG)
{
if (fPusherHandle == 0) 0 itzultzen du;
if (pstruAV-> u32AVFrameLen> 0)
{
// IPcamera desberdina, datuen goiburua desberdina da hemen, eta dagokion tamaina beraien SDKren arabera saltatu behar da. Batzuek ez dute datu pertsonalizaturik
unsigned char * pbuf = (unsigned char *) (pu8Buffer + sizeof (HI_ S_ AVFrame));
EASY_ AV_ Frame avFrame;
memset (& avFrame, 0x00, sizeof (EASY_ AV_ Frame));
avFrame.u32AVFrameLen = pstruAV-> u32AVFrameLen-4; // Kendu fabrikatzaileak definitutako 4 byteko goiburua
avFrame.pBuffer = (sinatu gabeko karaktere *) pbuf + 4;
avFrame.u32AVFrameFlag = EASY_ SDK_ AUDIO_ FRAME_ FLAG;
avFrame.u32TimestampSec = pstruAV-> u32AVFramePTS / 1000;
avFrame.u32TimestampUsec = (pstruAV-> u32AVFramePTS% 1000) * 1000;
EasyPusher_ PushFrame (fPusherHandle, & avFrame);
}
}
}
bestela
bada (u32DataType == HI_ NET_ DEV_ SYS_ DATA)
{
pstruSys = (HI_ S_ SysHeader *) pu8Buffer;
printf ("Bideo W:% u H:% u Audio:% u \ n", pstruSys-> struVHeader.u32Width, pstruSys-> struVHeader.u32Height, pstruSys-> struAHeader.u32Format);
}
itzuli HI_ ARRAKASTA;
}
Datu iturriarekin, RTSP eta RTMP zuzenean bultza ditzakezu libeasypusher edo libeasyrtmp deituz!
|
Sartu posta elektronikoa sorpresa bat izateko
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> afrikaansa
sq.fmuser.org -> Albaniera
ar.fmuser.org -> arabiera
hy.fmuser.org -> Armenian
az.fmuser.org -> azerbaijanera
eu.fmuser.org -> euskara
be.fmuser.org -> Bielorrusiera
bg.fmuser.org -> Bulgarian
ca.fmuser.org -> Katalana
zh-CN.fmuser.org -> Txinera (sinplifikatua)
zh-TW.fmuser.org -> Chinese (Traditional)
hr.fmuser.org -> kroaziera
cs.fmuser.org -> Txekiera
da.fmuser.org -> Danimarkarra
nl.fmuser.org -> Holandako
et.fmuser.org -> Estoniera
tl.fmuser.org -> Filipinoa
fi.fmuser.org -> finlandiera
fr.fmuser.org -> Frantsesa
gl.fmuser.org -> Galiziera
ka.fmuser.org -> Georgiarra
de.fmuser.org -> alemana
el.fmuser.org -> Greek
ht.fmuser.org -> Haitiko kreolera
iw.fmuser.org -> Hebreera
hi.fmuser.org -> Hindi
hu.fmuser.org -> Hungarian
is.fmuser.org -> Islandiera
id.fmuser.org -> Indonesiera
ga.fmuser.org -> Irlandera
it.fmuser.org -> Italian
ja.fmuser.org -> Japoniera
ko.fmuser.org -> Koreera
lv.fmuser.org -> Letoniera
lt.fmuser.org -> Lithuanian
mk.fmuser.org -> mazedoniera
ms.fmuser.org -> malaysiera
mt.fmuser.org -> maltera
no.fmuser.org -> Norwegian
fa.fmuser.org -> persiera
pl.fmuser.org -> poloniera
pt.fmuser.org -> Portugesa
ro.fmuser.org -> Romanian
ru.fmuser.org -> errusiera
sr.fmuser.org -> serbiera
sk.fmuser.org -> Eslovakiera
sl.fmuser.org -> Slovenian
es.fmuser.org -> Gaztelania
sw.fmuser.org -> Swahilia
sv.fmuser.org -> Suediera
th.fmuser.org -> Thai
tr.fmuser.org -> Turkiera
uk.fmuser.org -> ukrainera
ur.fmuser.org -> urdua
vi.fmuser.org -> Vietnamese
cy.fmuser.org -> galesera
yi.fmuser.org -> Yiddish
FMUSER Wirless Transmit Video and Audio Errazago!
Harremanetarako
Helbidea:
305. zenbakia Gela HuiLan eraikina No.273 Huanpu Road Guangzhou Txina 510620
Kategoriak
Buletina