Laden...

Video wird nicht abgespielt

Erstellt von ajott vor 11 Jahren Letzter Beitrag vor 11 Jahren 3.065 Views
Thema geschlossen
A
ajott Themenstarter:in
15 Beiträge seit 2012
vor 11 Jahren
Video wird nicht abgespielt

Hi liebe Community,

ich habe ein Problem,
das ich überhaupt nicht verstehe.

Ich habe eine WPF-Anwendung und habe via XAML
ein Video eingebunden, dazu ein Button,
welcher dafür sorgen soll,
dass das Video abgespielt wird.

XAML:


<Window x:Class="MyApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Width="1000px" Height="500px">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition Height="auto"/>
        </Grid.RowDefinitions>
        <Image Name="VideoPreview" Grid.Row="0" Source="/MyApp;component/Images/Thumbnail.png" />
        <MediaElement LoadedBehavior="Manual" Name="TestVideo" Grid.Row="0" Source="/MyApp;components/Videos/WaterDay1.wmv"/>
        <Button Click="PlayVideo" Grid.Row="2">Play</Button>
    </Grid>
</Window>

MainWindow.xaml.cs


using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;


namespace MyApp
{
    /// <summary>
    /// Interaktionslogik für MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        public void PlayVideo(object sender, RoutedEventArgs e)
        {
            VideoPreview.Visibility = Visibility.Collapsed;
            TestVideo.Visibility = Visibility.Visible;
            TestVideo.Play();
        }
    }
}

Ich habe zuvor auch andere Manuals angeschaut,
aber überall steht das selbe 😕

Preview-Bild wird angezeigt.
Beim Klick des Buttons wird das Thumbnail entfernt
aber bei TestVideo.Play() hat er einfach Probleme.

mfg,
bbklol

106 Beiträge seit 2011
vor 11 Jahren

Huhu ajott,

kann es sein das du nen Tippfehler drin hast?

Source="/MyApp;component/Images/Thumbnail.png"

Source="/MyApp;components/Videos/WaterDay1.wmv"

Das Bild lädst du aus "component" und das Video aus "components".

MfG
Rabban

A
ajott Themenstarter:in
15 Beiträge seit 2012
vor 11 Jahren

Hi Rabban,

sobald ich beide Sources aus components hole
wird eines als Fehler markiert,
mit dem Hinweis, dass er die Source nicht findet.

Das selbe gilt auch für component.

mfg,
bbklol

5.657 Beiträge seit 2006
vor 11 Jahren

hat er einfach Probleme

wird eines als Fehler markiert

Welche Fehlermeldung gibt es denn?
Christian

Weeks of programming can save you hours of planning

A
ajott Themenstarter:in
15 Beiträge seit 2012
vor 11 Jahren

Fehlermeldung:> Fehlermeldung:

Die Ressource "MyApp;components/Images/Thumbnail.png" kann nicht gefunden werden.

mfg,
bbklol

106 Beiträge seit 2011
vor 11 Jahren

Das mit dem Bild hat doch schon funktioniert oder nicht?
Dann war "component" schon richtig, du musst es wahrscheinlich bei beiden ohne "s" schreiben oder hast du wirklich 2 verschiedene Ordner, einmal mit "s" und einmal ohne?

MfG
Rabban

6.862 Beiträge seit 2003
vor 11 Jahren

Dann war "component" schon richtig, du musst es wahrscheinlich bei beiden ohne "s" schreiben oder hast du wirklich 2 verschiedene Ordner, einmal mit "s" und einmal ohne?

Es gibt weder den einen, noch den anderen, siehe WPF Pack URI, woher das component dort drin kommt.

Selbst wenn die URIs aber richtig gezogen werden, wirds immer noch nicht tun, da MediaElement kein Abspielen von embedded Resourcen unterstützt. Man bekommt auch einen entsprechenden Fehler wenn man mal einfach das MediaFailed Event vom Media Player aboniert.

Baka wa shinanakya naoranai.

Mein XING Profil.

A
ajott Themenstarter:in
15 Beiträge seit 2012
vor 11 Jahren

Hi,

Selbst wenn die URIs aber richtig gezogen werden, wirds immer noch nicht tun, da MediaElement kein Abspielen von embedded Resourcen unterstützt.

Wie ist es mir dann möglich Videos abzuspielen?

mfg,
bbklol

771 Beiträge seit 2009
vor 11 Jahren

Hi,

das Video muss als Datei auf der Platte vorliegen, s. MediaElement-Klasse

Hinweise

Wenn Sie Medien mit der Anwendung verteilen, können Sie eine Mediendatei nicht als Projektressource verwenden. Sie müssen stattdessen in der Projektdatei den Medientyp auf Content und CopyToOutputDirectory auf PreserveNewest oder Always festlegen.

A
ajott Themenstarter:in
15 Beiträge seit 2012
vor 11 Jahren

Hi liebe Community,

erstmal vielen Dank für eure Hilfe.
Ich habe jetzt die DirectX SDK heruntergeladen

Microsoft.DirectX.AudioVideoPlayback.dll zu den Verweisen hinzugefügt.

und habe nun folgenden Code:

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;


using Microsoft.DirectX.AudioVideoPlayback;

namespace MyApp
{
    /// <summary>
    /// Interaktionslogik für MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window{

        Video vid = new Video("WaterDay1.wmv");
        public MainWindow()
        {
            InitializeComponent();
            vid.Owner = this.TestVideo;
        }

        public void PlayVideo(object sender, EventArgs e)
        {
            //VideoPreview.Visibility = Visibility.Collapsed;
            vid.Play();
        }
    }
}

bei folgender XAML:

<Window x:Class="MyApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Width="1000px" Height="500px" WindowStyle="None" WindowState="Maximized">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition Height="auto"/>
        </Grid.RowDefinitions>
        
        <MediaElement LoadedBehavior="Manual" Name="TestVideo" Grid.Row="0" />
        
        <Button Click="PlayVideo" Grid.Row="2">Play</Button>
    </Grid>
</Window>

Bei folgender Line

vid.Owner = this.TestVideo;

kommt folgende Fehlermeldung heraus,
mit der ich aktuell leider nicht viel anfangen kann.> Fehlermeldung:

Fehler 1 Eine implizite Konvertierung vom Typ "System.Windows.Controls.MediaElement" in "System.Windows.Forms.Control" ist nicht möglich. C:\Users\bbklol\documents\visual studio 2010\Projects\MyApp\MyApp\MainWindow.xaml.cs 29 25 MyApp

Welches XAML Element soll ich verwenden?

Ich suche weiter nach einerr Lösung und wenn ich eine finde,
dann lasse ich es auch wissen und poste eine,
falls andere Leute das selbe Problem haben wie ich.

mfg,
bbklol

5.657 Beiträge seit 2006
vor 11 Jahren

Hi ajott,

warum man nicht von dem einen in den anderen Typ umwandeln kann, sind wirklich Grundlagen. Siehe auch [Hinweis] Syntaxfehler selbst lösen (Compilerfehlermeldungen)

Christian

Weeks of programming can save you hours of planning

Thema geschlossen