Страница 1 из 2

как подключить медиа файл c++

Добавлено: 24 мар 2011, 02:32
Uxxzz
Желательно в консольном и оконном режиме....

Re: как подключить медиа файл c++

Добавлено: 24 мар 2011, 11:32
WinMain
Вариантов решений много.
Уточни, что ты хочешь получить. От этого и будет зависеть ответ.

Re: как подключить медиа файл c++

Добавлено: 24 мар 2011, 15:17
Uxxzz
ну для начала я хочу(в оконном режиме и в консоли) при нажатии на кнопку воспроизводилась музыка....вот просто как, каким образом можно подключить самую простую песню ????

Re: как подключить медиа файл c++

Добавлено: 25 мар 2011, 01:22
BulldozerBSG
библиотека BASS может решить твои проблемы

Re: как подключить медиа файл c++

Добавлено: 25 мар 2011, 08:29
Albor
Вот, нашёл у себя оболочку под команды MCI. В свойствах проекта нужно подключить winmm.dll. В консоли не делал, не скажу.

Код: Выделить всё

// MP3Player.h: interface for the CMP3Player class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_MP3PLAYER_H__ADEB7398_4EE4_4A14_B6E1_7028DE7098E5__INCLUDED_)
#define AFX_MP3PLAYER_H__ADEB7398_4EE4_4A14_B6E1_7028DE7098E5__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CMP3Player  
{
public:
 void SetNotifyWnd(const HWND hWnd);
 BOOL OpenMP3Device(const CString sMp3File);
 BOOL Play();
 CMP3Player();
 CMP3Player(const HWND hWnd);
 virtual ~CMP3Player();
private:
 void GetSoundCat(CString & sPath);
 UINT m_wDeviceID;
 HWND m_hWnd;
 BOOL bPlay;
public:
 // вернёт TRUE, если идёт воспроизведение звука
 BOOL IsPlayed(void)const;
 // функция будет вызываться из окна, определённого в m_hWnd
 LRESULT EndPlay(LPARAM lParam);
};
#endif 

Код: Выделить всё

// MP3Player.cpp: implementation of the CMP3Player class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "MP3Player.h"
#include "mmsystem.h"
#include "digitalv.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CMP3Player::CMP3Player()
{
 m_hWnd=0;
 bPlay=FALSE;
}
CMP3Player::CMP3Player(const HWND hWnd)
{
 m_hWnd=hWnd;
 bPlay=FALSE;
}
CMP3Player::~CMP3Player(){}
BOOL CMP3Player::Play()
{//Функция посылает сообщение MM_MCINOTIFY, вызвавшему её окну о завершении проигрывания файла
// if(OpenMP3Device(sMp3File))
// {
  MCI_DGV_PLAY_PARMS mciPlay;
  mciPlay.dwCallback = MAKELONG(m_hWnd, 0);
  DWORD dwReturn=mciSendCommand(m_wDeviceID, MCI_PLAY, MCI_NOTIFY, (DWORD)(LPSTR)&mciPlay);
  if (dwReturn==0) 
  {
   bPlay=TRUE;
   return bPlay;
  }
  else
  {//какая-то ошибка
   TCHAR lpszErrorText[128];
   mciGetErrorString(dwReturn, lpszErrorText, 128);
   MessageBox(m_hWnd,lpszErrorText,NULL,MB_OK|MB_ICONERROR);
   mciSendCommand(m_wDeviceID, MCI_CLOSE, 0, NULL);
  }
// }
 return FALSE;
}
void CMP3Player::GetSoundCat(CString &sPath)
{
 CString sTemp(sPath);
 sPath=GetCommandLine();
 sPath=sPath.Mid(1,sPath.ReverseFind(_T('\\')));
 sPath+=sTemp;
 TCHAR charbuf[MAX_PATH]={_T("")};
 GetShortPathName(sPath,charbuf,MAX_PATH);
 sPath.Format(_T("%s"),charbuf);
}
BOOL CMP3Player::OpenMP3Device(const CString sMp3File)
{
 CString sFile(sMp3File);
 GetSoundCat(sFile);
// sMp3File+=lpFilename;
 MCI_OPEN_PARMS mciOpenParms;
 mciOpenParms.lpstrDeviceType = _T("MPEGVideo");
 mciOpenParms.lpstrElementName=sFile;
 DWORD dwReturn(0);
 if ((dwReturn = mciSendCommand(NULL, MCI_OPEN, MCI_OPEN_TYPE | MCI_OPEN_ELEMENT,(DWORD)(LPVOID) &mciOpenParms))!=0)
 {
  //Ошибка. Определяем её характер и сообщаем о ней
  WCHAR lpszErrorText[128];
  mciGetErrorString(dwReturn, lpszErrorText, 128);
  MessageBox(m_hWnd,lpszErrorText,NULL,MB_OK|MB_ICONERROR);
  return FALSE;
 }
 m_wDeviceID=mciOpenParms.wDeviceID;
 return TRUE;
}
void CMP3Player::SetNotifyWnd(const HWND hWnd){ m_hWnd=hWnd;}//Определяется окно для приёма сообщений от плеера
BOOL CMP3Player::IsPlayed(void) const { return bPlay; }// вернёт TRUE, если идёт воспроизведение звука
LRESULT CMP3Player::EndPlay(LPARAM lParam)
{// функция будет вызываться из окна, определённого в m_hWnd
 bPlay=FALSE;
 return mciSendCommand(lParam, MCI_CLOSE, 0, NULL);
}
Так используется:

Код: Выделить всё

//------------------ Воспроизвести звуковой файл ------
void CMainFrame::OnPlaysoundke()
{
 m_player.SetNotifyWnd(GetSafeHwnd());// Окно для обработки сообщений от MCI
 CString sFile(_T("test.mp3"));
 if(m_player.OpenMP3Device(sFile)) 
 {
  m_player.Play();
 }
}
/*----Следующая ф-ция не вызывается из меню, но относится к предыдущей команде.
      Она вызывается автоматически по-окончании воспроизведения --------------*/
LRESULT CMainFrame::OnEndPlay(WPARAM /*wParam*/, LPARAM lParam)
{// после воспроизведения нужно закрыть устройство
 return m_player.EndPlay(lParam);
}
Окно должно реагировать на сообщение от плеера

Код: Выделить всё

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWndEx)
    ON_MESSAGE(MM_MCINOTIFY, &CMainFrame::OnEndPlay)
END_MESSAGE_MAP()

Re: как подключить медиа файл c++

Добавлено: 25 мар 2011, 14:55
Uxxzz
спасибо большое!!!!

Re: как подключить медиа файл c++

Добавлено: 27 мар 2011, 11:42
Uxxzz
вот как просто воспроизвести .mp3))))

#include <mplayer.hpp>

TMediaPlayer *MediaPlayer1=new TMediaPlayer(Form1->Handle);
MediaPlayer1->FileName="C:\\1.mp3" ;
MediaPlayer1->Open();
MediaPlayer1->Play();

А вот можно ли этот mp3 файл прикрепить к проекту????
т.е. в тексте программы указывается адрес к нему и если "1.mp3" переместить, то все,музыка воспроизводиться не будет....

еще 1 вопросик, как можно сделать кнопку " стоп" или "пауза"(в оконном режиме)????
помогите плиз))))

Re: как подключить медиа файл c++

Добавлено: 27 мар 2011, 12:17
Albor
Uxxzz писал(а):вот как просто воспроизвести .mp3))))

...
А вот можно ли этот mp3 файл прикрепить к проекту????
т.е. в тексте программы указывается адрес к нему и если "1.mp3" переместить, то все,музыка воспроизводиться не будет....

еще 1 вопросик, как можно сделать кнопку " стоп" или "пауза"(в оконном режиме)????
помогите плиз))))
Выходит не просто :) . Нужно ещё поработать над выбором файла, вернее, получить путь к файлу. Кнопки нужно добавить на форму и создать обработчики их нажатия, где вызывать соответствующие функции. Какие функции? - смотри документацию на TMediaPlayer, у меня в VS такого класса нет.

Re: как подключить медиа файл c++

Добавлено: 27 мар 2011, 21:00
Uxxzz
может быть еще есть у кого-нибудь другие варианты???

Re: как подключить медиа файл c++

Добавлено: 27 мар 2011, 21:28
L.A.V.
Есть. Есть библиотека Qt а в ней есть все, что надо для запуска воспроизведения звука и не только.

Но там все те-же кнопки и обработчики, классы и методы в которых необходимо разобраться, чтобы написать что-то свое.

Если есть желание, то добро пожаловать в примеры использования. Документация у Qt классная, не разобраться не возможно. :)

Ну что, как тебе вариант? ;)