当前位置:首页 > 代码 > 正文

vc播放器源代码(视频播放器源代码)

admin 发布:2022-12-19 17:50 118


本篇文章给大家谈谈vc播放器源代码,以及视频播放器源代码对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

求用vc编写一个播放wav的播放器的编程思路或代码

第一:找到能够播放wav格式的函数

第二:编写函数实现

我有资料,但是你要做的话,还是自己动手的好,毕竟你自己做了才能得到乐趣

求vlc播放器的源代码

最新版源码下载地址:

但是官方不支持使用VC编译,并且不建议使用VC,移植难度很大。

官方支持的是MingW或者Cygwin,也就是GCC的Windows版。编译方法见官方Wiki:

-

-

用C语言编写音乐播放器的代码

vc6.0下编译可以的

#include windows.h

#include mmsystem.h

#pragma comment (lib, "winmm.lib")

#define ID_PLAY 1000

#define ID_STOP 1001

#define ID_EXIT 1002

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)

{

TCHAR clsName[] = TEXT ("clsMusicPlayer");

TCHAR title[] = TEXT ("Music Player");

WNDCLASS wc;

HWND hWnd;

MSG msg;

int cxScreen;

int cyScreen;

int winX;

int winY;

int winWidth;

int winHeight;

wc.cbClsExtra = 0;

wc.cbWndExtra = 0;

wc.hbrBackground = (HBRUSH) GetStockObject (BLACK_BRUSH);

wc.hCursor = LoadCursor (hInstance, IDC_ARROW);

wc.hIcon = LoadIcon (hInstance, IDI_APPLICATION);

wc.hInstance = hInstance;

wc.lpfnWndProc = WndProc;

wc.lpszClassName = clsName;

wc.lpszMenuName = NULL;

wc.style = CS_HREDRAW | CS_VREDRAW;

if ( !RegisterClass (wc) )

{

MessageBox (NULL, TEXT ("RegisterClass Error"), TEXT ("ERROR"), MB_OK | MB_ICONINFORMATION);

return -1;

}

cxScreen = GetSystemMetrics (SM_CXSCREEN);

cyScreen = GetSystemMetrics (SM_CYSCREEN);

winWidth = cxScreen / 4;

winHeight = cyScreen / 3;

winX = (cxScreen - winWidth) / 2;

winY = (cyScreen - winHeight) / 2;

hWnd = CreateWindow (

clsName, title,

WS_OVERLAPPEDWINDOW ~WS_THICKFRAME ~WS_MAXIMIZEBOX,

winX, winY, winWidth, 100,

NULL, NULL, hInstance, NULL);

if ( !hWnd )

{

MessageBox (NULL, TEXT ("CreateWindow Error"), TEXT ("ERROR"), MB_OK | MB_ICONINFORMATION);

return -2;

}

ShowWindow (hWnd, SW_SHOW);

UpdateWindow (hWnd);

while ( GetMessage (msg, NULL, 0, 0) 0 )

{

TranslateMessage (msg);

DispatchMessage (msg);

}

return msg.wParam;

}

int PlayMusic ()

{

HANDLE hFind;

WIN32_FIND_DATA findFileData;

static TCHAR szPath[1024] = TEXT (".\\*.wav");

hFind = FindFirstFile (szPath, findFileData);

if ( hFind != INVALID_HANDLE_VALUE )

{

//MessageBox (NULL, findFileData.cFileName, "", 0);

PlaySound (findFileData.cFileName, NULL, SND_FILENAME | SND_ASYNC);

while ( FindNextFile (hFind, findFileData) )

{

//MessageBox (NULL, findFileData.cFileName, "", 0);

PlaySound (findFileData.cFileName, NULL, SND_FILENAME | SND_ASYNC);

}

}

else

{

MessageBox (NULL, "没找到文件", "", 0);

}

return 1;

}

LRESULT CALLBACK WndProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

{

HDC hDc;

PAINTSTRUCT ps;

HINSTANCE hInst;

RECT rect;

switch ( message )

{

case WM_CREATE:

{

GetClientRect (hWnd, rect);

hInst = ((LPCREATESTRUCT)lParam)-hInstance;

CreateWindow (

"button",

TEXT ("播放"),

BS_DEFPUSHBUTTON | WS_VISIBLE | WS_CHILD,

rect.right / 10, rect.bottom / 10, 40, 25, hWnd, (HMENU)ID_PLAY, hInst, NULL);

CreateWindow (

"button",

TEXT ("停止"),

BS_DEFPUSHBUTTON | WS_VISIBLE | WS_CHILD,

rect.right / 10 + 50, rect.bottom / 10, 40, 25, hWnd, (HMENU)ID_STOP, hInst, NULL);

CreateWindow (

"button",

TEXT ("退出"),

BS_DEFPUSHBUTTON | WS_VISIBLE | WS_CHILD,

rect.right / 10 + 100, rect.bottom / 10, 40, 25, hWnd, (HMENU)ID_EXIT, hInst, NULL);

}

break;

case WM_COMMAND:

{

switch ( HIWORD (wParam) )

{

case BN_CLICKED:

{

switch ( LOWORD (wParam) )

{

case ID_PLAY:

{

PlayMusic ();

//PlaySound (TEXT ("D:\\音频文件\\1.wav"), NULL, SND_FILENAME | SND_ASYNC | SND_LOOP);

}

break;

case ID_STOP:

{

PlaySound (NULL, NULL, SND_FILENAME);

}

break;

case ID_EXIT:

{

SendMessage (hWnd, WM_CLOSE, 0, 0);

}

break;

}

}

break;

}

}

break;

case WM_PAINT:

{

hDc = BeginPaint (hWnd, ps);

EndPaint (hWnd, ps);

}

break;

case WM_CLOSE:

{

PostQuitMessage (0);

}

break;

case WM_DESTROY:

{

DestroyWindow (hWnd);

}

break;

default:

return DefWindowProc (hWnd, message, wParam, lParam);

}

return 0;

}

寻音乐播放器源代码,用高级语言编写即可,java/c/c++/vc都可以

给你个Java音乐播放器代码,你试试!

import javax.media.ControllerEvent;

import javax.media.ControllerListener;

import javax.media.EndOfMediaEvent;

import javax.media.PrefetchCompleteEvent;

import javax.media.RealizeCompleteEvent;

import javax.media.*;

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class MediaPlayer extends JFrame implements ActionListener,

ItemListener, ControllerListener {

String title;

Player player;

boolean first = true, loop = false;

Component vc, cc;

String currentDirectory=null;

// 构造函数,其中包括了设置响应窗口事件的监听器。

MediaPlayer(String title) {

super(title);

/* 关闭按钮的实现。。 */

addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

dispose();

}

public void windowClosed(WindowEvent e) {

if (player != null)

player.close();

System.exit(0);

}

});

// 调用程序菜单栏的方法成员完成菜单的布置

setupMenu();

setSize(400, 400);

setVisible(true);

}

// 本方法用以设置程序菜单栏

public void setupMenu() {

// 设置一个菜单

Menu f = new Menu("文件");

// 往设置的菜单添加菜单项

MenuItem mi = new MenuItem("打开");

f.add(mi);

mi.addActionListener(this);

f.addSeparator();

CheckboxMenuItem cbmi = new CheckboxMenuItem("循环", false);

cbmi.addActionListener(this);

f.add(cbmi);

f.addSeparator();

MenuItem ee = new MenuItem("退出");

ee.addActionListener(this);

f.add(ee);

f.addSeparator();

Menu l = new Menu("播放列表");

Menu c = new Menu("播放控制");

MenuItem move = new MenuItem("播放");

move.addActionListener(this);

c.add(move);

c.addSeparator();

MenuItem pause = new MenuItem("暂停");

pause.addActionListener(this);

c.add(pause);

c.addSeparator();

MenuItem stop = new MenuItem("停止");

stop.addActionListener(this);

c.add(stop);

c.addSeparator();

// 设置一个菜单栏

MenuBar mb = new MenuBar();

mb.add(f);

mb.add?;

mb.add(l);

// 将构造完成的菜单栏交给当前程序的窗口;

setMenuBar(mb);

}

// 动作时间响应成员;捕捉发送到本对象的各种事件;

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

String cufile, selectfile, currentDirectory;

if (e.getActionCommand().equals("退出")) {

// 调用dispose以便执行windowClosed

dispose();

return;

}

// 此事表明拥护选择了“播放”命令;

// 如果当前有一个文件可以播放则执行播放命令;

if (e.getActionCommand().equals("播放")) {

if (player != null) {

player.start();

}

return;

}

// 如果当前正在播放某一文件,则执行暂停;

if (e.getActionCommand().equals("暂停")) {

if (player != null) {

player.stop();

}

return;

}

// 停止命令的响应;

if (e.getActionCommand().equals("停止")) {

if (player != null) {

player.stop();

player.setMediaTime(new Time(0));

}

return;

}

// 用户选择要播放的媒体文件

if (e.getActionCommand().equals("打开")) {

FileDialog fd = new FileDialog(this, "打开媒体文件", FileDialog.LOAD);

// fd.setDirectory(currentDirectory);

2008-2-6 02:46 回复

肆方茉莉

62位粉丝

6楼

fd.setVisible(true);

// 如果用户放弃选择文件,则返回

if (fd.getFile() == null) {

return;

}

// 保存了所选文件的名称及其路径名称已被稍后使用

// 同时设置当前文件夹路径

selectfile = fd.getFile();

currentDirectory = fd.getDirectory();

cufile = currentDirectory + selectfile;

// 将用户选择的文件作为一个菜单项加入播放列表,该菜单项名为该文件名;

// 被点击后给出的命令串是该文件的全路径名

MenuItem mi = new MenuItem(selectfile);

mi.setActionCommand(cufile);

MenuBar mb = getMenuBar();

Menu m = mb.getMenu(2);

mi.addActionListener(this);

m.add(mi);

} else {

// 程序逻辑运行到次表示用户选择了一个“播放列表”中的媒体文件

// 此时可以通过如下动作获得该文件的全路径名

cufile = e.getActionCommand();

selectfile = cufile;

}

// 如果存在一个播放器,则先将其关闭,稍后再重新创建

// 创建播放器时需要捕捉一些异常

if (player != null) {

player.close();

}

try {

player = Manager.createPlayer(new MediaLocator("file:" + cufile));

} catch (Exception e2) {

System.out.println(e2);

return;

}/*

* catch(NoPlayerException e2){ System.out.println("不能找到播放器");

* return ; }

*/

if (player == null) {

System.out.println("无法创建播放器");

return;

}

first = false;

setTitle(selectfile);

// 设置处理播放控制器实际的对象;

/**/

player.addControllerListener(this);

player.prefetch();

}

// 菜单状态改变事件的响应函数;

public void itemStateChanged(ItemEvent arg0) {

// TODO Auto-generated method stub

}

public static void main(String[] args) {

// TODO Auto-generated method stub

new MediaPlayer("播放器");

}

// 调用绘图函数进行界面的绘制

// public void update() {

// }

// 绘图函数成员

//public void paint(Graphics g) {

// }

public void controllerUpdate(ControllerEvent e) {

// TODO Auto-generated method stub

Container tainer = getContentPane();

// 调用player.close()时ControllerClosedEvent事件出现

// 如果存在视觉部件,则该部件应该拆除(为了一致起见,我们对控制面版部件也执行同样的操作,下一次需要时再构造)

if (e instanceof ControllerClosedEvent) {

if (vc != null) {

remove(vc);

vc = null;

}

if (cc != null) {

remove(cc);

cc = null;

}

}

// 播放结束时,将播放指针置于文件之首,如果设定了循环播放,则再次启动播放器;

if (e instanceof EndOfMediaEvent) {

player.setMediaTime(new Time(0));

if (loop) {

player.start();

}

return;

}

// PrefetchCompletEvent事件发生后调用start,正式启动播放

if (e instanceof PrefetchCompleteEvent) {

player.start();

return;

}

// 本事件表示由于播放的资源已经确定;此时要将媒体的图形conmopnent

// 如果有显示出来,同时将播放器player的控制显示到窗口里;

if (e instanceof RealizeCompleteEvent) {

// 如果媒体中有图像,将对应图像component载入窗体;

vc = player.getVisualComponent();

if (vc != null)

tainer.add(vc, BorderLayout.CENTER);

// 将对应控制器component载入窗体;

cc = player.getControlPanelComponent();

cc.setBackground(Color.blue);

if (cc != null)

tainer.add(cc, BorderLayout.SOUTH);

// 有一些特殊媒体在播放时提供另外的控制手段,将控制器一并加入窗口;

/*

* gc=player.getGainControl(); gcc=gc.getControlComponent();

* if(gcc!=null) tainer.add(gcc,BorderLayout.NORTH);

*/

// 根据媒体文件中是否有图像,设定相应的窗口大小

if (vc != null) {

pack();

return;

} else {

setSize(300, 75);

setVisible(true);

return;

}

}

}

}

希望对你有帮助!

关于vc播放器源代码和视频播放器源代码的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/16098.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载