သင့်ရဲ့ကိုယ်ပိုင် C / C ++ က App ထဲသို့ဗီဒီယိုလွှပေါင်းစပ်ဖို့ NEX ဗိုလ်ချုပ်ကြီးမီဒီယာဆာဗာ (NGMS) API ကိုအသုံးပြုခြင်း

နိဒါန်း

မကြာသေးမီကငါ NEX ဗိုလ်ချုပ်ကြီးမီဒီယာဆာဗာ (NGMS) နှင့်၎င်းတို့၏ API ကိုမူဘောင်မှာပိုမိုနီးကပ်စွာကြည့်ယူခဲ့ပါတယ်။ s ကို HTTP ကိုတိုက်ရိုက်, MPEG-2 ပို့ဆောင်ရေး Stream; NGMS ထိုကဲ့သို့သော RTSP, RTMP Apple က & # 39 အဖြစ်ရေပန်းစား streaming များ protocols များအချို့ကိုပံ့ပိုးသော multi-ရည်ရွယ်ချက် streaming များ server တစ်ခုဖြစ်ပါတယ်။ NGMS transcoding ထောက်ခံမှုနှင့်အတူကြွလာနှင့်ဖမ်းယူခြင်းနှင့် reformat တိုက်ရိုက်ဗွီဒီယို streams နှင့်ကိရိယာ၏အခြားအမျိုးအစားအားဖြင့်လက်ခံရရှိခံရဖို့သူတို့ကိုလိုက်လျောညီထွေဖြစ်အောင်, ထိုကဲ့သို့သောတစ်ခု HD ဗီဒီယို feed ကိုဖမ်းယူခြင်းနှင့် 3g ကျော်တစ်ဦးသည် iPhone အားဖြင့်လက်ခံရရှိခံရဖို့က converting အဖြစ်ပေးနိုင်သည်။ ကြှနျတေျာ့အာရုံငါ့ကိုယ်ပိုင် C ကိုလျှောက်လွှာကနေတိုက်ရိုက်လွှင့် features တွေကိုထိန်းချုပ်ဖို့ NGMS API ကိုပေါင်းစပ်ဖို့ဖြစ်တယ်။ ဒီဥပမာမှာကျနော် Ubuntu Linux 10.04 ကို အသုံးပြု. နေပါတယ်။

ပထမဦးဆုံးအရာ NGMS အသုံးပြုသူလမ်းညွှန်နှင့် NEX ဗိုလ်ချုပ်ကြီးမီဒီယာဆာဗာများအတွက် API ကိုရည်ညွှန်းလမ်းညွှန်ဒေါင်းလုဒ်လုပ်ပြီးဖတ်ပါရန်ဖြစ်ပါသည်။ (ဤလင့်ခ်ဆောင်းပါး၏အောက်ခြေတွင်တည်ရှိနေကြသည်) ရှိပါတယ်အများအပြား configuration options ကိုအဲဒီမှာ၌ရှိကြ၏ဒါပေမယ့်ကျနော်တို့ကိုယ့်အခြေခံမှကပ်ပါလိမ့်မယ်။ ထိုအခါသင်သည် linux ကိုများအတွက် NGMS အထုပ်ကိုဒေါင်းလုဒ်လုပ်ရန်လိုအပ်ပါတယ်။ ငါအသုံးပြုသောဗားရှင်း NGMS v1.3.4 ဖြစ်ခဲ့သည်။ သင်အထုပ်ကို download လုပ်ပြီးတာနဲ့ပဲသင့်ရဲ့ရွေးချယ်မှုဟာ directory သို့ contents တွေကိုဇီပ်။ ငါ ~ / ngmsStreaming ကိုအသုံးပြု

လျှောက်လွှာကိုတက်ချိန်ညှိခြင်း။

တိုက်ရိုက်ငါသည်ငါ့ကုဒ်သို့ "ngms / / ngmslib.h ပါဝင်သည်" တို့ပါဝင်သည်ခဲ့ရတယ်ငါ့အကို C လျှောက်လွှာသို့ NGMS ပေါင်းစည်းရန်။

ငါ၏အပလီကေးရှင်းကိုတည်ဆောက်သည့်အခါငါစာကြည့်တိုက် ngms / lib / libngms.so နှင့် ngms / lib / libxcode.so ပါဝင်သည်ခဲ့ရသည်။ ဒါဟာ libngms.so ကိုလည်း linker options များအတွက်သတ်မှတ်ထားသောရန်လိုအပ်ပါသည်သော libcrypto.so အပေါ်မူတည်ကြောင်းရှုမြင်ပါသည်။

ဤတွင်ကျွန်မ & # 39 သောရိုးရှင်းသော makefile ဖြစ်၏သုံးပြီး M:

#Example Makefile

CC ကို = gcc
CFLAGS = -ggdb
ပါဝင်သည် + = -i ngms / ပါဝင်သည်
LDFLAGS + = -L ngms / lib -lngms -xlcode -crypto

အားလုံး: myapp

% အို:% .C
$ (CC) $ (CFLAGS) $ (ပါဝင်သည်) -O $ @ -c $ <

myapp: myapp.o
$ (CC) -fpic -O myapp myapp.o $ (LDFLAGS)

ဤတွင် myapp.c ဖို့အရင်းအမြစ်ဖြစ်ပါတယ်။

/ **
*
* ဥပမာ myapp လျှောက်လွှာ
*
* /

လက်မှတ်မထိုး int uint32_t typedef;
လက်မှတ်မထိုးတာရှည်ရှည်လျား uint64_t typedef;
#include

int အဓိက (int argc, char * argv ()) {
NGMSLIB_STREAM_PARAMS_T ngmsConfig;
NGMS_RC_T returnCode;

returnCode = ngmslib_open (& ngmsConfig);
{(NGMS_RC_OK! = returnCode) လျှင်
fprintf (stderr "ngmslib_open n n ပျက်ကွက်");
ပြန်လာ -1;
}

ngmsConfig.inputs (0) = "mediaTestFile.mp4";
ngmsConfig.output = "rtp: /127.0.0.1: 5004";

returnCode = ngmslib_stream (& ngmsConfig);
{(NGMS_RC_OK! = returnCode) လျှင်
fprintf (stderr "ngmslib_open n n ပျက်ကွက်");
}

ngmslib_close (& ngmsConfig);

ပြန်လာပါ 0 င်;
}

အထက်ပါ code က ngms စာကြည့်တိုက်ကိုထိန်းချုပ်ဖို့အတွက် NGMSLIB_STREAM_PARAMS_T struct type ကိုအသုံးပြုသည်။ ပြုမိရန်လိုအပ်ပါသည်သောပထမဦးဆုံးအရာ "ကြိုတင်" ဖို့ struct ngmslib_open ရန်တောင်းဆိုမှုသည်။ အဲဒီနောကျသငျသညျ NGMS ပြုကြလိမ့်မည်အရာကိုထိန်းချုပ်ရန်အတွက် struct အတွက်ရွေးချယ်စရာတစ်ခုခုကိုဖြည့်စွက်ပေးနိုင်သည်။ ထိုအခါသင် output ကိုဗီဒီယိုကဖန်တီးရန် "ngmslib_stream" နိုငျသညျ။

ငါ & # 39; VLC ကကစားသမားအတွက်စီးဖွင့်လှစ်ခြင်းနှင့်ဗီဒီယို play နိုင်ပါ။

VLC Player ကို -> Open ကိုကွန်ယက် rtp: // @: 5004

Viola! ထိုသို့လွယ်ကူသောခဲ့ !!! ယခုတွင်ငါသည်ငါ၏အလျှောက်လွှာကနေတိုက်ရိုက်မီဒီယာဖိုင် stream နိုငျပါသညျ!

အဆိုပါ ngmslib_stream function ကိုဖုန်းခေါ်ဆိုမှုကတည်းကငါသည်အခြားချည်ထံမှ ngmslib_close ခေါ်နိုင်ပါတယ်နှင့် ngmslib_stream ခေါ်ဆိုခကို exit လိမ့်မယ်စီးနှောက်ယှက်ဖို့တစ်ပိတ်ဆို့ခြင်းစစ်ဆင်ရေးဖြစ်ပါသည်။

ငါကုဒ်၏အောက်ပါလိုင်းများထည့်သွင်းခြင်းဖြင့်တစ်ဦး embedded Flash player အဘို့အထောက်ခံမှု add နိုင်ခဲ့သည်။

= "1935" ngmsConfig.rtmplive;
= "8080" ngmsConfig.live;

ငါ့အဘရောက်ဇာနှင့်အတူငါ ချိတ်ဆက်. localhost: 8080 / တိုက်ရိုက်ထုတ်လွှ ငါကဗီဒီယိုကစားခြင်းကို flash player ကိုအတူစာမျက်နှာကိုပြန်ရ။

အဲဒီအစားဖိုင်တစ်ခုကစားငါတိုက်ရိုက်ဗီဒီယိုစီးကြောင်းကိုဖြစ်ဖို့ input ကိုပြောင်းလဲနိုင်သည်။ ငါသည်ငါ၏လျှောက်လွှာနှစ်ခုကသီးခြားဖြစ်ရပ်ဖန်တီးနိုင်ပါတယ်။ တဦးတည်းဥပမာအား output ကို port ကို 5006. မှဗီဒီယိုအခြားဥပမာအားဖြင့်ဆိပ်ကမ်းကို 5006 ရက်တွင်ဗီဒီယိုဖမ်းယူမည်နှင့် port ကို 5004. မှ output ကိုကဒီသင်ပြုရန်ရှိသည်အားလုံးပါပဲ။

//ngmsConfig.inputs(0) = "mediaTestFile.mp4";
ngmsConfig.inputs (0) = "rtp: /127.0.0.1: 5006";
ngmsConfig.strfilters (0) = "အမျိုးအစား = m2t";

ကောက်ချက်

ဤရွေ့ကားအနည်းငယ်ဥပမာသင့်ရဲ့ကိုယ်ပိုင် application ကိုစကဗီဒီယို streaming များထောက်ခံမှု add ရန်၎င်း၏တော်တော်လွယ်ကူပါတယ်ပြသပါ။ ငါ & # 39; ဤနေရာတွင်ကို C ကိုသုံးပါ။ သင်၏လျှောက်လွှာကို C အကယ်. ++ သင် "ပြင်ပ" ကို C "" keyword ကို အသုံးပြု. ngmslib ဖို့အားလုံးကိုဖုန်းခေါ်ဆိုမှုခြုံနိုင်ပါတယ်။ သင်တို့သည်လည်းဂျာဗား၌လုပ်နိုင်ပေမယ့် NGMS လှဲဖုန်းခေါ်ဆိုမှုများတစ်ဦးချင်းစီခြုံတစ်ဦး JNI interface ကိုတည်ဆောက်ခြင်းလိုအပ်ပေလိမ့်မည်။

ဒါကတော်တော်လေးရိုးရှင်းတဲ့ဥပမာဖြစ်ခဲ့သည်။ မဝေးတော့တဲ့အနာဂတ်ကာလ၌ငါ NGMS စာကြည့်တိုက်သင့်ကိုယ်ပိုင်ဗွီဒီယိုကိုထုတ်လွှင့် client ကိုတည်ဆောက်ဖို့အသုံးပြုနိုင်ပါတယ်ဘယ်လိုကူးသွားပါလိမ့်မယ်။



Source by Hung B Nguyen