FMUSER Wirless edastab videot ja heli lihtsamalt!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> afrikaans
sq.fmuser.org -> albaania keel
ar.fmuser.org -> araabia
hy.fmuser.org -> Armeenia
az.fmuser.org -> aserbaidžaanlane
eu.fmuser.org -> baski keel
be.fmuser.org -> valgevenelane
bg.fmuser.org -> Bulgaaria
ca.fmuser.org -> katalaani keel
zh-CN.fmuser.org -> hiina (lihtsustatud)
zh-TW.fmuser.org -> Hiina (traditsiooniline)
hr.fmuser.org -> horvaadi keel
cs.fmuser.org -> tšehhi
da.fmuser.org -> taani keel
nl.fmuser.org -> Hollandi
et.fmuser.org -> eesti keel
tl.fmuser.org -> filipiinlane
fi.fmuser.org -> soome keel
fr.fmuser.org -> Prantsusmaa
gl.fmuser.org -> galicia keel
ka.fmuser.org -> gruusia keel
de.fmuser.org -> saksa keel
el.fmuser.org -> Kreeka
ht.fmuser.org -> Haiti kreool
iw.fmuser.org -> heebrea
hi.fmuser.org -> hindi
hu.fmuser.org -> Ungari
is.fmuser.org -> islandi keel
id.fmuser.org -> indoneesia keel
ga.fmuser.org -> iiri keel
it.fmuser.org -> Itaalia
ja.fmuser.org -> jaapani keel
ko.fmuser.org -> korea
lv.fmuser.org -> läti keel
lt.fmuser.org -> Leedu
mk.fmuser.org -> makedoonia
ms.fmuser.org -> malai
mt.fmuser.org -> malta keel
no.fmuser.org -> Norra
fa.fmuser.org -> pärsia keel
pl.fmuser.org -> poola keel
pt.fmuser.org -> portugali keel
ro.fmuser.org -> Rumeenia
ru.fmuser.org -> vene keel
sr.fmuser.org -> serbia
sk.fmuser.org -> slovaki keel
sl.fmuser.org -> Sloveenia
es.fmuser.org -> hispaania keel
sw.fmuser.org -> suahiili keel
sv.fmuser.org -> rootsi keel
th.fmuser.org -> Tai
tr.fmuser.org -> türgi keel
uk.fmuser.org -> ukrainlane
ur.fmuser.org -> urdu
vi.fmuser.org -> Vietnam
cy.fmuser.org -> kõmri keel
yi.fmuser.org -> Jidiši
H264
Nalu struktuur on Nalu ja Nalu struktuur on nal pea + rbsp. Andmevoog tegelikus edastuses on näidatud joonisel:
Siin on pildi kirjeldus
Naaluse päis moodustab ühe baidi ja alumised 5-bitised bitid tähistavad Nali tüüpi, nagu on näidatud järgmises tabelis:
NAL tüüp | Nali tüüp |
0 | pole kasutatud |
üks | Mitte IDR-filmid |
kaks | Viiluta partitsioon |
kolm | Andmete sektsioon B |
neli | Viiluandmete C partitsioon |
viis | IDR-pildi film |
kuus | Täiendava lisaseadme üksus (SEI) |
seitse | Järjestuse parameetrite komplekt (SPS) |
kaheksa | Pildiparameetrite komplekt (PPS) |
üheksa | Piiritlusmärk |
kümme | Järjestuse lõpp |
üksteist | Voo lõpp |
kaksteist | täitma |
13 23 .. | säilitama |
24 31 .. | Reservatsiooni pole |
RBSP on algse baidijärjestuse koormus.
Kui nali tüüp on 5, on kaadriks I raam ehk võtmekaader ja mitte võtmekaadriks (P kaader ...), kui tüüp on 1.
H264 tegelikus andmekaadris eelneb kaadri tüübile tavaliselt eraldaja 00, 001 või 00001. Üldiselt on kodeerija koostatud esimesed kaadriandmed PPS ja SPS, millele järgneb I kaader ja seejärel P kaader
Video voogesituse tõukejõud Easypusher
Easypusherit ja easytmp-i kasutatakse selleks, et hankida H264-videovoog ja heli-videovoog kohalikuks videoallikaks, helistades kaamera SDK-le, tõmmates RTSP-voogu, lugedes MP4-faili jne ja lükates need seejärel RTSP ja RTMP abil meediumiserverisse. Need kõik on video voogesituse tõukeprogrammid, mis toetavad aknaid, Linuxi, Androidi, IOS-i, arm ja muid platvorme.
Järgnevas kirjeldatakse, kuidas nad eristavad I raami ja P kaadrit pärast seda, kui nad saavad videovoo lokaalseks ja seejärel lükake neid:
// See kood loeb failist H264 andmed ja lükkab need serverisse
signeerimata char * ptr = uus signeerimata char [valimi_ suurus];
leib (ptr, proovi_ suurus, 1, g_ fin);
// Andmeraami kirjutamine - saab otse võrku lükata
// fwrite (ptr, valimi_ suurus, 1, fout);
EASY_ AV_ Frame avFrame;
memset (& avFrame, 0x00, sizeof (EASY_ AV_ Frame));
/*
* PTR-i esimesed 4 baiti on kaadri jagamise märk 0000001 ja viies bait on nal-tüüpi
*/
signeerimata süsiniku tüüp = ((unsigned char) ptr [4] & 0x1F);
avFrame.pBuffer = (märkimata Char *) ptr;
avFrame.u32AVFrameLen = valimi_ suurus;
avFrame.u32VFrameType = (naltype == 0x05)? EASY_ SDK_ VIDEO_ FRAME_ I: EASY_ SDK_ VIDEO_ FRAME_ P;
avFrame.u32AVFrameFlag = EASY_ SDK_ VIDEO_ FRAME_ LIPP;
avFrame.u32TimestampSec = lTimeStamp / 1000000;
avFrame.u32TimestampUsec = (lTimeStamp% 1000000);
Kui videoallikas pole fail, vaid IPcamera või RTSP-voog, võivad nad olla juba oma video voogesituse tagasimodulatsioonis praegusele kaadrile teatanud, kas praegune kaader on I- või P-kaader, nii et samme tüüp jäetakse välja.
HI_ S32 NETSDK_ APICALL OnStreamCallback (HI_ U32 u32handle, / * käepide * /
HI_ U32 u32datatüüp, / * andmetüüp, video- või heliandmed või audio-video liitandmed * /
HI_ U8 * pu8buffer, / * andmed sisaldavad raami päist * /
HI_ U32 u32length, / * andme pikkus * /
HI_ Void * puserdata / * kasutaja andmed * /
)
{
HI_ S_ AVFrame * pstruAV = HI_ NULL;
HI_ S_ SysHeader * pstruSys = HI_ NULL;
kui (u32DataType == HI_ NET_ DEV_ AV_ DATA)
{
pstruAV = (HI_ S_ AVFrame *) pu8Buffer;
kui (pstruAV-> u32AVFrameFlag == HI_ NET_ DEV_ VIDEO_ FRAME_ LIPP)
{
kui (fPusherHandle == 0) tagastab 0;
kui (pstruAV-> u32AVFrameLen> 0)
{
märkimata char * pbuf = (allkirjastamata char *) (pu8Buffer + sizeof (HI_ S_ AVFrame));
EASY_ AV_ Frame avFrame;
memset (& avFrame, 0x00, sizeof (EASY_ AV_ Frame));
avFrame.u32AVFrameLen = pstruAV-> u32AVFrameLen;
avFrame.pBuffer = (märkimata char *) 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_ LIPP;
avFrame.u32TimestampSec = pstruAV-> u32AVFramePTS / 1000;
avFrame.u32TimestampUsec = (pstruAV-> u32AVFramePTS% 1000) * 1000;
EasyPusher_ PushFrame (fPusherHandle, & avFrame);
}
}
teine
kui (pstruAV-> u32AVFrameFlag == HI_ NET_ DEV_ AUDIO_ FRAME_ FLAG)
{
kui (fPusherHandle == 0) tagastab 0;
kui (pstruAV-> u32AVFrameLen> 0)
{
// Erinev IPcamera, siin on andmete päis erinev ja vastav suurus tuleb nende SDK järgi vahele jätta. Mõnel ei pruugi olla kohandatud andmeid
märkimata char * pbuf = (allkirjastamata char *) (pu8Buffer + sizeof (HI_ S_ AVFrame));
EASY_ AV_ Frame avFrame;
memset (& avFrame, 0x00, sizeof (EASY_ AV_ Frame));
avFrame.u32AVFrameLen = pstruAV-> u32AVFrameLen-4; // Eemaldage tootja määratletud 4-baidine päis
avFrame.pBuffer = (märkimata char *) pbuf + 4;
avFrame.u32AVFrameFlag = EASY_ SDK_ AUDIO_ FRAME_ LIPP;
avFrame.u32TimestampSec = pstruAV-> u32AVFramePTS / 1000;
avFrame.u32TimestampUsec = (pstruAV-> u32AVFramePTS% 1000) * 1000;
EasyPusher_ PushFrame (fPusherHandle, & avFrame);
}
}
}
teine
kui (u32DataType == HI_ NET_ DEV_ SYS_ DATA)
{
pstruSys = (HI_ S_ SysHeader *) pu8Buffer;
printf ("Video W:% u H:% u Audio:% u \ n", pstruSys-> struVHeader.u32Width, pstruSys-> struVHeader.u32Height, pstruSys-> struAHeader.u32Format);
}
tagastage HI_ EDU;
}
Andmeallikaga saate RTSP-d ja RTMP-d otseülekandes lükata, helistades libeasypusher või libeasyrtmp!
|
Üllatuse saamiseks sisestage e-posti aadress
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> afrikaans
sq.fmuser.org -> albaania keel
ar.fmuser.org -> araabia
hy.fmuser.org -> Armeenia
az.fmuser.org -> aserbaidžaanlane
eu.fmuser.org -> baski keel
be.fmuser.org -> valgevenelane
bg.fmuser.org -> Bulgaaria
ca.fmuser.org -> katalaani keel
zh-CN.fmuser.org -> hiina (lihtsustatud)
zh-TW.fmuser.org -> Hiina (traditsiooniline)
hr.fmuser.org -> horvaadi keel
cs.fmuser.org -> tšehhi
da.fmuser.org -> taani keel
nl.fmuser.org -> Hollandi
et.fmuser.org -> eesti keel
tl.fmuser.org -> filipiinlane
fi.fmuser.org -> soome keel
fr.fmuser.org -> Prantsusmaa
gl.fmuser.org -> galicia keel
ka.fmuser.org -> gruusia keel
de.fmuser.org -> saksa keel
el.fmuser.org -> Kreeka
ht.fmuser.org -> Haiti kreool
iw.fmuser.org -> heebrea
hi.fmuser.org -> hindi
hu.fmuser.org -> Ungari
is.fmuser.org -> islandi keel
id.fmuser.org -> indoneesia keel
ga.fmuser.org -> iiri keel
it.fmuser.org -> Itaalia
ja.fmuser.org -> jaapani keel
ko.fmuser.org -> korea
lv.fmuser.org -> läti keel
lt.fmuser.org -> Leedu
mk.fmuser.org -> makedoonia
ms.fmuser.org -> malai
mt.fmuser.org -> malta keel
no.fmuser.org -> Norra
fa.fmuser.org -> pärsia keel
pl.fmuser.org -> poola keel
pt.fmuser.org -> portugali keel
ro.fmuser.org -> Rumeenia
ru.fmuser.org -> vene keel
sr.fmuser.org -> serbia
sk.fmuser.org -> slovaki keel
sl.fmuser.org -> Sloveenia
es.fmuser.org -> hispaania keel
sw.fmuser.org -> suahiili keel
sv.fmuser.org -> rootsi keel
th.fmuser.org -> Tai
tr.fmuser.org -> türgi keel
uk.fmuser.org -> ukrainlane
ur.fmuser.org -> urdu
vi.fmuser.org -> Vietnam
cy.fmuser.org -> kõmri keel
yi.fmuser.org -> Jidiši
FMUSER Wirless edastab videot ja heli lihtsamalt!
Saada sõnum
Aadress:
Nr 305 tuba HuiLan Building No.273 Huanpu Road Guangzhou, Hiina 510620
Kategooriad
Uudiskiri