开发学院操作系统windows 2008 vlc的应用之三:动态调用vlc-0.9.4的libvlc.dll 阅读

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

 2009-10-24 00:00:00 来源:WEB开发网 闂傚倸鍊风欢姘缚瑜嶈灋闁圭虎鍠栫粻顖炴煥閻曞倹瀚�闂傚倸鍊风粈渚€骞夐敓鐘插瀭闁汇垹鐏氬畷鏌ユ煙閹殿喖顣奸柛搴$У閵囧嫰骞掗幋婵冨亾閻㈢ǹ纾婚柟鐐灱濡插牊绻涢崱妤冃℃繛宀婁簽缁辨捇宕掑鎵佹瀸闂佺懓鍤栭幏锟�濠电姷鏁告慨顓㈠箯閸愵喖宸濇い鎾寸箘閹规洟姊绘笟鈧ḿ褍煤閵堝悿娲Ω閳轰胶鍔﹀銈嗗笂閼冲爼鍩婇弴銏$厪闁搞儮鏅涙禒褏绱掓潏鈺佷槐闁轰焦鎹囬弫鎾绘晸閿燂拷闂傚倸鍊风欢姘缚瑜嶈灋闁圭虎鍠栫粻顖炴煥閻曞倹瀚�  闂傚倸鍊烽懗鑸电仚缂備胶绮〃鍛村煝瀹ュ鍗抽柕蹇曞У閻庮剟姊虹紒妯哄闁诲繑姘ㄩ埀顒佸嚬閸撶喎顫忓ú顏勫瀭妞ゆ洖鎳庨崜浼存⒑闁偛鑻晶顔剧磼婢跺﹦绉虹€殿喖顭锋俊姝岊槷闁稿鎹囧Λ鍐ㄢ槈濞嗗繑娈橀梻浣风串缂嶁偓濞存粠鍓熼崺鈧い鎺戝€归弳顒勬煕鐎n亷韬€规洑鍗冲鍊燁槾闁哄棴绠撻弻銊╂偆閸屾稑顏�
核心提示: 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 应用 动态

编辑录入:爽爽 [复制链接] [打 印]
[]
  • 好
  • 好的评价 如果觉得好,就请您
      0%(0)
  • 差
  • 差的评价 如果觉得差,就请您
      0%(0)
赞助商链接