Название: чем можно записать аудио в файл? (НЕ С МИКРОФОНА!!!) Отправлено: megido от Июнь 15, 2016, 02:59 значит у меня есть QMediaPlayer, и буффер с него.
нужно писать аудио в файл кстати писать надо сначала в память а затем когда я нажму кнопку сохранять в файл и продолжить запись, теперь уже в файл. чем это можно сделать? пробовал писать Код: (char*)buffer.constData(),buffer.byteCount() получается фигня а не Mp3 Название: Re: чем можно записать аудио в файл? (НЕ С МИКРОФОНА!!!) Отправлено: Tamori Nao от Июнь 15, 2016, 09:06 Заголовок аудио файла должен делать сам
Название: Re: чем можно записать аудио в файл? (НЕ С МИКРОФОНА!!!) Отправлено: megido от Июнь 15, 2016, 09:47 Заголовок аудио файла должен делать сам да я уже понял, смотрел исходник декодера в wav. там ппц какой то. нет ли доки по этой теме? гугл ничего полезного не выдает. зато примеров записи в wav вагонНазвание: Re: чем можно записать аудио в файл? (НЕ С МИКРОФОНА!!!) Отправлено: megido от Июнь 15, 2016, 13:00 блин это мозгоеб какой то.и в гугле ниче нет.
вот думаю а что если просто скачивать файл и его подсовывать плееру. а поток данных нехрен делать в файл записать только вот мне нужно не сразу записывать в файл а начинать как только кнопку нажму. тоесть сначала я сохраняю поток в память (QBuffer) а затем мне надо как то без остановок сохранить его в физический файл. если остановить запись то запись опять должна вестись в память. ну а потом в другой файл это можно на лету все делать? Название: Re: чем можно записать аудио в файл? (НЕ С МИКРОФОНА!!!) Отправлено: Tamori Nao от Июнь 15, 2016, 13:59 А что ты хочешь сделать? Записывать с микрофона или брать кусок файла и записывать в другой со своими параметрами?
Название: Re: чем можно записать аудио в файл? (НЕ С МИКРОФОНА!!!) Отправлено: megido от Июнь 15, 2016, 15:56 А что ты хочешь сделать? Записывать с микрофона или брать кусок файла и записывать в другой со своими параметрами? на кой мне писать с микрофона? это онлайн радио плеервот сейчас пытаюсь забирать данные с QNetworkReply по сигналу readyRead, получается не очень. между кусками есть паузы. если бы этот сигнал посылался один раз я бы мог в цикле читать. а пока делаю так: Код: void MainWindow::reply_readyRead() Код:
Название: Re: чем можно записать аудио в файл? (НЕ С МИКРОФОНА!!!) Отправлено: megido от Июнь 15, 2016, 17:36 какое же это громкое слово кроссплатформ...
вобщем запустил все это на лине. буфер плееру кормить не пришлось, он прекрасно там работает с QMediaContent(reply->url()) *хотя это выходит двойное скачивание стрима, ну да пофиг пока. но вот с сохранением файла не все так хорошо, хотя он получше сохраняется чем на винде. вот такой вот файлик получается. там пропущены семплы и заголовки, хз че так. в файл вставляю сразу кучей Код: buff.seek(0); в в буфер пишу так: Код: buff.write(reply->readLine()) Название: Re: чем можно записать аудио в файл? (НЕ С МИКРОФОНА!!!) Отправлено: Tamori Nao от Июнь 16, 2016, 10:00 Из QMediaResourse достаешь все данные для заголовка. Запись заголовка нужно делать самому в Qt нет готового функционала.
Название: Re: чем можно записать аудио в файл? (НЕ С МИКРОФОНА!!!) Отправлено: megido от Июнь 16, 2016, 20:05 Из QMediaResourse достаешь все данные для заголовка. Запись заголовка нужно делать самому в Qt нет готового функционала. это другое, я же тут файл переписываю простовот смотри Код: import requests,io,urllib2 отлично работает на питоне, на QT у меня по сути тот же код, Название: Re: чем можно записать аудио в файл? (НЕ С МИКРОФОНА!!!) Отправлено: Kurles от Июнь 16, 2016, 21:36 Из QMediaResourse достаешь все данные для заголовка. Запись заголовка нужно делать самому в Qt нет готового функционала. это другое, я же тут файл переписываю простовот смотри Код: import requests,io,urllib2 отлично работает на питоне, на QT у меня по сути тот же код, main.cpp Код
Название: Re: чем можно записать аудио в файл? (НЕ С МИКРОФОНА!!!) Отправлено: megido от Июнь 17, 2016, 02:34 Kurles, добавил в твой код свой кусок
} else if (!mThread.isRunning()) { qDebug() << "let's go!"; startWaitAnyKey(); QMediaPlayer* player =new QMediaPlayer(0, QMediaPlayer::StreamPlayback); player->setVolume(50); player->setMedia(QMediaContent(), &buf); player->play(); } QNetworkReply *r = qobject_cast<QNetworkReply*>(sender()); QByteArray qa; qa=r->readAll(); mFile->write(qa); buf.write(qa.data(),qa.size()); плеер пару сек играет и замолкает - у плеера кончился контент QMediaPlayer::BufferedMedia QMediaPlayer::EndOfMedia Название: Re: чем можно записать аудио в файл? (НЕ С МИКРОФОНА!!!) Отправлено: Kurles от Июнь 17, 2016, 17:19 Kurles, добавил в твой код свой кусок Тут уже не подскажу - с QMediaPlayer не сталкивался. Но вообще бы попробовал бы ffmpeg прикрутить и уже обработанный поток через QAudioOutput играл.} else if (!mThread.isRunning()) { qDebug() << "let's go!"; startWaitAnyKey(); QMediaPlayer* player =new QMediaPlayer(0, QMediaPlayer::StreamPlayback); player->setVolume(50); player->setMedia(QMediaContent(), &buf); player->play(); } QNetworkReply *r = qobject_cast<QNetworkReply*>(sender()); QByteArray qa; qa=r->readAll(); mFile->write(qa); buf.write(qa.data(),qa.size()); плеер пару сек играет и замолкает - у плеера кончился контент QMediaPlayer::BufferedMedia QMediaPlayer::EndOfMedia Название: Re: чем можно записать аудио в файл? (НЕ С МИКРОФОНА!!!) Отправлено: megido от Июнь 17, 2016, 19:41 Тут уже не подскажу - с QMediaPlayer не сталкивался. Но вообще бы попробовал бы ffmpeg прикрутить и уже обработанный поток через QAudioOutput играл. так плеер тут не причем,тут что-то с буффером.вот void onDone() { QFile file("all.mp3"); file.open(QIODevice::WriteOnly |QFile::Truncate ); file.write(buf.data()); file.close(); qDebug() << "finish...."; qApp->quit(); } на второй секунде проигрывание полученого файла в любом плеере слышен лаг, вот на нем плеер и останавливается. а вообще я bass прикрутил, чтоб играть и рисовать уровни 10 строк кода хватает. правда до сохранения в файл еще руки не дошли. UPD: в bass.dll сохранение в файл реализовывается одной строкой кода. теперь ясно почему этот упоротый куплеер никто не использует и вобще никому он не нужен. |