IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

18. diel - Audio / Video prehrávač v C # a WPF - Základ

V minulej lekcii, Zdroje (Resources) v C # .NET WPF , sme sa venovali resources. Jedným zo zaujímavých ovládacích prvkov WPF je <MediaElement>, ktorý slúži na prehrávanie audio a video súborov. V dnešnom C# .NET WPF si postupne popíšeme tvorbu jednoduchého prehrávača.

Funkcie

Najskôr by sme si mali ujasniť, aké funkcionality od prehrávača budeme chcieť. A aby sme sa v tom hneď "neutopili", budeme postupovať od jednoduchého k zložitejšiemu. Hotový projekt bude naozaj plnohodnotný prehrávač videa i hudby, kde si precvičíme okrem iného aj štýlovanie ovládacích prvkov:

Prehrávač videa v C# .NET WPF - Okenné aplikácie v C # .NET WPF

Aplikácia bude podporovať napr. Aj playlisty a ďalšie vychytávky:

Práca s hudobnými playlistami v C# .NET WPF - Okenné aplikácie v C # .NET WPF

Povedzme, že by sme zatiaľ chceli tieto funkcionality:

  • Vybrať a otvoriť súbor
  • spustiť prehrávanie
  • pozastaviť prehrávanie
  • ukončiť prehrávanie

To by pre začiatok mohlo stačiť. Neskôr si môžeme pridať ďalšie, napr. Ovládanie hlasitosti, posun videa a pod. A aby sme sa nezdržovali nejakým rozprávaním, pustíme sa hneď do tvorby a založíme si vo Visual Studiu nový WPF projekt pod názvom AVPrehravac.

Rozloženie prvkov

Zobrazí sa nám okno MainWindow.xaml s návrhom formulára, do ktorého vložíme <MediaElement /> a špecifikujeme veľkosť okna:

<Window x:Class="AVPrehravac.MainWindow"
        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:AVPrehravac"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <MediaElement/>
    </Grid>
</Window>

A máme v podstate hotovo :) Lenže, keď spustíme aplikáciu, tak vidíme, že nevidíme nič. Zabudli sme totiž ešte povedať <MediaElement>u, čo chceme prehrať. To sa zaistí vlastností Source, kde zadáme cestu k súboru.

V tejto chvíli by sa síce súbor prehral, ale čoskoro by sme zistili, že je prehrávač ako "kafemlejnek" a že prehráva stále to isté. Pridáme si teda do formulára rovno aj tlačidlo, ktorým si budeme vyberať požadovaný súbor a zároveň tlačidlo pre ukončenie aplikácie. A aby sa nám tam ovládacie prvky neválely ako seno, použijeme kontajner <Grid>, pomocou ktorého si ich rozmiestnime:

<Window x:Name="wdwPrehravac" x:Class="AVPrehravac.MainWindow"
        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:AVPrehravac"
        mc:Ignorable="d"
        Title="MainWindow" Height="470" Width="700">

    <Grid Margin="0,20,0,0">
        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
            <RowDefinition Height="10"/>
            <RowDefinition Height="30"/>
            <RowDefinition Height="10"/>
        </Grid.RowDefinitions>

        <MediaElement x:Name="avPrehravac"/>

        <Grid Grid.Row="2" Margin="20,0">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="50"/>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="80"/>
            </Grid.ColumnDefinitions>

            <Button Grid.Column="0" Content="Otevřít"
                    Click="BtnOtevri" ToolTip="Výběr videa"/>

            <Button Grid.Column="5" Content="Konec"
                    Click="ZavriOkno"
                    ToolTip="Ukončení aplikace"/>
        </Grid>
    </Grid>
</Window>

Okrem spomínaných dvoch tlačidiel sme pridali tiež k definícii okna jeho meno, aby sme ho mohli pomocou tlačidla zavrieť. Taktiež sme pomenovali <MediaElement>, aby ho bolo možné naplniť vybraným súborom. Všimnite si, že tlačidlá majú pripravené aj obslužné metódy, poďme ich pridať.

Code Behind

Presunieme sa do súboru MainWindow.xaml.cs, kam pridáme metódu pre tlačidlo otvárajúca multimediálny súbor:

private void BtnOtevri(object sender, RoutedEventArgs e)
{
    OpenFileDialog openFileDialog = new OpenFileDialog();
    openFileDialog.Filter = "Video soubory
           (*.mpg;*.mpeg;*.avi;*.mp4)|*.mpg;*.mpeg;*.avi;*.mp4";
    if (openFileDialog.ShowDialog() == true)
    {
        avPrehravac.Source = new Uri(openFileDialog.FileName);
    }
}

Nezabudnite si pridať príslušný using.

Metóda otvorí dialógové okno pre výber súboru a po výbere ho priradí k <MediaElement> u pomocou jeho vlastnosti Source. Tu sme výber pre začiatok pomocou filtra obmedzili len na video súbory. Akonáhle sa vykoná priradenie, začne <MediaElement> daný súbor prehrávať.

Druhá metóda bude obsluhovať zatváracie tlačidlo:

private void ZavriOkno(object sender, RoutedEventArgs e)
{
    wdwPrehravac.Close();
}

Ukončenie aplikácie sa vykonáva tým, že jej povieme, ktoré okno (pozri pomenovanie okna) má zatvoriť (wdwPrehravac).

Ovládacie tlačidlá

Na začiatku sme si však stanovili, že by sme chceli mať možnosť video aj pozastaviť a kedykoľvek spustiť znova. Pridáme si preto do aplikácie ďalšie tlačidlá a to pre spustenie videa, pre pozastavenie videa a pre ukončenie prehrávania.

XAML

Tlačidlá opäť umiestnime do našej Grid:

<Grid Grid.Row="2" Margin="20,0">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="50"/>
        <ColumnDefinition Width="50"/>
        <ColumnDefinition Width="50"/>
        <ColumnDefinition Width="50"/>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="80"/>
    </Grid.ColumnDefinitions>

    <Button x:Name="btnOtevri" Grid.Column="0" Content="Otevřít"
            Click="BtnOtevri" ToolTip="Výběr videa"/>

    <Button x:Name="btnHraj" Grid.Column="1" Content="Hraj"
            Click="BtnPrehraj"
            ToolTip="Přehrát video"/>

    <Button x:Name="btnPauza" Grid.Column="2" Content="Pauza"
            Click="BtnPauza"
            ToolTip="Pozastavit video"/>

    <Button x:Name="btnZavri" Grid.Column="3" Content="Zavřít"
            Click="BtnZavri"
            ToolTip="Zavřít video"/>

    <Button Grid.Column="5" Content="Konec"
            Click="ZavriOkno"
            ToolTip="Ukončení aplikace"/>
 </Grid>

Do kontajnera sme pridali ďalšie 3 stĺpce a umiestnili do nich požadovaná tlačidla. Zároveň ešte upravíme aj <MediaElement>:

<MediaElement x:Name="avPrehravac" LoadedBehavior="Manual"/>

Zmenili som preddefinovanú vlastnosť LoadedBehavior z hodnoty Play na Manual. To preto, aby sme mohli prehrávač ovládať ručne.

Code Behind

Súbor s obslužným kódom rozšírime o príslušnej metódy:

private void BtnPrehraj(object sender, RoutedEventArgs e)
{
    avPrehravac.Play();
}

private void BtnPauza(object sender, RoutedEventArgs e)
{
    avPrehravac.Pause();
}

private void BtnZavri(object sender, RoutedEventArgs e)
{
    avPrehravac.Close();
}

Základ máme v podstate hotový. Nabudúce, v lekcii Audio / Video prehrávač v C # a WPF - Úprava kódu , si vylepšíme kód prehrávače a v tej ďalšej zapracujeme na jeho vzhľade :)


 

Predchádzajúci článok
Zdroje (Resources) v C # .NET WPF
Všetky články v sekcii
Okenné aplikácie v C # .NET WPF
Preskočiť článok
(neodporúčame)
Audio / Video prehrávač v C # a WPF - Úprava kódu
Článok pre vás napísal Petr Pospíšil
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Aktivity