как подключить медиа файл c++
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
Желательно в консольном и оконном режиме....
Вариантов решений много.
Уточни, что ты хочешь получить. От этого и будет зависеть ответ.
Уточни, что ты хочешь получить. От этого и будет зависеть ответ.
ну для начала я хочу(в оконном режиме и в консоли) при нажатии на кнопку воспроизводилась музыка....вот просто как, каким образом можно подключить самую простую песню ????
-
- Сообщения: 270
- Зарегистрирован: 09 янв 2010, 04:14
- Контактная информация:
библиотека BASS может решить твои проблемы
Вот, нашёл у себя оболочку под команды 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()
вот как просто воспроизвести .mp3))))
#include <mplayer.hpp>
TMediaPlayer *MediaPlayer1=new TMediaPlayer(Form1->Handle);
MediaPlayer1->FileName="C:\\1.mp3" ;
MediaPlayer1->Open();
MediaPlayer1->Play();
А вот можно ли этот mp3 файл прикрепить к проекту????
т.е. в тексте программы указывается адрес к нему и если "1.mp3" переместить, то все,музыка воспроизводиться не будет....
еще 1 вопросик, как можно сделать кнопку " стоп" или "пауза"(в оконном режиме)????
помогите плиз))))
#include <mplayer.hpp>
TMediaPlayer *MediaPlayer1=new TMediaPlayer(Form1->Handle);
MediaPlayer1->FileName="C:\\1.mp3" ;
MediaPlayer1->Open();
MediaPlayer1->Play();
А вот можно ли этот mp3 файл прикрепить к проекту????
т.е. в тексте программы указывается адрес к нему и если "1.mp3" переместить, то все,музыка воспроизводиться не будет....
еще 1 вопросик, как можно сделать кнопку " стоп" или "пауза"(в оконном режиме)????
помогите плиз))))
Выходит не простоUxxzz писал(а):вот как просто воспроизвести .mp3))))
...
А вот можно ли этот mp3 файл прикрепить к проекту????
т.е. в тексте программы указывается адрес к нему и если "1.mp3" переместить, то все,музыка воспроизводиться не будет....
еще 1 вопросик, как можно сделать кнопку " стоп" или "пауза"(в оконном режиме)????
помогите плиз))))

может быть еще есть у кого-нибудь другие варианты???
-
- Сообщения: 20
- Зарегистрирован: 16 авг 2009, 23:37
- Откуда: Солнечный Крым
- Контактная информация:
Есть. Есть библиотека Qt а в ней есть все, что надо для запуска воспроизведения звука и не только.
Но там все те-же кнопки и обработчики, классы и методы в которых необходимо разобраться, чтобы написать что-то свое.
Если есть желание, то добро пожаловать в примеры использования. Документация у Qt классная, не разобраться не возможно.
Ну что, как тебе вариант?
Но там все те-же кнопки и обработчики, классы и методы в которых необходимо разобраться, чтобы написать что-то свое.
Если есть желание, то добро пожаловать в примеры использования. Документация у Qt классная, не разобраться не возможно.

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