2013-07-04 2 views
7

Ich möchte ein Video wie dieser Typ haben [link].Video ohne Verwendung von Media Player abspielen [Winform]

Ich arbeite an C# Windows Form Application (nicht NXA). Aber ich weiß nicht wie. Ich habe versucht, Microsoft.DirectX.AudioVideoPlayback, aber kein Glück.

Das ist, was ich bisher versucht:

OpenFileDialog rihanna = new OpenFileDialog(); 
if(rihanna.ShowDialog() == DialogResult.OK) 
{ 
    video = new Video(rihanna.FileName); 
    video.Owner = panel1;  
    video.Stop();  
} 

Nun, was kann ich tun? Ich habe versucht mit Videoklasse, aber wie gesagt, es hat einfach nicht funktioniert. Ich kann kompilieren, aber wenn ich das Programm ausführe, sehe ich das Formularfenster nicht.

Antwort

0

Okey-Namespace ist klar:

using Microsoft.DirectX.AudioVideoPlayback; 

Einige globale Variablen in Form:

Video vdo; 
public string mode="play"; 
public string PlayingPosition, Duration; 

Und jetzt in Ihrem Knopf oder was sonst noch zu öffnen:

OpenFileDialog openFileDialog = new OpenFileDialog(); 
openFileDialog.ShowDialog(); 
openFileDialog1.Title = "Select video file.."; 
openFileDialog1.InitialDirectory = Application.StartupPath; 
openFileDialog1.DefaultExt = ".avi"; 
openFileDialog.Filter = "Media Files|*.mpg;*.avi;*.wma;*.mov;*.wav;*.mp2;*.mp3|All Files|*.*"; 
vdo = new Video(openFileDialog.FileName); 

vdo.Owner = panel1; 
panel1.Width = 700; 
panel1.Height = 390; 
Duration = CalculateTime(vdo.Duration); 
PlayingPosition = "0:00:00"; 
txtStatus.Text = PlayingPosition + "/" + Duration; 

vdoTrackBar.Minimum = 0; 
vdoTrackBar.Maximum = Convert.ToInt32(vdo.Duration); 

und in einigen anderer Tastencode zum Starten/Anhalten:

BTW
if (vdo.Playing) 
{ 
    vdo.Pause(); 
    btnPlay.Text= "Play"; 
} 
else 
{ 
    vdo.Play(); 
    btnPlay.Text= "Pause"; 
} 

: Sie nennen nicht Variablen/Mitglieder oder etwas sonst in Ihrem Code nach Mädchen ...

Wenn Ihr nicht sicher sind, wie man es nennen, Es gibt einige Guidelines hier.

Das Ziel ist es, einen einheitlichen Satz von Namen Konventionen zu schaffen, die in Namen führen, die sofort ein Gefühl zu Entwicklern machen .

+3

Sie verwendete keine Variablennamen nach Mädchen, sie spielte ein Video und hatte wahrscheinlich eine konstante Datei mit dem Pfad des Videos, die Konstante wurde "Rihanna.FileName" genannt, also denke ich sagt, dass dies Rihana's Video ist (wenn du nicht weißt, dass Rihana ein Sänger ist, dann ist das wahrscheinlich ein Videoclip oder so.) –

5
using Microsoft.DirectX.AudioVideoPlayback; 

namespace Play_Video 
{ 

public partial class Form1 : Form 
{ 
    Video vdo; 

    public string mode="play"; 
    public string PlayingPosition, Duration; 
    public Form1() 
    { 
     InitializeComponent(); 
     VolumeTrackBar.Value = 4; 
    } 



    private void timer1_Tick(object sender, EventArgs e) 
    { 

     PlayingPosition = CalculateTime(vdo.CurrentPosition); 
     txtStatus.Text = PlayingPosition + "/" + Duration; 

     if (vdo.CurrentPosition >= vdo.Duration) 
     { 
      timer1.Stop(); 
      Duration = CalculateTime(vdo.Duration); 
      PlayingPosition = "0:00:00"; 
      txtStatus.Text = PlayingPosition + "/" + Duration; 
      vdo.Stop(); 
      btnPlay.BackgroundImage = Play_Video.Properties.Resources.btnplay; 
      vdoTrackBar.Value = 0; 
     } 
     else 
      vdoTrackBar.Value += 1; 

    } 

    private void openToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     if (vdo != null) 
     { 
      vdo.Stop(); 
      timer1.Stop(); 
      btnPlay.BackgroundImage = Play_Video.Properties.Resources.btnplay; 
      vdoTrackBar.Value = 0; 

     } 
     OpenFileDialog openFileDialog = new OpenFileDialog(); 
     openFileDialog.ShowDialog(); 
     openFileDialog1.Title = "Select video file.."; 
     openFileDialog1.InitialDirectory = Application.StartupPath; 
     openFileDialog1.DefaultExt = ".avi"; 
     openFileDialog.Filter = "Media Files|*.mpg;*.avi;*.wma;*.mov;*.wav;*.mp2;*.mp3|All Files|*.*"; 
     if (openFileDialog1.FileName != "") 
     { 
      Form1.ActiveForm.Text = openFileDialog.FileName + " - Anand Media Player"; 
      vdo = new Video(openFileDialog.FileName); 

      vdo.Owner = panel1; 
      panel1.Width = 700; 
      panel1.Height = 390; 
      Duration = CalculateTime(vdo.Duration); 
      PlayingPosition = "0:00:00"; 
      txtStatus.Text = PlayingPosition + "/" + Duration; 

      vdoTrackBar.Minimum = 0; 
      vdoTrackBar.Maximum = Convert.ToInt32(vdo.Duration); 
     } 
    } 

    private void btnPlay_Click(object sender, EventArgs e) 
    { 

     if (vdo != null) 
     { 
      if (vdo.Playing) 
      { 
       vdo.Pause(); 
       timer1.Stop(); 
       btnPlay.BackgroundImage = Play_Video.Properties.Resources.btnplay; 
      } 
      else 
      { 
       vdo.Play(); 
       timer1.Start(); 

       btnPlay.BackgroundImage = Play_Video.Properties.Resources.pause; 
      } 
     } 

    } 

    private void btnStop_Click(object sender, EventArgs e) 
    { 
     vdo.Stop(); 
     timer1.Stop(); 
     btnPlay.BackgroundImage = Play_Video.Properties.Resources.btnplay; 
     vdoTrackBar.Value = 0; 
    } 

    public string CalculateTime(double Time) 
    { 
     string mm, ss, CalculatedTime; 
     int h, m, s, T; 

     Time = Math.Round(Time); 
     T = Convert.ToInt32(Time); 

     h = (T/3600); 
     T = T % 3600; 
     m = (T/60); 
     s = T % 60; 

     if (m < 10) 
      mm = string.Format("0{0}", m); 
     else 
      mm = m.ToString(); 
     if (s < 10) 
      ss = string.Format("0{0}", s); 
     else 
      ss = s.ToString(); 

     CalculatedTime = string.Format("{0}:{1}:{2}", h, mm, ss); 

     return CalculatedTime; 
    } 

    private void VolumeTrackBar_Scroll(object sender, EventArgs e) 
    { 
     if (vdo != null) 
     { 
      vdo.Audio.Volume = CalculateVolume(); 
     } 
    } 
    public int CalculateVolume() 
    { 
     switch (VolumeTrackBar.Value) 
     { 
      case 1: 
       return -1500; 
      case 2: 
       return -1000; 
      case 3: 
       return -700; 
      case 4: 
       return -600; 
      case 5: 
       return -500; 
      case 6: 
       return -400; 
      case 7: 
       return -300; 
      case 8: 
       return -200; 
      case 9: 
       return -100; 
      case 10: 
       return 0; 
      default: 
       return -10000; 
     } 
    } 

    private void openFileDialog1_FileOk(object sender, CancelEventArgs e) 
    { 
     Duration = CalculateTime(vdo.Duration); 
     PlayingPosition = "0:00:00"; 
     txtStatus.Text = PlayingPosition + "/" + Duration; 
    } 

    private void vdoTrackBar_Scroll(object sender, EventArgs e) 
    { 
     if (vdo != null) 
     { 
      vdo.CurrentPosition = vdoTrackBar.Value; 
     } 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     MaximizeBox = false; 
    } 

    private void exitToolItem_Click(object sender,EventArgs e) 
    { 
     Application.Exit(); 
    } 
} 
} 
+0

Woher bekommst du 'Microsoft.DirectX'? –

+0

Microsoft.DirectX ist ein zusammen mit XNA. Das letzte Visual Studio, das es unterstützt, ist 2010, wenn ich mich nicht irre – YoniXw

0

Für AudioVideoPlayback, arbeiten Sie die AudioVideoPlayback Referenz, mit Verweis hinzufügen müssen> Add Reference> Browse> C:> Fenster> Microsoft.Net> DirectX für verwalteten Code> 1.0.2902.0> Microsoft.DirectX.AudioVideoPlayback.dll