팟플레이어, KMP 와 같은 유명 플레이어는 FFmpeg 라이브러리를 사용한다.
WPF 에서 제공하는 MediaElement를 대체하여 FFmpeg 라이브러리를 쉽게 사용할 수 있도록
NuGet 을 제공하는데 최근(19년 7월) 공개된 FFME를 사용해서 간단하게 재생가능한 Example을 만들어보자.
해당 내용은 공식 홈페이지를 참고해 만들어졌다.
https://unosquare.github.io/ffmediaelement/#quick-usage-guide-for-wpf-apps
필수 사항
- 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
- 압축 내용 중, 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
참고 사이트
https://unosquare.github.io/ffmediaelement/#quick-usage-guide-for-wpf-apps
https://github.com/unosquare/ffmediaelement
'C - C++ - C# - Form - WPF' 카테고리의 다른 글
[빠르게 보는 WPF] WPF MediaElement 를 이용한 미디어 / 비디오 / 동영상 재생 (1) | 2019.07.16 |
---|---|
[빠르게 보는] C# WPF 프로그램 영역 캡쳐 / 프로세스 캡쳐 (2) | 2019.07.09 |
[빠르게 보는] C# WPF 화면 캡쳐 / 스크린 캡쳐 (0) | 2019.07.09 |
[빠르게 보는] WPF 폴더 선택 다이얼로그 (0) | 2019.07.05 |
C# WPF user32.dll 을 이용하여 전역 키 후킹하기, 핫키 등록하기 / 키 보내기 (2) API를 이용한 예제보기 (2) | 2019.03.21 |
WRITTEN BY