资源简介
一个基于gtk实现的mp3播放器,十分小巧,代码简单,仅200行,供学习gtk的初级同学使用

代码片段和文件信息
/* file: gplayer.c
*/
#include “gplayer.h“
#include
static gboolean gplayer_init(GPlayer *player);
/*
*/
static gboolean cb_bus(GstBus *bus GstMessage *msg gpointer data)
{
GPlayer *player= (GPlayer*)data;
GError *err;
gchar *debug;
GstTagList *tags;
gchar *title;
gchar *artist;
gchar *album;
gint time;
switch(GST_MESSAGE_TYPE(msg) )
{
case GST_MESSAGE_ERROR:
gst_message_parse_error(msg &err &debug);
g_print(“Error: %s\n“ err->message);
g_error_free(err);
g_free(debug);
;
break;
case GST_MESSAGE_EOS:
;
break;
case GST_MESSAGE_TAG:
gst_message_parse_tag(msg &tags);
if(gst_tag_list_get_string(tags GST_TAG_title &title)&&
gst_tag_list_get_string(tags GST_TAG_ARTIST &artist)&&
gst_tag_list_get_string(tags GST_TAG_ALBUM &album) )
{
g_print(“title: %s\nArtist: %s\nAlbum: %s\n“
title artist album);
}
gst_tag_list_free(tags);
if(-1!=gplayer_get_duration(player) )
{
time= gplayer_get_duration(player);
g_print(“Time: %d:%ds\n“ time/60 time%60 );
}
break;
default:
break;
}
return TRUE;
}
static gboolean cb_timeout(gpointer data)
{
GPlayer *player= (GPlayer*)data;
gint gone= gplayer_get_pos(player);
gdouble progress= gplayer_get_progress(player);
gdouble volume= 1.0;
gboolean mute= FALSE;
g_print(“Progress: %d:%ds\t%lf\n“ gone/60 gone%60 progress );
if(progress>0.25&& progress<0.35)
gplayer_set_progress(player 0.75);
gplayer_set_volume(player volume+10*progress );
volume= gplayer_get_volume(player);
gplayer_set_mute(player mute+( (progress>0.5)?1:0 ) );
mute= gplayer_get_mute(player);
g_print(“Volume: %lf\nMute: %d\n“ volume mute);
return TRUE;
}
/*
*/
GPlayer *gplayer_create()
{
GPlayer *player= NULL;
GstElement *play2;
GstBus *bus;
player= (GPlayer*)malloc(sizeof(GPlayer) );
if(NULL!= player)
{
play2= gst_element_factory_make(“playbin2“ “play2“);
bus= gst_pipeline_get_bus(GST_PIPELINE(play2) );
gst_bus_add_watch(bus cb_bus player);
gst_object_unref(GST_object(bus) );
gst_element_set_state(play2 GST_STATE_NULL);
player->play2= play2;
}
else
{
}
gplayer_init(player);
return player;
}
static gboolean gplayer_init(GPlayer *player)
{
/*g_object_set(G_object(player->play2) “volume“ player->volume NULL);
g_object_set(G_object(player->play2) “mute“ player->mute NULL);*/
g_timeout_add(1000 cb_timeout player);
g_object_set(G_object(player->play2) “uri“ “file:///mnt/hgfs/share/gplayer/mp3/1.mp3“ NULL);
gst_element_set_state(player->play2 GST_STATE_PLAYING);
return TRUE;
}
gboolean gplayer_play(GPlayer *player)
{
return TRUE;
}
gboolean gplayer_pause(GPlayer *player)
{
gboolean res= TRUE;
if(GST_STATE_CHANGE_FAILURE== gst_element_set_state(player->play2 GST_STATE_PAUSED) )
res= FALSE;
return res;
}
gboolean gplayer_next(GPlayer
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5522 2011-07-22 14:17 gpla
文件 5516 2011-06-30 20:30 gpla
文件 1223 2011-06-27 15:42 gpla
文件 359 2011-06-27 10:03 gpla
文件 4127762 2011-03-17 22:49 gpla
文件 3658440 2010-11-19 20:09 gpla
文件 2338434 2011-04-12 22:17 gpla
文件 241 2011-06-27 09:39 gpla
目录 0 2011-07-17 16:24 gpla
目录 0 2011-07-22 14:17 gpla
----------- --------- ---------- ----- ----
10137497 10
相关资源
- 易语言播放器组件无缝转换(Demo2.e)
- mp3解析文档及其分析工具
- 我做的电子琴,21个音,一般歌曲基本
- DOS播放器 QuickViewPro破解版
- MP3文件ID3v2ID3v2APEv2标签读取
- js万能播放器,网页播放插件实例
- GTK实现数字表显示
- 基于GTK的Linux环境下的简易任务管理器
- 微信小程序——音乐播放器
- 易语言搜搜mp3源码
- 监控DAV播放器纯绿色免安装版
-
MP3Pla
yer播放器 - 易语言简单的播放器程序源码
- 监控专用MP4文件播放器
- 音频测试文件pcmmp3aacamrg711ag711u等多种
- 一种基于DAB接收机的MP3播放器设计方
- wince Flash 播放器
- TCPMP 支持ce6.0的播放器
- 支持倍速播放的TV视频播放器源码
- p2p种子在线播放器绿色版
- 嵌入式局域网聊天系统客户端
- QT编的MP3播放器
- 二狗音乐播放器.zip
- 51单片机实现蜂鸣器的简易歌曲播放器
- 取硬件信息可用VMP3.X过机器码
- 飞机大战PlaneWar,Linux下gtk开发。
- 最简单的基于FFMPEG+SDL的视频播放器
- ffmpeg+qt的简单播放器
- linux 操作系统 GTK /proc文件 系统监视器
- 基于QT的音乐播放器源代码及详细教程
评论
共有 条评论