├── icon ├── tv.png ├── down.png ├── film.png └── live.png ├── resource.qrc ├── makeshell.h ├── icon.qrc ├── main.cpp ├── ceshi.h ├── README.md ├── moviemod.h ├── livemainwin.h ├── liveraspp.pro ├── ceshi.cpp ├── livemainwin.cpp ├── makeshell.cpp ├── getsrt.py ├── moviemod.cpp └── liveraspp.pro.user /icon/tv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suntaoxy/raspberrylive/HEAD/icon/tv.png -------------------------------------------------------------------------------- /icon/down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suntaoxy/raspberrylive/HEAD/icon/down.png -------------------------------------------------------------------------------- /icon/film.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suntaoxy/raspberrylive/HEAD/icon/film.png -------------------------------------------------------------------------------- /icon/live.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suntaoxy/raspberrylive/HEAD/icon/live.png -------------------------------------------------------------------------------- /resource.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | icon/film.png 4 | icon/tv.png 5 | 6 | 7 | -------------------------------------------------------------------------------- /makeshell.h: -------------------------------------------------------------------------------- 1 | #ifndef MAKESHELL_H 2 | #define MAKESHELL_H 3 | #include 4 | 5 | void creat_shell(QString,QString); //连续剧模式 6 | void creat_srt_shell(QString,QString,QString); //单集模式 7 | 8 | #endif // MAKESHELL_H 9 | -------------------------------------------------------------------------------- /icon.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | icon/film.png 4 | icon/tv.png 5 | icon/down.png 6 | icon/live.png 7 | 8 | 9 | -------------------------------------------------------------------------------- /main.cpp: -------------------------------------------------------------------------------- 1 | //#include "ceshi.h" 2 | #include "livemainwin.h" 3 | #include 4 | #include 5 | #include 6 | int main(int argc, char *argv[]) 7 | { 8 | 9 | QApplication a(argc, argv); 10 | 11 | // qDebug() <<"ceshi"<< QDir::currentPath(); 12 | Livemainwin w; 13 | 14 | w.show(); 15 | 16 | return a.exec(); 17 | } 18 | -------------------------------------------------------------------------------- /ceshi.h: -------------------------------------------------------------------------------- 1 | #ifndef CESHI_H 2 | #define CESHI_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | 13 | class Ceshi : public QWidget 14 | { 15 | Q_OBJECT 16 | 17 | public: 18 | Ceshi(QWidget *parent = 0); 19 | QString path_srt; 20 | ~Ceshi(); 21 | // QString get_path(); 22 | private: 23 | QLabel* websitelabel; 24 | QLabel* streamlabel; 25 | QLineEdit* websitetext; 26 | QLineEdit* streamtext; 27 | QPushButton* okbtn; 28 | QPushButton* closebtn; 29 | QPushButton* choosepath; 30 | QLineEdit* pathname; 31 | QProcess* process_0; 32 | // QDir* dir; 33 | 34 | private slots: 35 | void mkandexcute_shell(); 36 | // void closed_shell(); 37 | void showfile(); 38 | 39 | }; 40 | 41 | #endif // CESHI_H 42 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # raspberrylive 2 | A tool which can play videos on Live site by raspberry 3 | 4 | 一个树莓派用的直播工具 5 | 同样适用x86的windows和linux平台 6 | 鉴于斗鱼b站等直播网站经常改推流码,每次重写脚本很烦。所以做个小工具 7 | 8 | 推荐树莓派系统是raspbian stretch 即debian 9 这个系统的软件源很多软件是比较新的,省去很多麻烦 9 | 如果是debian 8 系统 请看wiki手动编译暗转ffmpeg方法 10 | 11 | 首先安装ffmpeg 12 | sudo apt install ffmpeg 13 | 14 | 安装qt(如果需要) 15 | sudo apt install qt5-default qtcreator 16 | 17 | 下载源代码 18 | git clone https://github.com/suntaobuaa/raspberrylive 19 | 20 | cd /raspberrylive 21 | 22 | qmake 23 | 24 | make 25 | 即可 26 | 27 | 或者用qtcreator打开.pro.user 文件 编译运行 28 | 29 | 目前支持两个模式,电影模式支持推流时添加字幕,但是树莓派性能不够,必须在x86平台运行 30 | 31 | 目前电影模式添加了在线下载字幕功能,感谢https://github.com/qzane/SPlayerSubDownloader 32 | 33 | 注意须将getsrt.py文件拷到可执行文件目录,未来考虑整合代码 34 | 35 | 电视剧模式,自动顺序播放文件夹下所有视频文件,不支持字幕功能,如需字幕,必须视频自带硬字幕 36 | 37 | 因为树莓派不能写NTFS格式硬盘,只能读。所以添加其他功能意义不大了 38 | 39 | 下载字幕功能已支持windows平台(需要安装python,并添加环境变量)。 40 | 41 | 字幕文件编码仍然存在问题,目前不支持非UTF8编码字幕文件,以后有时间修复 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /moviemod.h: -------------------------------------------------------------------------------- 1 | #ifndef MOVIEMOD_H 2 | #define MOVIEMOD_H 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | 13 | 14 | class Moviemod : public QWidget 15 | { 16 | Q_OBJECT 17 | public: 18 | explicit Moviemod(QWidget *parent); 19 | ~Moviemod(); 20 | // QString path_srt; 21 | private: 22 | QLabel* websitelabel; 23 | QLabel* streamlabel; 24 | QLineEdit* websitetext; 25 | QLineEdit* streamtext; 26 | QPushButton* okbtn; 27 | QPushButton* closebtn; 28 | QPushButton* choosemoive; 29 | QLineEdit* moviename; 30 | QPushButton* choosesrt; 31 | QLineEdit* srt_name; 32 | 33 | QProcess* process_0; 34 | 35 | QFileSystemWatcher fswatcher; 36 | 37 | signals: 38 | 39 | public slots: 40 | 41 | void mkandexcute_shell(); 42 | void showfile(); 43 | void showsrt(); 44 | void downsrt(); 45 | void setsrt(QString); 46 | 47 | }; 48 | 49 | #endif // MOVIEMOD_H 50 | -------------------------------------------------------------------------------- /livemainwin.h: -------------------------------------------------------------------------------- 1 | #ifndef LIVEMAINWIN_H 2 | #define LIVEMAINWIN_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include "ceshi.h" 11 | #include "moviemod.h" 12 | 13 | class Livemainwin : public QMainWindow 14 | { 15 | Q_OBJECT 16 | public: 17 | Livemainwin(QWidget *parent = 0); 18 | ~Livemainwin(); 19 | void createAction(); 20 | void createMenu(); 21 | void createToolBar(); 22 | 23 | private: 24 | Ceshi* excutool; 25 | Moviemod* movie_excutool; 26 | 27 | QMenu* fileMenu; 28 | QMenu* aboutMenu; 29 | QMenu* subtitleMenu; 30 | // QMenu* test1; 31 | // QMenu* test2; 32 | QAction* displayjindu; 33 | QAction* displaynow_tvnum; 34 | QAction* disallinfo; 35 | QAction* turn_movie_mod; 36 | QAction* turn_tv_mod; 37 | QAction* about_author; 38 | QAction* download_srt; 39 | QToolBar* jinduToolBar; 40 | QToolBar* srtToolBar; 41 | 42 | 43 | signals: 44 | 45 | public slots: 46 | void turntv(); 47 | void turnmovie(); 48 | void showauthor(); 49 | 50 | }; 51 | 52 | #endif // LIVEMAINWIN_H 53 | -------------------------------------------------------------------------------- /liveraspp.pro: -------------------------------------------------------------------------------- 1 | #------------------------------------------------- 2 | # 3 | # Project created by QtCreator 2018-04-26T23:00:56 4 | # 5 | #------------------------------------------------- 6 | 7 | QT += core gui 8 | 9 | greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 10 | 11 | TARGET = liveraspp 12 | TEMPLATE = app 13 | 14 | # The following define makes your compiler emit warnings if you use 15 | # any feature of Qt which as been marked as deprecated (the exact warnings 16 | # depend on your compiler). Please consult the documentation of the 17 | # deprecated API in order to know how to port your code away from it. 18 | DEFINES += QT_DEPRECATED_WARNINGS 19 | 20 | # You can also make your code fail to compile if you use deprecated APIs. 21 | # In order to do so, uncomment the following line. 22 | # You can also select to disable deprecated APIs only up to a certain version of Qt. 23 | #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 24 | 25 | 26 | SOURCES += main.cpp\ 27 | ceshi.cpp \ 28 | makeshell.cpp \ 29 | livemainwin.cpp \ 30 | moviemod.cpp 31 | 32 | HEADERS += ceshi.h \ 33 | makeshell.h \ 34 | livemainwin.h \ 35 | moviemod.h 36 | 37 | RESOURCES += \ 38 | icon.qrc 39 | 40 | DISTFILES += \ 41 | getsrt.py 42 | -------------------------------------------------------------------------------- /ceshi.cpp: -------------------------------------------------------------------------------- 1 | #include "ceshi.h" 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include "makeshell.h" 7 | 8 | Ceshi::Ceshi(QWidget *parent) 9 | : QWidget(parent) 10 | { 11 | // setWindowTitle(tr("raspberry-livetool")); 12 | // setGeometry(500,100,400,200); 13 | websitelabel=new QLabel(tr("网址")); 14 | websitetext=new QLineEdit("rtmp://js.live-send.acg.tv/live-js/"); 15 | streamlabel=new QLabel(tr("推流码")); 16 | streamtext=new QLineEdit("?streamname=live_956714_5294207&key=a47f28b34b8809026e8e93e75adca602"); 17 | okbtn=new QPushButton; 18 | okbtn->setText(tr("开始直播")); 19 | closebtn=new QPushButton; 20 | closebtn->setText(tr("停止直播")); 21 | choosepath=new QPushButton; 22 | choosepath->setText(tr("选择路径")); 23 | pathname=new QLineEdit; 24 | 25 | 26 | QGridLayout* mainlayout=new QGridLayout(this); 27 | QHBoxLayout* btnlayout=new QHBoxLayout; 28 | btnlayout->addStretch(1); 29 | btnlayout->addWidget(okbtn); 30 | btnlayout->addWidget(closebtn); 31 | mainlayout->setMargin(10); 32 | mainlayout->setSpacing(6); 33 | mainlayout->addWidget(websitelabel,0,0); 34 | mainlayout->addWidget(websitetext,0,1); 35 | mainlayout->addWidget(streamlabel,1,0); 36 | mainlayout->addWidget(streamtext,1,1); 37 | mainlayout->addWidget(choosepath,2,0); 38 | mainlayout->addWidget(pathname,2,1); 39 | mainlayout->addLayout(btnlayout,3,0,1,2); 40 | process_0 = new QProcess(this); 41 | connect(okbtn,SIGNAL(clicked()),this,SLOT(mkandexcute_shell())); 42 | connect(choosepath,SIGNAL(clicked()),this,SLOT(showfile())); 43 | connect(closebtn,SIGNAL(clicked()),process_0,SLOT(kill())); 44 | 45 | 46 | } 47 | 48 | void Ceshi::mkandexcute_shell() 49 | { 50 | QString rtmp = websitetext->text()+streamtext->text(); 51 | 52 | creat_shell(pathname->text(),rtmp); 53 | 54 | QString pathofshell = "sh " + QDir::currentPath() + "/raspliveshell.sh" ; 55 | 56 | // qDebug() << pathofshell; 57 | process_0->start(pathofshell); 58 | } 59 | void Ceshi::showfile() 60 | { 61 | QString path_of_video =QFileDialog::getExistingDirectory(this,tr("选择视频文件所在目录"),"/"); 62 | pathname->setText(path_of_video); 63 | } 64 | /*void Ceshi::closed_shell() 65 | { 66 | process_0->kill(); 67 | delete process_0; 68 | } 69 | */ 70 | 71 | 72 | 73 | 74 | Ceshi::~Ceshi() 75 | { 76 | 77 | } 78 | -------------------------------------------------------------------------------- /livemainwin.cpp: -------------------------------------------------------------------------------- 1 | #include "livemainwin.h" 2 | #include "makeshell.h" 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | Livemainwin::Livemainwin(QWidget *parent) : QMainWindow(parent) 9 | { 10 | setWindowTitle(tr("树莓派直播工具")); 11 | setGeometry(500,100,400,200); 12 | excutool =new Ceshi(this); 13 | movie_excutool=new Moviemod(this); 14 | setCentralWidget(movie_excutool); 15 | setWindowIcon(QIcon(":icon/icon/live.png")); 16 | 17 | createAction(); 18 | createMenu(); 19 | createToolBar(); 20 | 21 | } 22 | 23 | 24 | void Livemainwin::createAction() 25 | { 26 | displayjindu = new QAction(QIcon("jindu.png"),tr("显示进度"),this); 27 | displayjindu->setShortcut(tr("Ctrl+I")); 28 | displayjindu->setStatusTip(tr("显示播放进度")); 29 | 30 | displaynow_tvnum = new QAction(QIcon("png1.png"),tr("显示集数"),this); 31 | 32 | turn_movie_mod = new QAction(QIcon(":/icon/icon/film.png"),tr("电影模式"),this); 33 | turn_movie_mod->setStatusTip(tr("播放单个电影文件")); 34 | connect(turn_movie_mod,SIGNAL(triggered(bool)),this,SLOT(turnmovie())); 35 | 36 | turn_tv_mod = new QAction(QIcon(":/icon/icon/tv.png"),tr("电视剧模式"),this); 37 | turn_movie_mod->setStatusTip(tr("播放多集电视剧")); 38 | connect(turn_tv_mod,SIGNAL(triggered(bool)),this,SLOT(turntv())); 39 | 40 | about_author = new QAction(tr("关于作者"),this); 41 | about_author->setStatusTip(tr("关于作者")); 42 | connect(about_author,SIGNAL(triggered(bool)),this,SLOT(showauthor())); 43 | 44 | download_srt = new QAction(QIcon(":/icon/icon/down.png"),tr("下载字幕"),this); 45 | download_srt->setStatusTip(tr("下载匹配的字幕文件")); 46 | connect(download_srt,SIGNAL(triggered(bool)),movie_excutool,SLOT(downsrt())); 47 | 48 | } 49 | 50 | void Livemainwin::createMenu() 51 | { 52 | fileMenu = menuBar()->addMenu(tr("进度")); 53 | fileMenu->addAction(displayjindu); 54 | fileMenu->addAction(displaynow_tvnum); 55 | 56 | subtitleMenu = menuBar()->addMenu(tr("字幕模式")); 57 | subtitleMenu->addAction(turn_movie_mod); 58 | subtitleMenu->addAction(turn_tv_mod); 59 | subtitleMenu->addAction(download_srt); 60 | 61 | aboutMenu = menuBar()->addMenu(tr("关于")); 62 | aboutMenu->addAction(about_author); 63 | 64 | } 65 | 66 | void Livemainwin::createToolBar() 67 | { 68 | jinduToolBar = addToolBar("mod"); 69 | jinduToolBar->addAction(turn_movie_mod); 70 | jinduToolBar->addAction(turn_tv_mod); 71 | 72 | srtToolBar = addToolBar("zimu"); 73 | srtToolBar->addAction(download_srt); 74 | } 75 | 76 | void Livemainwin::turnmovie() 77 | { 78 | // movie_excutool =new Moviemod(this); 79 | centralWidget()->setParent(0); 80 | setCentralWidget(movie_excutool); 81 | 82 | } 83 | 84 | void Livemainwin::turntv() 85 | { 86 | // excutool =new Ceshi(this); 87 | centralWidget()->setParent(0); 88 | setCentralWidget(excutool); 89 | 90 | } 91 | 92 | void Livemainwin::showauthor() 93 | { 94 | QMessageBox::about(this,tr("作者"),tr("美国的华莱士")); 95 | return; 96 | } 97 | 98 | 99 | 100 | Livemainwin::~Livemainwin() 101 | { 102 | 103 | } 104 | 105 | 106 | -------------------------------------------------------------------------------- /makeshell.cpp: -------------------------------------------------------------------------------- 1 | #include "makeshell.h" 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | 9 | void creat_shell(QString pwd,QString rtmp) 10 | { 11 | QStringList str_list; 12 | str_list<<"*"; 13 | QDir diry(pwd); 14 | QFileInfoList filelist=diry.entryInfoList(str_list,QDir::Files,QDir::Name); 15 | QFile file("raspliveshell.sh"); 16 | if(file.open(QIODevice::ReadWrite|QIODevice::Truncate)) 17 | { 18 | QString ffmpeg_order_fore =" ffmpeg -re -i "; 19 | QString ffmpeg_order_mid =" -vcodec copy -acodec aac -b:a 128k -f flv "; 20 | QTextStream writeinshell(&file); 21 | writeinshell<<"#!/bin/bash"< 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include "makeshell.h" 8 | #include 9 | Moviemod::Moviemod(QWidget *parent) : QWidget(parent) 10 | { 11 | websitelabel=new QLabel(tr("网址")); 12 | websitetext=new QLineEdit("rtmp://js.live-send.acg.tv/live-js/"); 13 | streamlabel=new QLabel(tr("推流码")); 14 | streamtext=new QLineEdit("?streamname=live_956714_5294207&key=a47f28b34b8809026e8e93e75adca602"); 15 | okbtn=new QPushButton; 16 | okbtn->setText(tr("开始直播")); 17 | closebtn=new QPushButton; 18 | closebtn->setText(tr("停止直播")); 19 | choosemoive=new QPushButton; 20 | choosemoive->setText(tr("选择电影")); 21 | moviename=new QLineEdit; 22 | choosesrt=new QPushButton; 23 | choosesrt->setText(tr("选择字幕")); 24 | srt_name=new QLineEdit; 25 | 26 | // fswatcher = new QFileSystemWatcher(this); 27 | 28 | 29 | QGridLayout* mainlayout=new QGridLayout(this); 30 | QHBoxLayout* btnlayout=new QHBoxLayout; 31 | btnlayout->addStretch(1); 32 | btnlayout->addWidget(okbtn); 33 | btnlayout->addWidget(closebtn); 34 | mainlayout->setMargin(10); 35 | mainlayout->setSpacing(6); 36 | mainlayout->addWidget(websitelabel,0,0); 37 | mainlayout->addWidget(websitetext,0,1); 38 | mainlayout->addWidget(streamlabel,1,0); 39 | mainlayout->addWidget(streamtext,1,1); 40 | mainlayout->addWidget(choosemoive,2,0); 41 | mainlayout->addWidget(moviename,2,1); 42 | mainlayout->addWidget(choosesrt,3,0); 43 | mainlayout->addWidget(srt_name,3,1); 44 | mainlayout->addLayout(btnlayout,4,0,1,2); 45 | process_0 = new QProcess(this); 46 | connect(okbtn,SIGNAL(clicked()),this,SLOT(mkandexcute_shell())); 47 | connect(choosemoive,SIGNAL(clicked()),this,SLOT(showfile())); 48 | connect(closebtn,SIGNAL(clicked()),process_0,SLOT(kill())); 49 | connect(choosesrt,SIGNAL(clicked(bool)),this,SLOT(showsrt())); 50 | 51 | connect(&fswatcher,SIGNAL(directoryChanged(QString)),this,SLOT(setsrt(QString))); 52 | 53 | 54 | } 55 | 56 | void Moviemod::showfile() 57 | { 58 | QString path_of_video =QFileDialog::getOpenFileName(this,tr("选择电影文件"),"/"); 59 | moviename->setText(path_of_video); 60 | } 61 | 62 | 63 | void Moviemod::showsrt() 64 | { 65 | QString path_of_video =QFileDialog::getOpenFileName(this,tr("选择srt字幕文件"),moviename->text()); 66 | srt_name->setText(path_of_video); 67 | } 68 | 69 | void Moviemod::mkandexcute_shell() 70 | { 71 | QString rtmp = websitetext->text()+streamtext->text(); 72 | creat_srt_shell(moviename->text(),rtmp,srt_name->text()); 73 | #if defined(Q_OS_WIN32) 74 | QString pathofshell = QDir::currentPath() + "/raspliveshell.bat" ; 75 | qDebug() << pathofshell; 76 | process_0->start("cmd.exe",QStringList() << "/c" << pathofshell); 77 | 78 | #elif defined(Q_OS_LINUX) 79 | QString pathofshell = "sh "+QDir::currentPath() + "/raspliveshell.sh" ; 80 | qDebug() << pathofshell; 81 | process_0->start(pathofshell); 82 | #endif 83 | 84 | 85 | } 86 | 87 | void Moviemod::downsrt() 88 | { 89 | if(moviename->text().isEmpty()) 90 | return; 91 | 92 | QString path_movie=moviename->text(); 93 | QFileInfo mvinfo(path_movie); 94 | fswatcher.addPath(mvinfo.absolutePath()); 95 | qDebug()<start(shell); 100 | #elif defined(Q_OS_WIN32) 101 | QString shell = QApplication::applicationDirPath()+"/getsrt.py "+path_movie; 102 | qDebug()<start("cmd.exe",QStringList() << "/c" << shell); 104 | #endif 105 | 106 | } 107 | 108 | void Moviemod::setsrt(QString path) 109 | { 110 | // qDebug()<start(shell); 123 | #elif defined(Q_OS_WIN32) 124 | qDebug()<start("cmd.exe",QStringList() << "/c" << shell); 126 | #endif 127 | break; 128 | } 129 | 130 | } 131 | foreach(QFileInfo finfo, filelist) 132 | { 133 | if(finfo.suffix()=="ass"||finfo.suffix()=="srt") 134 | { 135 | srt_name->setText(finfo.absoluteFilePath()); 136 | break; 137 | } 138 | } 139 | } 140 | 141 | 142 | Moviemod::~Moviemod() 143 | { 144 | 145 | } 146 | -------------------------------------------------------------------------------- /liveraspp.pro.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | EnvironmentId 7 | {ad5ac58d-9bec-46cb-93c7-6474e1a2dc0b} 8 | 9 | 10 | ProjectExplorer.Project.ActiveTarget 11 | 1 12 | 13 | 14 | ProjectExplorer.Project.EditorSettings 15 | 16 | true 17 | false 18 | true 19 | 20 | Cpp 21 | 22 | CppGlobal 23 | 24 | 25 | 26 | QmlJS 27 | 28 | QmlJSGlobal 29 | 30 | 31 | 2 32 | UTF-8 33 | false 34 | 4 35 | false 36 | 80 37 | true 38 | true 39 | 1 40 | true 41 | false 42 | 0 43 | true 44 | true 45 | 0 46 | 8 47 | true 48 | 1 49 | true 50 | true 51 | true 52 | false 53 | 54 | 55 | 56 | ProjectExplorer.Project.PluginSettings 57 | 58 | 59 | 60 | 61 | 62 | ProjectExplorer.Project.Target.0 63 | 64 | Android for armeabi-v7a (GCC 4.9, Qt 5.10.1 for Android armv7) 65 | Android for armeabi-v7a (GCC 4.9, Qt 5.10.1 for Android armv7) 66 | {9b4749c6-1900-495c-85f3-334b63012256} 67 | 0 68 | 0 69 | 0 70 | 71 | C:/Users/sunta/Documents/qtstudy/build-liveraspp-Android_for_armeabi_v7a_GCC_4_9_Qt_5_10_1_for_Android_armv7-Debug 72 | 73 | 74 | true 75 | qmake 76 | 77 | QtProjectManager.QMakeBuildStep 78 | true 79 | 80 | false 81 | false 82 | false 83 | 84 | 85 | true 86 | Make 87 | 88 | Qt4ProjectManager.MakeStep 89 | 90 | -w 91 | -r 92 | 93 | false 94 | 95 | 96 | 97 | 98 | true 99 | Copy application data 100 | 101 | Qt4ProjectManager.AndroidPackageInstallationStep 102 | 103 | 104 | android-24 105 | 106 | true 107 | Build Android APK 108 | 109 | QmakeProjectManager.AndroidBuildApkStep 110 | 1 111 | false 112 | 113 | 4 114 | 构建 115 | 116 | ProjectExplorer.BuildSteps.Build 117 | 118 | 119 | 120 | true 121 | Make 122 | 123 | Qt4ProjectManager.MakeStep 124 | 125 | -w 126 | -r 127 | 128 | true 129 | clean 130 | 131 | 132 | 1 133 | 清理 134 | 135 | ProjectExplorer.BuildSteps.Clean 136 | 137 | 2 138 | false 139 | 140 | Debug 141 | 142 | Qt4ProjectManager.Qt4BuildConfiguration 143 | 2 144 | true 145 | 146 | 147 | C:/Users/sunta/Documents/qtstudy/build-liveraspp-Android_for_armeabi_v7a_GCC_4_9_Qt_5_10_1_for_Android_armv7-Release 148 | 149 | 150 | true 151 | qmake 152 | 153 | QtProjectManager.QMakeBuildStep 154 | false 155 | 156 | false 157 | false 158 | false 159 | 160 | 161 | true 162 | Make 163 | 164 | Qt4ProjectManager.MakeStep 165 | 166 | -w 167 | -r 168 | 169 | false 170 | 171 | 172 | 173 | 174 | true 175 | Copy application data 176 | 177 | Qt4ProjectManager.AndroidPackageInstallationStep 178 | 179 | 180 | android-24 181 | 182 | true 183 | Build Android APK 184 | 185 | QmakeProjectManager.AndroidBuildApkStep 186 | 1 187 | false 188 | 189 | 4 190 | 构建 191 | 192 | ProjectExplorer.BuildSteps.Build 193 | 194 | 195 | 196 | true 197 | Make 198 | 199 | Qt4ProjectManager.MakeStep 200 | 201 | -w 202 | -r 203 | 204 | true 205 | clean 206 | 207 | 208 | 1 209 | 清理 210 | 211 | ProjectExplorer.BuildSteps.Clean 212 | 213 | 2 214 | false 215 | 216 | Release 217 | 218 | Qt4ProjectManager.Qt4BuildConfiguration 219 | 0 220 | true 221 | 222 | 223 | C:/Users/sunta/Documents/qtstudy/build-liveraspp-Android_for_armeabi_v7a_GCC_4_9_Qt_5_10_1_for_Android_armv7-Profile 224 | 225 | 226 | true 227 | qmake 228 | 229 | QtProjectManager.QMakeBuildStep 230 | true 231 | 232 | false 233 | true 234 | false 235 | 236 | 237 | true 238 | Make 239 | 240 | Qt4ProjectManager.MakeStep 241 | 242 | -w 243 | -r 244 | 245 | false 246 | 247 | 248 | 249 | 250 | true 251 | Copy application data 252 | 253 | Qt4ProjectManager.AndroidPackageInstallationStep 254 | 255 | 256 | android-24 257 | 258 | true 259 | Build Android APK 260 | 261 | QmakeProjectManager.AndroidBuildApkStep 262 | 1 263 | false 264 | 265 | 4 266 | 构建 267 | 268 | ProjectExplorer.BuildSteps.Build 269 | 270 | 271 | 272 | true 273 | Make 274 | 275 | Qt4ProjectManager.MakeStep 276 | 277 | -w 278 | -r 279 | 280 | true 281 | clean 282 | 283 | 284 | 1 285 | 清理 286 | 287 | ProjectExplorer.BuildSteps.Clean 288 | 289 | 2 290 | false 291 | 292 | Profile 293 | 294 | Qt4ProjectManager.Qt4BuildConfiguration 295 | 0 296 | true 297 | 298 | 3 299 | 300 | 301 | 302 | true 303 | Deploy to Android device 304 | 305 | Qt4ProjectManager.AndroidDeployQtStep 306 | false 307 | 308 | 1 309 | 部署 310 | 311 | ProjectExplorer.BuildSteps.Deploy 312 | 313 | 1 314 | 部署到Android设备 315 | 部署到Android设备 316 | Qt4ProjectManager.AndroidDeployConfiguration2 317 | 318 | 1 319 | 320 | emulator-5554 321 | 322 | 323 | false 324 | false 325 | 1000 326 | 327 | true 328 | 329 | false 330 | false 331 | false 332 | false 333 | true 334 | 0.01 335 | 10 336 | true 337 | 1 338 | 25 339 | 340 | 1 341 | true 342 | false 343 | true 344 | valgrind 345 | 346 | 0 347 | 1 348 | 2 349 | 3 350 | 4 351 | 5 352 | 6 353 | 7 354 | 8 355 | 9 356 | 10 357 | 11 358 | 12 359 | 13 360 | 14 361 | 362 | 363 | 364 | 365 | liveraspp 366 | 367 | Qt4ProjectManager.AndroidRunConfiguration:C:/Users/sunta/Documents/qtstudy/liveraspp/liveraspp.pro 368 | liveraspp.pro 369 | 3768 370 | false 371 | true 372 | false 373 | false 374 | true 375 | 376 | 1 377 | 378 | 379 | 380 | ProjectExplorer.Project.Target.1 381 | 382 | Desktop Qt 5.10.1 MinGW 32bit 383 | Desktop Qt 5.10.1 MinGW 32bit 384 | qt.qt5.5101.win32_mingw53_kit 385 | 0 386 | 0 387 | 0 388 | 389 | C:/Users/sunta/Documents/qtstudy/build-liveraspp-Desktop_Qt_5_10_1_MinGW_32bit-Debug 390 | 391 | 392 | true 393 | qmake 394 | 395 | QtProjectManager.QMakeBuildStep 396 | true 397 | 398 | false 399 | false 400 | false 401 | 402 | 403 | true 404 | Make 405 | 406 | Qt4ProjectManager.MakeStep 407 | 408 | false 409 | 410 | 411 | 412 | 2 413 | 构建 414 | 415 | ProjectExplorer.BuildSteps.Build 416 | 417 | 418 | 419 | true 420 | Make 421 | 422 | Qt4ProjectManager.MakeStep 423 | 424 | true 425 | clean 426 | 427 | 428 | 1 429 | 清理 430 | 431 | ProjectExplorer.BuildSteps.Clean 432 | 433 | 2 434 | false 435 | 436 | Debug 437 | 438 | Qt4ProjectManager.Qt4BuildConfiguration 439 | 2 440 | true 441 | 442 | 443 | C:/Users/sunta/Documents/qtstudy/build-liveraspp-Desktop_Qt_5_10_1_MinGW_32bit-Release 444 | 445 | 446 | true 447 | qmake 448 | 449 | QtProjectManager.QMakeBuildStep 450 | false 451 | 452 | false 453 | false 454 | false 455 | 456 | 457 | true 458 | Make 459 | 460 | Qt4ProjectManager.MakeStep 461 | 462 | false 463 | 464 | 465 | 466 | 2 467 | 构建 468 | 469 | ProjectExplorer.BuildSteps.Build 470 | 471 | 472 | 473 | true 474 | Make 475 | 476 | Qt4ProjectManager.MakeStep 477 | 478 | true 479 | clean 480 | 481 | 482 | 1 483 | 清理 484 | 485 | ProjectExplorer.BuildSteps.Clean 486 | 487 | 2 488 | false 489 | 490 | Release 491 | 492 | Qt4ProjectManager.Qt4BuildConfiguration 493 | 0 494 | true 495 | 496 | 497 | C:/Users/sunta/Documents/qtstudy/build-liveraspp-Desktop_Qt_5_10_1_MinGW_32bit-Profile 498 | 499 | 500 | true 501 | qmake 502 | 503 | QtProjectManager.QMakeBuildStep 504 | true 505 | 506 | false 507 | true 508 | false 509 | 510 | 511 | true 512 | Make 513 | 514 | Qt4ProjectManager.MakeStep 515 | 516 | false 517 | 518 | 519 | 520 | 2 521 | 构建 522 | 523 | ProjectExplorer.BuildSteps.Build 524 | 525 | 526 | 527 | true 528 | Make 529 | 530 | Qt4ProjectManager.MakeStep 531 | 532 | true 533 | clean 534 | 535 | 536 | 1 537 | 清理 538 | 539 | ProjectExplorer.BuildSteps.Clean 540 | 541 | 2 542 | false 543 | 544 | Profile 545 | 546 | Qt4ProjectManager.Qt4BuildConfiguration 547 | 0 548 | true 549 | 550 | 3 551 | 552 | 553 | 0 554 | 部署 555 | 556 | ProjectExplorer.BuildSteps.Deploy 557 | 558 | 1 559 | 在本地部署 560 | 561 | ProjectExplorer.DefaultDeployConfiguration 562 | 563 | 1 564 | 565 | 566 | false 567 | false 568 | 1000 569 | 570 | true 571 | 572 | false 573 | false 574 | false 575 | false 576 | true 577 | 0.01 578 | 10 579 | true 580 | 1 581 | 25 582 | 583 | 1 584 | true 585 | false 586 | true 587 | valgrind 588 | 589 | 0 590 | 1 591 | 2 592 | 3 593 | 4 594 | 5 595 | 6 596 | 7 597 | 8 598 | 9 599 | 10 600 | 11 601 | 12 602 | 13 603 | 14 604 | 605 | 2 606 | 607 | liveraspp 608 | 609 | Qt4ProjectManager.Qt4RunConfiguration:C:/Users/sunta/Documents/qtstudy/liveraspp/liveraspp.pro 610 | true 611 | 612 | liveraspp.pro 613 | false 614 | 615 | C:/Users/sunta/Documents/qtstudy/build-liveraspp-Desktop_Qt_5_10_1_MinGW_32bit-Debug 616 | 3768 617 | false 618 | true 619 | false 620 | false 621 | true 622 | 623 | 1 624 | 625 | 626 | 627 | ProjectExplorer.Project.TargetCount 628 | 2 629 | 630 | 631 | ProjectExplorer.Project.Updater.FileVersion 632 | 18 633 | 634 | 635 | Version 636 | 18 637 | 638 | 639 | --------------------------------------------------------------------------------