반응형

 

팟플레이어, KMP 와 같은 유명 플레이어는 FFmpeg 라이브러리를 사용한다.

WPF 에서 제공하는 MediaElement를 대체하여 FFmpeg 라이브러리를 쉽게 사용할 수 있도록

NuGet 을 제공하는데 최근(19년 7월) 공개된 FFME를 사용해서 간단하게 재생가능한 Example을 만들어보자.

해당 내용은 공식 홈페이지를 참고해 만들어졌다.

https://unosquare.github.io/ffmediaelement/#quick-usage-guide-for-wpf-apps

 

FFME: The Advanced WPF MediaElement Alternative | FFME: WPF MediaElement replacement based on FFmpeg

⭐ Please star this project if you like it and show your appreciation via PayPal.Me Current NuGet Release Status Please note the current NuGet realease might require a different version of the FFmpeg binaries than the ones of the current state of the source

unosquare.github.io

 

필수 사항

- WPF Target 닷넷 프레임워크(.NET Framwork)는 4.6.1 이상으로 설정한다.

 

NuGet 설치

- [도구] 메뉴 > [NuGet 패키지 관리자] > [패키지 관리자 콘솔] 클릭

- "Install-Package FFME.Windows" 를 입력하여 Enter

- 설치완료 확인

 

 

FFmpeg 다운로드 및 파일 배치

 - FFmpeg 공홈에서 빌드되는 아키텍쳐(32비트/64비트)에 맞춰 라이브러리를 다운받자. 

   다운받을 때는 Linking 을 Shared로 받으면 된다.

   https://ffmpeg.org/download.html

 

Download FFmpeg

If you find FFmpeg useful, you are welcome to contribute by donating. More downloading options Git Repositories Since FFmpeg is developed with Git, multiple repositories from developers and groups of developers are available. Releases Approximately every 6

ffmpeg.org

 - 압축 내용 중, bin 아래 dll과 exe 파일을 풀어 C:/ffmpeg 로 옮긴다.

 

디자인

 

XAML

 - XAML <Window> 태그에 xmlns:ffme="clr-namespace:Unosquare.FFME;assembly=ffme.win" 속성을 추가한다.

 - <ffme:MediaElement> 태그를 사용하면 된다.

<Window x:Class="UtilityPackage.FFmpegTest"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:UtilityPackage"
        xmlns:ffme="clr-namespace:Unosquare.FFME;assembly=ffme.win"
        mc:Ignorable="d"
        Title="FFmpegTest" Height="450" Width="715.789">
    <Grid>
        <ffme:MediaElement x:Name="Media" Background="Gray" LoadedBehavior="Play" UnloadedBehavior="Manual" Margin="0,0,88,0" />
        <Button Content="파일선택" HorizontalAlignment="Left" Margin="625,10,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click"/>
    </Grid>
</Window>

 

 

CS

 - 위에서 압축해제한 ffmpeg 폴더를 지정 해주어야 한다. Unosquare.FFME.Library.FFmpegDirectory = @"C:\ffmpeg";

using Microsoft.Win32;
using System;
using System.Windows;

namespace UtilityPackage
{
    

    public partial class FFmpegTest : Window
    {
        public FFmpegTest() 
        {
            InitializeComponent();

            Unosquare.FFME.Library.FFmpegDirectory = @"C:\ffmpeg";
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {

            // Create OpenFileDialog 
            OpenFileDialog dlg = new OpenFileDialog()
            {
                DefaultExt = ".avi",
                Filter = "All files (*.*)|*.*",
                Multiselect = false
            };

            // Display OpenFileDialog by calling ShowDialog method 

            if (dlg.ShowDialog() == true)
            {
                Media.Source = new Uri(dlg.FileName);
                Media.Volume = 50;
                Media.SpeedRatio = 1;
                Media.Play();
            }
        }
    }
}

기본적인 사용법은 MediaElement와 동일하다. MediaElement 는 아래를 참고하자.

   https://derveljunit.tistory.com/306

 

[빠르게 보는 WPF] WPF MediaElement 를 이용한 미디어 / 비디오 / 동영상 재생

WPF 에서 가장 쉽게 비디오 플레이 할 수 있는 방법은 바로 기본 Component인 Media Element를 사용하는 것이다. Window Media에서 지원하는 동영상 파일 종류라면 모두 재생이 가능하며 간단한 방법으로 제어 또..

derveljunit.tistory.com

 

 

참고 사이트

https://unosquare.github.io/ffmediaelement/#quick-usage-guide-for-wpf-apps

 

FFME: The Advanced WPF MediaElement Alternative | FFME: WPF MediaElement replacement based on FFmpeg

⭐ Please star this project if you like it and show your appreciation via PayPal.Me Current NuGet Release Status Please note the current NuGet realease might require a different version of the FFmpeg binaries than the ones of the current state of the source

unosquare.github.io

https://github.com/unosquare/ffmediaelement

 

unosquare/ffmediaelement

FFME: The Advanced WPF MediaElement (based on FFmpeg) - unosquare/ffmediaelement

github.com

 

반응형

WRITTEN BY
데르벨준

,