2021년 5월 31일 월요일

c# winform 에서 VLC 컴퍼넌트 추가방법(닷넷프레임워크용)

예전에는 ActiveX로 해서 32비트용 컴퍼넌트를 COM 객체에서 끌어와서
재생하는 방법을 택했는데..  VLC가 CSharp 래핑이 지원되면서
그럴필요가 없어졌다..  VLC 킹왕짱~


 c# winform 에서 VLC 컴퍼넌트 추가방법(닷넷프레임워크용)


누갯패키지에서 다음을 설치


- LibVLCSharp

- LibVLCSharp.WinForms

- VideoLAN.LibVLC.Windows


<코드 - 유징처리>


using LibVLCSharp.Shared;


<코드 - 멤버변수선언>

public LibVLC _libVLC;

public MediaPlayer _mp;

public Media media;

public bool isFullscreen = false;

public bool isPlaying = false;



<코드 - UI생성자 혹은 폼로드에서>

InitializeComponent()  // 생성자라면 이줄다음에 다음을 입력


Core.Initialize();

_libVLC = new LibVLC();

_mp = new MediaPlayer(_libVLC);

videoView1.MediaPlayer = _mp;



여기서 videoView1은 디자인단에서 VideoView 라는 컴퍼넌트를 말함.


<코드 - 재생버튼에서 처리>

_mp.Stop();

_mp.Play(new Media(_LibVLC, file));  //file은 로컬Path 또는 Uri를 가르킬수 있는 원격지주소

isPlaying = true;



<전체화면보기처리>

메인폼에서 KeyPreView를 true로 해놓고

메인폼 직계자식으로 panel을 놓고 이패널의 자식으로 모든 컴퍼넌트를 등록

해야지만 작동함 (안그러면 이상한데 가서 붙어있음)

videoview1 컨트롤도 panel을 부모로 놓아야 원활함.

전체화면에서 원복하는건 ESC키 같은걸로 원복 (위 첫줄에서 KeyPreview 됬으니까)


[최대화]

videoView1.Parent = this;

videoView1.Size = new Size(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);

videoView1.Location = new Point(0, 0);

videoView1.BringToFront();

this.FormBorderStyle = FormBorderStyle.None;

this.WindowState = FormWindowState.Maximized;

isFullscreen = true;


[최대화면에서 원래대로 돌아가기]

keydown에서 조건검사후 원복처리함


if (e.KeyCode == Keys.Escape && isFullscreen)

{

    this.FormBorderStyle = FormBorderStyle.Sizable;

    this.WindowState = FormWindowState.Normal;

    videoView1.Parent = pnl_vlc;

    isFullscreen = false;

}


여기서 pnl_vlc는 videoview를 감싸고 있는 패널을 말함.


댓글 없음:

댓글 쓰기