'미디어플레이어'에 해당되는 글 2건

  1. 2010.04.30 오픈강의실
  2. 2010.04.22 미디어플레이어 (동기화해결)
                                                                           등록
                                                                           실행

이번 프로젝트는 WPF에서 영상을 띄우고 사용자가 그 영상에서 특정한 시간대에 자기가 넣고싶은 데이터를 등록하고 그것을 영상을 실행시켰을 때 등록한 데이터들이 영상 옆에 뜨는것이다.


옆에 텍스트창은 리치텍스트박스로 만들어져있고 5줄마다 한페이지로 기록되게해놓았다.
저장을하게되면 페이지마다 시작시간과 종료시간을 적고 저장을 하게된다.



영상을 실행을 하게되면 등록한 데이터들이 오른쪽 Flow Document에 뜨게된다.




우선..프로젝트를 진행하였지만 결론부터 말하면 실패다. 구현할려고 하였던 기능을 시간안에 구현하지 못하였다.
시간이 있으면 더 구현하였겠지만 지금 하고있는 최종 프로젝트가 끝나게 되거나 시간이 남을 시에 나머지를 다 구현해야겠다.

영상옆에 자막을 띄우는 정도밖에 못하였다.


다음에 추가적으로 구현해야 될 부분은

1. 이미지 추가
2. 영상 추가(해당영상 옆에 보조로 보여줄수있는 영상)
3. 텍스트 폰트 효과(Flow Document에 적용해야 한다.)
4. XML파일과 동영상파일 매핑시키기
5. 자막처리 알고리즘 보완

'프로그래밍 기초 > 미니프로젝트' 카테고리의 다른 글

오픈강의실  (0) 2010.04.30
Posted by 아몰라

댓글을 달아 주세요


우선 전에 썼었던 MediaTimeline과 MediaClock 클래스를 사용하지않았다.

Timeline을 셋팅하고 그 상태서 Clock을 생성하고 그 Clock을 MediaElement와 연결했지만

연결을 하게되면 MediaElement로 제어가 되질않고  미디어엘리먼트의 클락의 컨트롤러로 제어를 해야됐다. 그리고  MediaElement에 position을 지정 해줄수 가 없었다. position을 임의로 지정하게 되면

미디어를 지정하는동안 클락을 변경할 수 없다 라는 오류가 난다.

이것을 해결하기위해서 여러 방법을 써봤는데 해결하지 못하였고

결국 MediaTImeline과 MediaClock을 사용하지 않는 방법을 사용하였다.

해결방법은

DispatcherTimer를 이용하였는데  우선 bool 변수를 하나 선언해서

매초마다 이벤트가 발생해서 미디어 -> 슬라이더바가  변경 될때와

슬라이더바가 움직여서 영상이 바뀔때가 겹치지않게 bool로 제어를 해주었다.


아래와같다~!

bool con = false;

//마우스를 떼면 false로 바뀌고 Tick이 다시 계속 실행된다.
private void timebar_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
      con = false;            
}        

//마우스를 클릭하면 true로 바뀌고
private void timebar_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
      con = true;
}

//클릭하면서 true로 바뀌었고  Tick이 발생안한다. 그 때 바를 움직여서 Position을 바꿔놓는다.
private void timebar_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
       if (con)
      {
       int SliderValue = (int)timebar.Value;

       TimeSpan ts = new TimeSpan(0, 0, 0, 0, SliderValue);

       mediaElement1.Position = ts;
       }
}

//초기값이 false이기 때문에 계속 실행된다.
void timer_Tick(object sender, EventArgs e)
{
    if (!con)
    {
        timebar.Value = mediaElement1.Position.TotalMilliseconds;   
              
        TimeSpan ts = new TimeSpan();
        ts = mediaElement1.Position;
                
        textBox1.Text = (string)ts.Seconds;
                
    }
}   


Posted by 아몰라

댓글을 달아 주세요

이전버튼 1 이전버튼