WEB开发网      濠电娀娼ч崐濠氬疾椤愶附鍋熸い鏍ㄧ〒闂勫嫰鏌﹀Ο渚Ц闁诲氦顕ч湁婵犲﹤楠告禍鍓х磼鏉堛劌绗氶柟宄版嚇閹晠宕归銈嗘濠电偞鍨堕幐鎾磻閹捐秮褰掓偐閻戞﹩妫勯梺鎼炲妼鐎涒晝绮嬪澶樻晝闁挎繂鏌婇敃鍌涚厵閻庢稒锚閻忥絾绻濇繝鍐ㄧ伌闁诡垰鍟村畷鐔碱敂閸♀晙绱樺┑鐐差嚟婵儳螞閸曨剚鍙忛柍鍝勬噹缁€澶嬬箾閹存繄锛嶆鐐灲閹綊宕惰濡插鏌涢妸銉ヮ劉缂佸倸绉归弫鎾绘晸閿燂拷 ---闂備焦瀵уú鈺呭箯閿燂拷
开发学院操作系统windows 2008 vlc的应用之三:动态调用vlc-0.9.4的libvlc.dll 阅读

vlc的应用之三:动态调用vlc-0.9.4的libvlc.dll

 2009-10-24 00:00:00 来源:WEB开发网 闂備線娼уΛ鎾箯閿燂拷闂備礁鎲¢崹鐢垫崲閹扮増鍎嶆い鎺戝€甸崑鎾斥槈濞嗗秳娌紓鍌氱▌閹凤拷濠电姭鎷冮崨顓濈捕闂侀潧娲ゅú銊╁焵椤掍胶鈯曢柕鍥╁仧缁辩偤鏁撻敓锟�闂備線娼уΛ鎾箯閿燂拷  闂備胶枪缁绘鈻嶉弴銏犳瀬闁绘劕鎼痪褔鏌曟繝蹇曠窗闁煎壊浜滈—鍐偓锝庡墮娴犙勭箾閸喎鐏ユい鏇樺劦椤㈡瑩鎮℃惔銇帮拷
核心提示: 3. MediaHandle和Media类,注意里面的非英文路径处理方法,vlc的应用之三:动态调用vlc-0.9.4的libvlc.dll(2),usingSystem;usingSystem.Runtime.InteropServices;namespaceMyOwnPlayer{class

3. MediaHandle和Media类,注意里面的非英文路径处理方法。

using System;
using System.Runtime.InteropServices;
namespace MyOwnPlayer
{
        class MediaHandle : SafeHandle
        {
                //构造方法
                public MediaHandle()
                        : base(IntPtr.Zero, true)
                {
                }
                //重写的方法
                public override bool IsInvalid
                {
                        get { return handle == IntPtr.Zero; }
                }
                protected override bool ReleaseHandle()
                {
                        if (!IsInvalid)
                        {
                                libvlc_media_release(this);
                                handle = IntPtr.Zero;
                        }
                        return true;
                }
                protected override void Dispose(bool disposing)
                {
                        ReleaseHandle();
                        base.Dispose(disposing);
                }
                //Dll动态导入
                [DllImport("libvlc")]
                private static extern void libvlc_media_release(MediaHandle mediaHandle);                
        }
}
 
using System;
using System.Text;
using System.Runtime.InteropServices;
namespace MyOwnPlayer
{
        class Media
        {
                //mediaHandle字段和属性
                private MediaHandle mediaHandle;
                public MediaHandle MediaHandle
                {
                        get { return mediaHandle; }
                }
                //构造方法                
                public Media(CoreHandle coreHandle, String filename, ref ExceptionStruct ex)
                {
                        //c#为UTF-16编码, libvlc.dll为UTF-8编码, 需要转换.
                        UTF8Encoding utf8 = new UTF8Encoding();
                        mediaHandle = libvlc_media_new(coreHandle, utf8.GetBytes(filename), ref ex);
                }
                
                //Dll动态导入
                [DllImport("libvlc")]
                private static extern MediaHandle libvlc_media_new
                        (CoreHandle coreHandle, [MarshalAs(UnmanagedType.LPArray)] byte[] link, ref ExceptionStruct ex);
                }
}

上一页  1 2 3 4  下一页

Tags:vlc 应用 动态

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接