• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            ts,ps,mpeg2 decoder and analysis

            mepg 2, iptv, stream parse,mov,mxf,gxf,ac3,aac

              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              21 隨筆 :: 0 文章 :: 54 評(píng)論 :: 0 Trackbacks

             用的elecard的ax文件,自己寫source filter,播放mpeg2還可以,h264就不行了,關(guān)鍵請(qǐng)問(wèn)題如下:

            source仿照系統(tǒng)的asyncflt。cpp。.h :

             問(wèn)題出在elecard的demux上面,
             首先,elecard公司寫demux filter的時(shí)候,肯定只是基于文件的--->  to h264來(lái)說(shuō),

            to, mpeg2來(lái)說(shuō),都是可以的,
             原因如下: 如果是mpeg2, demux filter 先讀取一段數(shù)據(jù)去parse,找psi,如果找到了,就可以connect了,

            因?yàn)槭亲x文件的,讀了一些數(shù)據(jù)為了connect, 所以connect 以后,必需調(diào)用 SetFilePointer(*g_pHFile,0,NULL,FILE_BEGIN);
             要不然,開頭的那一段就無(wú)法播放了

            但是: 如果是h264, 他先讀取一段數(shù)據(jù)去parse,找psi,就算找到了,也不connect: 如果找到了,而且也是文件末尾了,那就connect

            成功, 奶奶的,可是我的這個(gè)是網(wǎng)絡(luò)數(shù)據(jù)流,那有文件末尾,

            他有個(gè) set position的函數(shù),connect 后,就 set 0 了

             建立完整個(gè) graph 之后繼續(xù)播放,不在乎之前的那點(diǎn)數(shù)據(jù)的---你知道, 前面的那個(gè)數(shù)據(jù)是多大呢16M

             DVB 標(biāo)清的話,用不了多少就可以搜完臺(tái),用不了 16MB

            關(guān)鍵是我怎么知道它到底讀多少數(shù)據(jù)就 parse完了呢,難道讓我一直等么?,

            最早,標(biāo)清我只要3M的數(shù)據(jù),就必需建立graph了,現(xiàn)在h264,高清的,4M,根本不夠了,

            于是,我的code這樣寫了,呵呵:HRESULT SetPointer(LONGLONG llPos)
             {
              
               if (g_bIsConnect == 0)
               {
                if (llPos >= (1024 * 1024 * 14))
                {
                 //DbgLog((LOG_TRACE, 1, TEXT("\n--Set File Pointer = ld"),llPos));
                 return S_FALSE;
                }
             如果connect成功: SetPointer就 永遠(yuǎn)返回ok
             這樣就可以播放了,
             不過(guò),浪費(fèi)了我14M的數(shù)據(jù),唉,
            code如后:

            if (SUCCEEDED(hr)) 
              hr = CoCreateInstance(CLSID_CEleCardMpegMultiplexer, NULL, CLSCTX_INPROC,
              IID_IBaseFilter, (LPVOID *)&pMPG2Splitter) ;

             if (SUCCEEDED(hr)) 
              hr = m_pGraph->AddFilter(pMPG2Splitter,L"EleCard Mpeg2 DeMultiplexer");

             pPinInTSSplitter = xMyFindPin(pMPG2Splitter,L"Input",0,CLSID_NULL_USER1);

             if (SUCCEEDED(hr)) 
              hr = m_pGraph->Connect(pPinOutSTWrapper,pPinInTSSplitter);


             if (strcmp(m_strFileFormat,"H264") == 0)
             {
              pPinOutTSSplitter_V= xMyFindPin(pMPG2Splitter,L"264",1,MEDIATYPE_Video);
             }
             else
             {  
              pPinOutTSSplitter_V= xMyFindPin(pMPG2Splitter,L"Video",1,MEDIATYPE_Video);
             }

            if (strcmp(m_strFileFormat,"H264") == 0)
             {
              if (SUCCEEDED(hr))
               hr = CoCreateInstance(CLSID_CH264VideoDecoder, NULL, CLSCTX_INPROC,    

            IID_IBaseFilter, (LPVOID *)&pFIDVDVideoDecorder) ;
              if (SUCCEEDED(hr)) 
               hr = m_pGraph->AddFilter(pFIDVDVideoDecorder,L"EleCard MPEG2 Video Decoder");

              if (SUCCEEDED(hr)) 
               pIDVDVideoDecorderInpin = xMyFindPin(pFIDVDVideoDecorder,L"In",0,MEDIATYPE_Video);

              if(pIDVDVideoDecorderInpin)
               hr = m_pGraph->Connect(pPinOutTSSplitter_V,pIDVDVideoDecorderInpin);

              if (SUCCEEDED(hr)) 
               pIDVDVideoDecorderOutpin = xMyFindPin(pFIDVDVideoDecorder,L"Out",1,MEDIATYPE_Video);
             }
             else
             {
              if (SUCCEEDED(hr))  
               hr = CoCreateInstance(CLSID_CEleCardVideoDec, NULL, CLSCTX_INPROC,
               IID_IBaseFilter, (LPVOID *)&pFIDVDVideoDecorder) ;
              if (SUCCEEDED(hr)) 
               hr = m_pGraph->AddFilter(pFIDVDVideoDecorder,L"EleCard MPEG2 Video Decoder");

              if (SUCCEEDED(hr)) 
               pIDVDVideoDecorderInpin = xMyFindPin(pFIDVDVideoDecorder,L"MPEG In",0,MEDIATYPE_Video);

              if(pIDVDVideoDecorderInpin)
               hr = m_pGraph->Connect(pPinOutTSSplitter_V,pIDVDVideoDecorderInpin);


              if (SUCCEEDED(hr)) 
               pIDVDVideoDecorderOutpin = xMyFindPin(pFIDVDVideoDecorder,L"Video Out",1,MEDIATYPE_Video);

             }

             


            static const GUID CLSID_CEleCardMpegMultiplexer =
            {0x136DCBF5,0x3874,0x4B70,0xAE,0x3E,0x15,0x99,0x7d,0x63,0x34,0xf7};
             //  136DCBF5-  3874 - 4B70 - AE   3E - 15   99   7D   63   34   F7

            static const GUID CLSID_CEleCardVideoDec=
            {0xf50b3f13,0x19c4,0x11cf,0xaa,0x9a,0x02,0x60,0x8c,0x9b,0xab,0xa2};
            //{F50B3F13-19C4-11CF-  AA9A-         02   60   8C   9B   AB   A2}

            static const GUID CLSID_CMoonlightAudioDec=
            {0xe32c3b01,0xc81b,0x4d01,0x8a,0xd4,0x2b,0x93,0xf7,0xfa,0x54,0x4c};

            static const GUID CLSID_CH264VideoDecoder=
            {0x6A270473,0x9994,0x4aeb,0x80,0x1f,0xbb,0x2c,0x4e,0x56,0xee,0x38};
            // 6A270473-  9994-  4AEB-  80   1F-  BB   2C   4E   56   EE   38}

            posted on 2009-10-23 16:37 TS,MPEG2,dvbc專家 閱讀(4583) 評(píng)論(16)  編輯 收藏 引用

            評(píng)論

            # re: direct show,filter,elecard_demux做網(wǎng)絡(luò)播放器,主要格式:h264/avc,[未登錄](méi) 2009-10-26 09:11 jans2002
            幫你頂一下  回復(fù)  更多評(píng)論
              

            # re: direct show,filter,elecard_demux做網(wǎng)絡(luò)播放器,主要格式:h264/avc, 2009-10-26 13:00 TS,MPEG2,dvbc專家
            謝了,看來(lái),做這個(gè)的人,少了,  回復(fù)  更多評(píng)論
              

            # re: direct show,filter,elecard_demux做網(wǎng)絡(luò)播放器,主要格式:h264/avc, 2009-10-26 14:51 萌萌
            我也來(lái)頂下
            你比我做的上層多了。我最近還在苦惱 JRTP發(fā)送數(shù)據(jù)包的問(wèn)題呢  回復(fù)  更多評(píng)論
              

            # re: direct show,filter,elecard_demux做網(wǎng)絡(luò)播放器,主要格式:h264/avc, 2009-10-26 14:51 欣萌
            .。  回復(fù)  更多評(píng)論
              

            # re: direct show,filter,elecard_demux做網(wǎng)絡(luò)播放器,主要格式:h264/avc, 2009-10-26 16:13 TS,MPEG2,dvbc專家
            JRTP發(fā)送數(shù)據(jù)包 -- 這個(gè)我沒(méi)有做過(guò),不過(guò)我們是仿照l(shuí)ive 555, 做rtsp ,server, client, rtp包推流的,這個(gè)倒是成功了,現(xiàn)在就剩下播放了。  回復(fù)  更多評(píng)論
              

            # re: direct show,filter,elecard_demux做網(wǎng)絡(luò)播放器,主要格式:h264/avc, 2009-10-28 13:15 coloriy
            收藏了  回復(fù)  更多評(píng)論
              

            # re: direct show,filter,elecard_demux做網(wǎng)絡(luò)播放器,主要格式:h264/avc, 2009-11-03 11:38 天龍私服
            不錯(cuò)呀。并不是僅僅多3個(gè)字節(jié),我已經(jīng)更新blog內(nèi)容了  回復(fù)  更多評(píng)論
              

            # re: direct show,filter,elecard_demux做網(wǎng)絡(luò)播放器,主要格式:h264/avc, 2009-12-28 10:55 myideaer
            你好,請(qǐng)問(wèn)你的使用elecard mpeg multiplexer吧?這個(gè)filter應(yīng)該是拉模式下使用的。但是網(wǎng)絡(luò)穿過(guò)過(guò)來(lái)的數(shù)據(jù)不是應(yīng)該采用推模式下的嗎?是不是應(yīng)該采用elecard mpeg push multiplexer?不過(guò)我連接之后,輸出Pin 無(wú)法輸出。。。  回復(fù)  更多評(píng)論
              

            # re: direct show,filter,elecard_demux做網(wǎng)絡(luò)播放器,主要格式:h264/avc, 2010-01-06 14:46 TS,MPEG2,dvbc專家
            你好: 我還沒(méi)有用過(guò)push的 multiplexer, 目前雖然用的是elecard mpeg multiplexer,但是source filter是自己寫的,自己建立buffer pool,結(jié)果還可以的播放的,不過(guò) 出現(xiàn)的問(wèn)題, 每天下班的時(shí)候,開始運(yùn)行,第二天來(lái)的時(shí)候,就出現(xiàn)問(wèn)題了. 說(shuō)buffer pool滿了, 真奇怪的.  回復(fù)  更多評(píng)論
              

            # re: direct show,filter,elecard_demux做網(wǎng)絡(luò)播放器,主要格式:h264/avc,[未登錄](méi) 2010-02-23 17:15 路人甲
            @TS,MPEG2,dvbc專家
            最近也在研究這內(nèi)容
            不知道前輩有研究出來(lái)嗎 想向你討教一下
            我目前要做一個(gè) h264 decoder filter
            目前是用 ffmpeg 包成filter
            只是 render rate 卻是很慢很慢
            想問(wèn)說(shuō)前輩有沒(méi)有經(jīng)驗(yàn)可以分享
            謝謝
            tocute520@gmail.com
              回復(fù)  更多評(píng)論
              

            # re: direct show,filter,elecard_demux做網(wǎng)絡(luò)播放器,主要格式:h264/avc, 2010-03-03 18:19 TS,MPEG2,dvbc專家
            你好,目前做出來(lái)了, 目前用的是Ele card push demultipliex filter + mainconcept avc/h264 video decoder,

            播放慢的情況,我也遇到過(guò), 有兩個(gè)經(jīng)歷,一個(gè)是用了Ele card pull demux filter, 另一個(gè)是用了,SampleGrabber filter,

            最后我取消了SampleGrabber ,結(jié)果正常了, 不過(guò),如果要做基于網(wǎng)絡(luò)的,應(yīng)該還說(shuō)用push filter

            我目前要做一個(gè) h264 decoder filter – 你做的到底是那個(gè) 是demux還是video decoder?

            也給你回信了.

              回復(fù)  更多評(píng)論
              

            # re: direct show,filter,elecard_demux做網(wǎng)絡(luò)播放器,主要格式:h264/avc, 2010-10-31 18:34 張健
            @TS,MPEG2,dvbc專家
            n
            @TS,MPEG2,dvbc專家

            你好,請(qǐng)問(wèn)你是怎么將elecard MPEG push Demultiplexer的output pin搞出來(lái)的 ?  回復(fù)  更多評(píng)論
              

            # re: direct show,filter,elecard_demux做網(wǎng)絡(luò)播放器,主要格式:h264/avc, 2011-12-13 21:55 Andrews24Jana
            It is known that cash makes us disembarrass. But what to do if one does not have cash? The one way only is to get the <a href="http://goodfinance-blog.com">loan</a> or just short term loan.   回復(fù)  更多評(píng)論
              


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            ts,ps,mpeg2 decoder and analysis,ts分析.
            亚洲欧洲精品成人久久曰影片 | 久久播电影网| 久久久久国产| 亚洲人成伊人成综合网久久久| 久久天堂AV综合合色蜜桃网 | 色天使久久综合网天天| 久久国产免费直播| 中文字幕久久欲求不满| 亚洲人成网站999久久久综合| 久久久久成人精品无码中文字幕| 91精品婷婷国产综合久久| 亚洲综合久久久| 精品一区二区久久久久久久网站| 人人狠狠综合久久亚洲| 国产精品99精品久久免费| 看全色黄大色大片免费久久久| 久久久久久久亚洲Av无码| 日韩久久久久中文字幕人妻| 国产亚洲精品自在久久| 热久久国产欧美一区二区精品| 久久99国产综合精品免费| 久久综合偷偷噜噜噜色| 久久久久久久尹人综合网亚洲| 久久久久久曰本AV免费免费| 久久高潮一级毛片免费| 精品久久久无码人妻中文字幕豆芽| 欧美与黑人午夜性猛交久久久| 久久99精品综合国产首页| 综合人妻久久一区二区精品| 久久国产综合精品五月天| 99久久综合狠狠综合久久止| 伊人久久大香线蕉av一区| 手机看片久久高清国产日韩| 国产精品伊人久久伊人电影| 好属妞这里只有精品久久| 人妻精品久久久久中文字幕69| 中文字幕久久亚洲一区| 欧美激情精品久久久久久| 91久久精品无码一区二区毛片| 丁香狠狠色婷婷久久综合| 欧洲成人午夜精品无码区久久|