Files
radio_recorder/mainwindow.cpp
2020-05-05 22:53:51 +07:00

64 lines
2.0 KiB
C++

#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
my_proc = new QProcess();
connect(my_proc, SIGNAL(started()), this, SLOT(slotStartedStdout()));
connect(my_proc, SIGNAL(finished(int)), this, SLOT(slotFinishedStdout(int)));
// box = new QMessageBox();
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
QString directory = QFileDialog::getSaveFileName(this, "Сохранить как...", "D:", "MP3 (*.mp3)");
ui->directory->setText(directory);
QString
link = " -i " + ui->link->text().toUtf8(), // http://novosibirsk.radiokp32.mp3.streamr.ru, http://air.radiorecord.ru:805/rr_320, etc...
time = " -t " + secondToTime(ui->time->text().toInt()), // 60 second, 120 second, etc...
bitrate = " -ab " + ui->bitrate->currentText(), // 128k, 192k, 256k, 320k, etc...
discretisation = " -ar " + ui->discretisation->currentText(),
strCommand = "ffmpeg\\bin\\ffmpeg.exe " + link + " -acodec libmp3lame " + bitrate + discretisation + time + " " + directory;
// box->setText(strCommand); // Debug
// box->exec(); // Debug
my_proc->start(strCommand);
}
void MainWindow::slotStartedStdout() {
ui->textEdit->append("Идет запись!");
}
void MainWindow::slotFinishedStdout(int code) {
if(code == 0) {
ui->textEdit->append("Запись завершена!\n");
}
else if(code == 1) {
ui->textEdit->append("Ошибка!\n");
QString error = my_proc->readAllStandardError();
ui->textEdit->append(error);
}
}
QString MainWindow::secondToTime(int i_time) {
QString time;
if(i_time < 60) {
time = "00:00:" + QString::number(i_time);
}
else {
int minute = i_time / 60, hour = minute / 60;
time = QString::number(hour) + ":" +
QString::number(minute - 60*hour) + ":" +
QString::number(i_time - 60*minute);
}
return time;
}