성태의 닷넷 이야기
홈 주인
모아 놓은 자료
프로그래밍
질문/답변
사용자 관리
사용자
메뉴
아티클
외부 아티클
유용한 코드
온라인 기능
MathJax 입력기
최근 덧글
[정성태] Modules 창(Ctrl+Shift+U)을 띄워서, 해당 Op...
[정성태] 만드실 수 있습니다. 단지, Unity 엔진 내의 스크립트와 W...
[공진영] 안녕하세요 좋은글 감사합니다. 현재 제가 wpf로 관제 모...
[정성태] The Windows Registry Adventure #1: ...
[정성태] systemd for Developers I ; https:/...
[정성태] 엄밀히 object 타입의 인스턴스가 다른 타입으로 형변환 가능...
[정성태] 아래의 글에서 나오는 "Windows Application Pa...
[정성태] The history of calling conventions,...
[정성태] Secure and Deploy .NET Windows Form...
[정성태] Get Started with Milvus Vector DB i...
글쓰기
제목
이름
암호
전자우편
HTML
홈페이지
유형
제니퍼 .NET
닷넷
COM 개체 관련
스크립트
VC++
VS.NET IDE
Windows
Team Foundation Server
디버깅 기술
오류 유형
개발 환경 구성
웹
기타
Linux
Java
DDK
Math
Phone
Graphics
사물인터넷
부모글 보이기/감추기
내용
<div style='display: inline'> <h1 style='font-family: Malgun Gothic, Consolas; font-size: 20pt; color: #006699; text-align: center; font-weight: bold'>C# - VLC(ActiveX) 컨트롤을 레지스트리 등록 없이 사용하는 방법</h1> <p> VLC media player가 ActiveX 인터페이스를 제공하고 있군요. ^^<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > VLC Documentation: ActiveX ; <a target='tab' href='https://wiki.videolan.org/ActiveX/'>https://wiki.videolan.org/ActiveX/</a> </pre> <br /> VLC ActiveX를 사용하는 방법은 아래의 Youtube 강좌에서 자세하고 다루고 있으니 제가 굳이 재탕할 필요는 없겠습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Using the VLC ActiveX control in WPF ; <a target='tab' href='http://www.youtube.com/watch?v=cGc_ra9CsLI'>http://www.youtube.com/watch?v=cGc_ra9CsLI</a> </pre> <br /> 대신 ^^ 이전에 소개했던 방법을 이용해서,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Registry 등록 없이 COM 개체 사용 ; <a target='tab' href='http://www.sysnet.pe.kr/2/1/262'>http://www.sysnet.pe.kr/2/1/262</a> Registry 등록 과정 없이 COM 개체 사용 - 두 번째 이야기 ; <a target='tab' href='http://www.sysnet.pe.kr/2/0/1167'>http://www.sysnet.pe.kr/2/0/1167</a> ClickOnce로 ActiveX를 같이 배포하는 방법 ; <a target='tab' href='http://www.sysnet.pe.kr/2/0/692'>http://www.sysnet.pe.kr/2/0/692</a> </pre> <br /> VLC 프로그램을 설치하지 않고도 파일 복사만으로 구동이 되도록 해보겠습니다. ^^<br /> <br /> <hr style='width: 50%' /><br /> <br /> 일단 VLC 원본 파일이 필요하기 때문에 별도로 설치해 둔 가상 머신에 VLC를 설치했습니다. 그랬더니, C:\Program Files (x86)\VideoLAN\VLC 폴더에 바이너리가 위치했고 <a target='tab' href='http://www.youtube.com/watch?v=cGc_ra9CsLI'>Using the VLC ActiveX control in WPF</a> 글에 따라 "VLC ActiveX Plugin and IE Web Plugin v2" 컨트롤을 테스트 WinForm 프로그램에 올려놓고 간단하게 잘 실행이 되는 것을 확인했습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > private void Form1_Load(object sender, EventArgs e) { this.axVLCPlugin21.playlist.add(@"...[URL]..."); this.axVLCPlugin21.playlist.play(); } </pre> <br /> 실행된 상태에서 Process Explorer를 통해 로드된 VLC 바이너리 목록을 보면, 루트의 axvlc.dll, libvlc.dll, libvlccore.dll들이 올라와 있었고 나머지는 모두 그 하위의 plugins에 있는 것들이 사용되는 것을 확인했습니다. 그 목록에 포함된 디렉토리를 기준으로 모두 포함시켜 보면 총 42MB의 용량이 나오는데 압축해도 19MB나 됩니다. 즉, VLC ActiveX를 쓰는 것만으로 응용 프로그램의 용량이 20MB는 넘는다고 보시면 됩니다.<br /> <br /> 자, 그럼 reg-free로 사용해 볼까요? ^^<br /> <br /> 이를 위해 가장 중요한 axvlc.dll.manifest 파일을 다음과 같이 만들어 주어야 합니다.<br /> <br /> <pre style='height: 400px; margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity version="2.1.3.0" processorArchitecture="x86" name="axvlc.dll" type="win32"> </assemblyIdentity> <file name="axvlc.dll"> <comClass clsid="{E23FE9C6-778E-49D4-B537-38FCDE4887D8}" threadingModel="Apartment"> </comClass> <comClass clsid="{9BE31822-FDAD-461B-AD51-BE1D1C159921}" threadingModel="Apartment"> </comClass> <typelib tlbid="{DF2BBE39-40A8-433B-A279-073F48DA94B6}" version="1.0" helpdir="VLC 1.0 Type Library"> </typelib> </file> <comInterfaceExternalProxyStub name="IVLCControl" iid="{C2FA41D0-B113-476E-AC8C-9BD14999C1C1}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}" baseInterface="{00000000-0000-0000-C000-000000000046}" tlbid="{DF2BBE39-40A8-433B-A279-073F48DA94B6}"> </comInterfaceExternalProxyStub> <comInterfaceExternalProxyStub name="IVLCAudio" iid="{9E0BD17B-2D3C-4656-B94D-03084F3FD9D4}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}" baseInterface="{00000000-0000-0000-C000-000000000046}" tlbid="{DF2BBE39-40A8-433B-A279-073F48DA94B6}"> </comInterfaceExternalProxyStub> <comInterfaceExternalProxyStub name="IVLCInput" iid="{49E0DBD1-9440-466C-9C97-95C67190C603}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}" baseInterface="{00000000-0000-0000-C000-000000000046}" tlbid="{DF2BBE39-40A8-433B-A279-073F48DA94B6}"> </comInterfaceExternalProxyStub> <comInterfaceExternalProxyStub name="IVLCLogo" iid="{8A4A20C2-93F3-44E8-8644-BEB2E3487E84}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}" baseInterface="{00000000-0000-0000-C000-000000000046}" tlbid="{DF2BBE39-40A8-433B-A279-073F48DA94B6}"> </comInterfaceExternalProxyStub> <comInterfaceExternalProxyStub name="IVLCDeinterlace" iid="{BC97469F-CB11-4037-8DCE-5FC9F5F85307}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}" baseInterface="{00000000-0000-0000-C000-000000000046}" tlbid="{DF2BBE39-40A8-433B-A279-073F48DA94B6}"> </comInterfaceExternalProxyStub> <comInterfaceExternalProxyStub name="IVLCMarquee" iid="{8D076AD6-9B6F-4150-A0FD-5D7E8C8CB02C}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}" baseInterface="{00000000-0000-0000-C000-000000000046}" tlbid="{DF2BBE39-40A8-433B-A279-073F48DA94B6}"> </comInterfaceExternalProxyStub> <comInterfaceExternalProxyStub name="IVLCPlaylist" iid="{54613049-40BF-4035-9E70-0A9312C0188D}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}" baseInterface="{00000000-0000-0000-C000-000000000046}" tlbid="{DF2BBE39-40A8-433B-A279-073F48DA94B6}"> </comInterfaceExternalProxyStub> <comInterfaceExternalProxyStub name="IVLCPlaylistItems" iid="{FD37FE32-82BC-4A25-B056-315F4DBB194D}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}" baseInterface="{00000000-0000-0000-C000-000000000046}" tlbid="{DF2BBE39-40A8-433B-A279-073F48DA94B6}"> </comInterfaceExternalProxyStub> <comInterfaceExternalProxyStub name="IVLCSubtitle" iid="{465E787A-0556-452F-9477-954E4A940003}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}" baseInterface="{00000000-0000-0000-C000-000000000046}" tlbid="{DF2BBE39-40A8-433B-A279-073F48DA94B6}"> </comInterfaceExternalProxyStub> <comInterfaceExternalProxyStub name="IVLCVideo" iid="{0AAEDF0B-D333-4B27-A0C6-BBF31413A42E}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}" baseInterface="{00000000-0000-0000-C000-000000000046}" tlbid="{DF2BBE39-40A8-433B-A279-073F48DA94B6}"> </comInterfaceExternalProxyStub> <comInterfaceExternalProxyStub name="IVLCControl2" iid="{2D719729-5333-406C-BF12-8DE787FD65E3}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}" baseInterface="{00000000-0000-0000-C000-000000000046}" tlbid="{DF2BBE39-40A8-433B-A279-073F48DA94B6}"> </comInterfaceExternalProxyStub> <comInterfaceExternalProxyStub name="IVLCMediaDescription" iid="{796A2C2D-5B11-4FB5-9077-56D5E674972B}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}" baseInterface="{00000000-0000-0000-C000-000000000046}" tlbid="{DF2BBE39-40A8-433B-A279-073F48DA94B6}"> </comInterfaceExternalProxyStub> </assembly> </pre> <br /> 나머지 절차는 간단하지요. ^^ .manifest 파일을 기존 윈폼 프로젝트에 포함시키고 빌드합니다. 물론 빌드된 결과 폴더에 VLC 파일들을 함께 복사해 주어야 합니다. 이제 다음과 같이 해당 파일들을 그대로 대상 PC에 복사하면 정상적으로 동영상이 VLC ActiveX 컨트롤 안에서 보여지는 것을 확인할 수 있습니다. ^^<br /> <br /> <img onclick='toggle_img(this)' class='imgView' alt='regfree_vlc_use_1.png' src='/SysWebRes/bbs/regfree_vlc_use_1.png' /><br /> <br /> 완성된 예제 파일은 다음에 올려두었으니 참고하세요. ^^<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > reg_free_vlc ; <a target='tab' href='https://github.com/stjeong/reg_free_vlc'>https://github.com/stjeong/reg_free_vlc</a> </pre> <br /> 그냥 다운로드 받으셔서 Visual Studio에 로드한 다음 빌드하면 곧바로 VLC ActiveX 예제가 실행됩니다.<br /> </p><br /> <br /><hr /><span style='color: Maroon'>[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]</span> </div>
첨부파일
스팸 방지용 인증 번호
1268
(왼쪽의 숫자를 입력해야 합니다.)