Qt实现网络播放器
#define MP3_URL "http://mp3.baidu.com/dev/api/?" //设置发送的数据
QByteArray byte_array;
byte_array.append("tn=getinfo");
byte_array.append("&ct=0");
byte_array.append("&ie=utf-8");
byte_array.append("&word=" + text); //text指歌曲名称、歌手名称
byte_array.append("&format=json"); QString url = MP3_URL + QString(byte_array); network_manager = new QNetworkAccessManager();
network_request = new QNetworkRequest();
connect(network_manager, &QNetworkAccessManager::finished, this, &HttpManager::replyFinished);
network_request->setUrl(QUrl(url));
network_manager->get(*network_request); void HttpManager::replyFinished(QNetworkReply *reply)
{
//获取响应的信息,状态码为200表示正常
QVariant status_code = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute); //无错误返回
if(reply->error() == QNetworkReply::NoError)
{
QByteArray bytes = reply->readAll(); //获取字节
QString result(bytes); //转化为字符串 parseJson(result); //自定义方法,解析歌曲数据
}
else
{
//处理错误
}
} void HttpManager::parseJson(QString json)
{
QByteArray byte_array;
QJsonParseError json_error;
QJsonDocument parse_doucment = QJsonDocument::fromJson(byte_array.append(json), &json_error);
if(json_error.error == QJsonParseError::NoError)
{
if(parse_doucment.isArray())
{
QJsonArray array = parse_doucment.array();
int size = array.size();
for(int i=0; i
{
QJsonValue value = array.at(i);
if(value.isObject())
{
QJsonObject object = value.toObject();
if(object.contains("song"))
{
QJsonValue name_value = object.take("song");
if(name_value.isString())
{
QString name = name_value.toString();
QString name2 = name;
QListWidgetItem *list_item = new QListWidgetItem();
list_item->setText(name);
this->addItem(name);
} if(song_id.isEmpty())
{
if(object.contains("song_id"))
{
QJsonValue song_value = object.take("song_id");
if(song_value.isString())
{
QString song_id = song_value.toString();
}
}
}
}
}
}
}
}
}
QMediaPlayer *player = new QMediaPlayer(this);
player->setMedia(QUrl(song_link)); //song_link为根据步骤二获取的歌曲链接
player->setVolume(50);
player->play();
Qt实现网络播放器的更多相关文章
- 基于ffmpeg网络播放器的教程与总结
基于ffmpeg网络播放器的教程与总结 一. 概述 为了解决在线无广告播放youku网上的视频.(youku把每个视频切换成若干个小视频). 视频资源解析可以从www.flvcd. ...
- dzz使用总结(添加云盘,好用的Web文件管理器,网络播放器)
dzz添加云盘: http://www.lebook.me/book/22822#fid_3990471 呆萌http://pan.diemoe.net/s/GcdFI4 网络播放器 mediaele ...
- Qt 简易图片播放器
一.前言 使用 Qt 制作了一个简单的图片播放器,点击 "浏览按钮" 浏览图片所在目录,目录中的所有图片缩小图标和名称会显示在左侧的图片列表中,点击列表中的图片项,可以在右侧区域的 ...
- Qt+MPlayer音乐播放器开发笔记(一):ubuntu上编译MPlayer以及Demo演示
前言 在ubuntu上实现MPlayer播放器播放音乐. Demo Mplayer MPlayer是一款开源多媒体播放器,以GNU通用公共许可证发布.此款软件 ...
- Qt开发Gif播放器
一.资源下载地址 https://www.aliyundrive.com/s/jBU2wBS8poH 本项目路径:项目->免费->Gif播放器(包含整个工程源码,vs2019打开即可编译运 ...
- 在线音乐播放器-----酷狗音乐api接口抓取
首先身为一个在线音乐播放器,需要前端和数据库的搭配使用. 在数据库方面,我们没有办法制作,首先是版权问题,再加上数据量.所以我们需要借用其他网络播放器的数据库. 但是这些在线播放器,如百度,酷狗,酷我 ...
- ubuntu下好用的音乐播放器audacious
audacious是ubuntu下一款非常好用的音乐播放器,万能的音乐播放器而且简洁美观,可以播放ape各种无损发烧音乐格式. 如果想听音乐的话,现在百度音乐,酷我音乐,酷狗音乐等都是有网络播放器的, ...
- 【U3D】播放器设置(PlayerSettings)
播放器设置 (Player Settings) 播放器设置 (Player Settings) 用于为您要在 Unity 中编译的最终游戏定义各项(特定于平台的)参数.例如,参数中的一些值用于您打开单 ...
- 播放器设置 Player Settings
原地址:http://game.ceeger.com/Manual/class-PlayerSettings.html#Android Player Settings is where you def ...
随机推荐
- <meta http-equiv="refresh" content="0; url=">什么意思?
原文:<meta http-equiv="refresh" content="0; url=">什么意思? 页面定期刷新,如果加url的,则会重新定 ...
- sql 连接查询
什么是连接查询呢 概念:根据两个表或多个表的列之间的关系,从这些表中查询数据. 目的:实现多个表查询操作. 分类 首先划分一下,连接分为三种:内连接.外连接.交叉连接 内连接(INNER JOIN): ...
- hdu1845 Jimmy’s Assignment --- 完整匹配
意甲冠军: 它需要一个特殊的图,以找到最大匹配.该图的特征是:无向图,度的每个节点3.这是一个双边连接组件(the graph is 2-edge-connected (that is, at lea ...
- 《深入浅出WPF》笔记——资源篇
原文:<深入浅出WPF>笔记--资源篇 前面的记录有的地方已经用到了资源,本文就来详细的记录一下WPF中的资源.我们平时的“资源”一词是指“资财之源”,是创造人类社会财富的源泉.在计算机程 ...
- Twitter "like" 动画实战
http://zhuanlan.zhihu.com/FrontendMagazine/20486738
- Java 9 特性
Java 8 发布三年多之后,已经于在2017年9月21日发布了. 你可能已经听说过 Java 9 的模块系统,但是这个新版本还有许多其它的更新. 这里有九个令人兴奋的新功能. 1. Java 平台级 ...
- 5 wcf双工
1 创建两个项目 Wcf_WsDual_Service Wcf_WsDual_Client 2 Wcf_WsDual_Service 项目中创建 LoginService.cs 的wcf文件 ...
- PHP和MySQL Web开发 经典书籍
<PHP和MySQL Web开发> PHP and MySQL Web Development“使用PHP和MySQL构建数据库驱动的Web应用程序的权威指南” 笔者推荐 PHP和MySQ ...
- Linux下快速静态编译Qt以及Qt动态/静态版本共存(提供了编译4.6,5.6的精通编译脚本,并且apt-get install 需要的库也全列出来了。还有分析问题的心理过程)good
qt4.6 Linux./configure -static -release -confirm-license -opensource -qt-zlib -qt-libpng -qt-libjpeg ...
- MySQL TIMESTAMP(时间戳)详细解释
当你创建一个表假设表中有类型的字段TIMESTAMP,该字段默认情况下,语句生成: CREATE TABLE `test` ( `id` int(11) DEFAULT NULL, `ctime` t ...