C# hudba

C++, C#, Visual Basic, Delphi, Perl a ostatní

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod Nogar 24. 11. 2010 22:15

Ahoj potřebuju poradit, chtěl bych přehrát hudbu v pozadí aplikace.
Zkusil jsem hodně možností jenže buď to hodí chybu a nebo nic nehraje.
Třeba napíšu:

Microsoft.DirectX.AudioVideoPlayback.Audio audio;
audio = Microsoft.DirectX.AudioVideoPlayback.Audio.FromFile(@"D:\music.mp3");
audio.Play();

Nepíše to žádný error, tak spustím aplikaci a nic nehraje. Zkoušel jsem jinou cestu, jinou pisničku a furt nic. Napadlo mě jestli to není někde ztlumené ale nvm jak to zesílit.
Nogar
Junior
Uživatelský avatar

Odeslat příspěvekod klukzpalmy 24. 11. 2010 22:17

zkusil jsi nejaky wav soubor?
klukzpalmy
Junior

Odeslat příspěvekod Nargon 25. 11. 2010 01:47

Doporucuju pouzit tridu MediaPlayer. Je to soucast WPF (.net 3.0)
Kód: Vybrat vše
            System.Windows.Media.MediaPlayer mp = new System.Windows.Media.MediaPlayer();
            mp.Open(new Uri(@"D:\test.mp3"));
            mp.Play();

A mezi reference projektu si musis pridat PresentationCore.dll a WindowsBase.dll
Desktop: Ryzen 7 1800X (3.95GHz, 1.35V), Asus Crosshair VI Hero, 16GB DDR4 Ram (3200MHz), 128GB SSD + 3TB HDD, Nvidia GTX 1080
Notebook: Asus UL50VT 15.6" (SU7300@1.7GHz, 4GB ram, 500GB HDD, Intel GMA 4500MHD + nVidia G210M, dlouha vydrz cca 7+ hod)
Nargon
Moderátor

Odeslat příspěvekod mracka michal 25. 11. 2010 10:25

Nogar píše:Zkusil jsem hodně možností jenže buď to hodí chybu a nebo nic nehraje.
Třeba napíšu:

Microsoft.DirectX.AudioVideoPlayback.Audio audio;
audio = Microsoft.DirectX.AudioVideoPlayback.Audio.FromFile(@"D:\music.mp3");
audio.Play();


Ukaz viac kodu, najlepsie celu metodu. Predpokladam, ze to robis pri nejakej udalosti - t.j. objekt audio vytvoris a vzapati dispoznes.
mracka michal
Junior
Uživatelský avatar

Odeslat příspěvekod Nogar 26. 11. 2010 21:40

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using TheGame.Properties;
using Microsoft.DirectX.AudioVideoPlayback;
using Microsoft.DirectX.DirectSound;
using Microsoft.DirectX.DirectPlay;
using Microsoft.DirectX;
using System.Media;
using Microsoft.DirectX.DirectDraw;

namespace Form1
{
public partial class Form1 : Form

{


public Form1()
{

Microsoft.DirectX.AudioVideoPlayback.Audio audio;
audio = Microsoft.DirectX.AudioVideoPlayback.Audio.FromFile(@"D:\music.mp3");
audio.Play();



ja to mam jako při načtení formy, navíc tam mam aji knihovny a proto to nechapu : :roll: :?: :oboze
Nogar
Junior
Uživatelský avatar

Odeslat příspěvekod rK_s 26. 11. 2010 21:56

Dal by som to von z konstruktora. Do nejakeho ineho eventu.
rK_s
rK_s
Junior
Uživatelský avatar

Odeslat příspěvekod Nargon 26. 11. 2010 22:55

Mno vse co je v tom jmenem prostoru "Microsoft.DirectX" doporucuju nepouzivat. Byl to prvni pokus microsoftu o vytvoreni rizeneho kodu DirectX, a jak to tak byva u prvnich pokusu, moc se jim to nepovedlo. A proto taky s vyvojem prestali

Jestli chces delat hry, tak ti doporucuju pouzivat XNA Game Studio, tahle implementace DirectX se uz microsoftu povedla lepe a stale to vyvijeji.

A jestli ti jde jen o to prehrani hudby na formulari, tak viz muj predchozi post o vyuziti WPF. Tohle mi totiz zcela bez problemu funguje:
Kód: Vybrat vše
using System;
using System.Windows.Forms;

namespace WindowsFormsApplicationTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            System.Windows.Media.MediaPlayer mp = new System.Windows.Media.MediaPlayer();
            mp.Open(new Uri(@"D:\test.mp3"));
            mp.Play();
        }
    }
}
Desktop: Ryzen 7 1800X (3.95GHz, 1.35V), Asus Crosshair VI Hero, 16GB DDR4 Ram (3200MHz), 128GB SSD + 3TB HDD, Nvidia GTX 1080
Notebook: Asus UL50VT 15.6" (SU7300@1.7GHz, 4GB ram, 500GB HDD, Intel GMA 4500MHD + nVidia G210M, dlouha vydrz cca 7+ hod)
Nargon
Moderátor

Odeslat příspěvekod Nogar 27. 11. 2010 13:18

Když to napišu tak jak to říkaš tak mi to hodí

Error 1 The type or namespace name 'Media' does not exist in the namespace 'System.Windows' (are you missing an assembly reference?) D:\C#\Form\Form.cs 47 28 Form

a v referencích jsem to nenašel
Nogar
Junior
Uživatelský avatar

Odeslat příspěvekod Nargon 27. 11. 2010 13:56

Mas nainstalovany .NET 3.0 nebo 3.5? Pripadne 4.0? A mas ten projekt nastaveny na .NET 3.0 nebo vyssi? Jestli ho mas nastaveny jen jako 2.0 tak se ti ty knihovny samozrejme neukazou.
Ja mam nainstalovany .NET 3.5 i 4.0.
A u me se ty soubory nainstalovaly do "c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.0\"

A i ty knihovny vidim ve visual studiu kdyz chci pridat .NET referenci.
Pripadne si zaloz WPF projekt a podivej se kam se ty pridane knihovny odkazuji.
Desktop: Ryzen 7 1800X (3.95GHz, 1.35V), Asus Crosshair VI Hero, 16GB DDR4 Ram (3200MHz), 128GB SSD + 3TB HDD, Nvidia GTX 1080
Notebook: Asus UL50VT 15.6" (SU7300@1.7GHz, 4GB ram, 500GB HDD, Intel GMA 4500MHD + nVidia G210M, dlouha vydrz cca 7+ hod)
Nargon
Moderátor

Odeslat příspěvekod Nogar 27. 11. 2010 15:31

mam net 3.5 a ukládá se mi to u projektu. Jo a ještě jedna věc když přehrávam video a to video skončí jak mam udělat aby se zavřelo nvm jak ma zjišťovat jestli dojelo nakonec.
Nogar
Junior
Uživatelský avatar

Odeslat příspěvekod Nargon 27. 11. 2010 16:50

Mno vzhledem k tomu ze nepises nic o chybach, tak ti to asi jde prehravat.
A jak tedy detekovat konec? Celkem snadno. MediaPlayer ma celkem dost eventu, tak staci vybrat ten spravnej:
Kód: Vybrat vše
public Form1()
{
    InitializeComponent();
    System.Windows.Media.MediaPlayer mp = new System.Windows.Media.MediaPlayer();
    mp.MediaEnded += new EventHandler(mp_MediaEnded);
    mp.Open(new Uri(@"D:\test.mp3"));
    mp.Play();           
}

void mp_MediaEnded(object sender, EventArgs e)
{
    MessageBox.Show("Prehravani dojelo na konec.");
}
Desktop: Ryzen 7 1800X (3.95GHz, 1.35V), Asus Crosshair VI Hero, 16GB DDR4 Ram (3200MHz), 128GB SSD + 3TB HDD, Nvidia GTX 1080
Notebook: Asus UL50VT 15.6" (SU7300@1.7GHz, 4GB ram, 500GB HDD, Intel GMA 4500MHD + nVidia G210M, dlouha vydrz cca 7+ hod)
Nargon
Moderátor

Odeslat příspěvekod Nogar 27. 11. 2010 19:08

jako ja to potřebuju dat do podmínky



Kód: Vybrat vše
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using TheGame.Properties;
using Microsoft.DirectX.AudioVideoPlayback;
using Microsoft.DirectX.DirectSound;
using Microsoft.DirectX.DirectPlay;
using Microsoft.DirectX;
using System.Media;
using Microsoft.DirectX.DirectDraw;

namespace TheGame
{
    public partial class Form1 : Form
       
    {
        Microsoft.DirectX.AudioVideoPlayback.Video video = new Microsoft.DirectX.AudioVideoPlayback.Video("video.avi");

 
        public Form1()
        {
           
           

            //VIDEO//

            video.Owner = this;
            video.Play();
            if (video.Ending == true)
{
                video.Stop();
                video.Size = new Size(0, 0);
                video.Owner = null;
}


Tak jak to mam napsané stím if to nejde ale prostě potřebuju aby když to video skončí aby zmizelo, protože jinak tam je pořad.
Nogar
Junior
Uživatelský avatar

Odeslat příspěvekod Nargon 27. 11. 2010 19:29

Boha jehova.
"video.Ending" Je udalost (Event) vis co to znamena? jak to funguje? jak se s tim pracuje? (odpovim za tebe 3x ne, podle toho co jsi napsal)

Nemam chut to vysvetlovat, ale velice ti doporucuju to nastudovat, u "okenich" aplikaci to dost potrebujes.
Ale jak teda zaridit aby to delalo co chces. Doufam ze pouzivas Visual Studio, protoze to vysvetlim v nem.

Napis: video.Ending
Pak stiskni + a pak jeste =, visual studio ti neco nabidne, tak klikni 2x na tab. Vygeneruje to metodu. (pisu to slozite, protoze se mi nechce experimentovat jaky typy to tam posila, tak to necham VS vygenerovat)
V teto metode vymaz to vyhozeni vyjimky NotImplemented.
A napis do ni ten tvuj kod, co chces aby to delalo, kdyz to video dohraje.
Ve tvem pripade tedy asi tyhle 3 radky:
video.Stop(); //ale tohle je asi zbytecne, vzhledem k tomu ze to video uz zkoncilo tak uz asi bude stoply.
video.Size = new Size(0, 0);
video.Owner = null;

Snad jsi to pochopil.
Desktop: Ryzen 7 1800X (3.95GHz, 1.35V), Asus Crosshair VI Hero, 16GB DDR4 Ram (3200MHz), 128GB SSD + 3TB HDD, Nvidia GTX 1080
Notebook: Asus UL50VT 15.6" (SU7300@1.7GHz, 4GB ram, 500GB HDD, Intel GMA 4500MHD + nVidia G210M, dlouha vydrz cca 7+ hod)
Nargon
Moderátor

Odeslat příspěvekod Nogar 27. 11. 2010 19:55

Díky moc jenže když to takhle napišu a spustím tak to napíše :
Odkaz na objekt není nastaven na instanci objektu.
A nvm co tam mám za chybu.
Kód: Vybrat vše
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using TheGame.Properties;
using Microsoft.DirectX.AudioVideoPlayback;
using Microsoft.DirectX.DirectSound;
using Microsoft.DirectX.DirectPlay;
using Microsoft.DirectX;
using System.Media;
using Microsoft.DirectX.DirectDraw;

namespace TheGame
{
    public partial class Form1 : Form
       
    {
        Microsoft.DirectX.AudioVideoPlayback.Video video = new Microsoft.DirectX.AudioVideoPlayback.Video("Music\\AMD.avi");

 
        public Form1()
        {
           
           

            //VIDEO//

            video.Owner = this;
            video.Play();
            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
            video.Ending += new EventHandler(video_Ending);

       void video_Ending(object sender, EventArgs e)
        {
            video.Dispose();
            video.Owner = null;
           
        }
Nogar
Junior
Uživatelský avatar

Odeslat příspěvekod Nargon 27. 11. 2010 23:15

Mno a na kterem radku to hlasi tu chybu?
Jestli u toho "video.Owner = null;" tak bych to i chapal, protoze pri zavolani Dispose ten objekt znicis a jakekoli dalsi prikazy, pracujici s timto objektem by meli vyhazovat tuhle chybu. Jestli ti to pise jinde, tak taky nechapu proc.
Desktop: Ryzen 7 1800X (3.95GHz, 1.35V), Asus Crosshair VI Hero, 16GB DDR4 Ram (3200MHz), 128GB SSD + 3TB HDD, Nvidia GTX 1080
Notebook: Asus UL50VT 15.6" (SU7300@1.7GHz, 4GB ram, 500GB HDD, Intel GMA 4500MHD + nVidia G210M, dlouha vydrz cca 7+ hod)
Nargon
Moderátor

Odeslat příspěvekod Nogar 28. 11. 2010 10:44

no píše to u Application.Run(new Form1()); jsem zjistil že když tam není to video.Dispose(); tak to nic nehlásí , ale když ten příkaz použiju v jiném eventu tak to funguje ,pouze v tom
void video_Ending(object sender, EventArgs e) to hlásí chybu
Nogar
Junior
Uživatelský avatar

Odeslat příspěvekod Nargon 28. 11. 2010 11:01

Tak to netusim co je za problem.
Desktop: Ryzen 7 1800X (3.95GHz, 1.35V), Asus Crosshair VI Hero, 16GB DDR4 Ram (3200MHz), 128GB SSD + 3TB HDD, Nvidia GTX 1080
Notebook: Asus UL50VT 15.6" (SU7300@1.7GHz, 4GB ram, 500GB HDD, Intel GMA 4500MHD + nVidia G210M, dlouha vydrz cca 7+ hod)
Nargon
Moderátor

Odeslat příspěvekod Nogar 28. 11. 2010 18:16

Taky to furt nechapu s tou hudbou napišu to


System.Windows.Media.MediaPlayer mp = new System.Windows.Media.MediaPlayer();
mp.Open(new Uri(@"D:\music.mp3"));
mp.Play();

mam tam už knihovny ale prostě nehraje, studio zase nehlásí žadnou chybu a prostě nic nejde slyšet
Nogar
Junior
Uživatelský avatar

Odeslat příspěvekod Nargon 28. 11. 2010 20:37

To je zvlastni. Alespon nejakou chybu bych cekal.

Mno repraky asi mas spravne zapojeny, i ve windows nastavene spravne defaultni zarizeni. Ale kdyz zkusis ten soubor "D:\music.mp3" spustit ve Windows Media Player, tak se to normalne prehrava? Ptam se zamerne na program WMP, takze to nezkousej v jinem prehravaci, ktery muze mit vlastni kodeky.
Desktop: Ryzen 7 1800X (3.95GHz, 1.35V), Asus Crosshair VI Hero, 16GB DDR4 Ram (3200MHz), 128GB SSD + 3TB HDD, Nvidia GTX 1080
Notebook: Asus UL50VT 15.6" (SU7300@1.7GHz, 4GB ram, 500GB HDD, Intel GMA 4500MHD + nVidia G210M, dlouha vydrz cca 7+ hod)
Nargon
Moderátor

Odeslat příspěvekod Nogar 29. 11. 2010 19:31

bez problemu funugje, i jakákoliv jiná hudba. No a ktomu videu neví někdo čím to zpravit??
Nogar
Junior
Uživatelský avatar


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků