Tôi đang sử dụng qt5.0. Tôi tạo dll và đặt tất cả các tập tin âm thanh của tôi bên trong dll. bây giờ tôi đang tạo tập tin từ tài nguyên và chơi. nó hoạt động tốt.Cách phát Âm thanh và xóa tệp trong QMediaPlayer?
Nhưng vấn đề là sau khi phát tệp tôi không thể xóa tệp đó và tạo lại tệp mới.
nếu tôi cố xóa theo cách thủ công, tôi cũng gặp lỗi. "một số chương trình khác sử dụng tệp đó". một khi tôi dừng chương trình thì chỉ có thể xóa tập tin đó.
Cách xóa tệp sau khi phát lại ngay lập tức. đây mã của tôi
player = new QMediaPlayer;
connect(player,SIGNAL(mediaStatusChanged(QMediaPlayer::MediaStatus)),this,SLOT(mediaStatusChanged(QMediaPlayer::MediaStatus)));
QFile file2(QDir::tempPath() + "/temp0.mp3");
if (file2.open(QIODevice::ReadWrite))
{
QFile workFile(":/AUDIO/" + fn +".mp3");
if(workFile.open(QIODevice::ReadOnly))
{
file2.write(workFile.readAll());
workFile.close();
}
file2.close();
}
player->setMedia(QMediaContent(QUrl::fromLocalFile(QDir::tempPath() + "/temp0.mp3")));
player->setVolume(100);
player->play();
void Audio::mediaStatusChanged(QMediaPlayer::MediaStatus state)
{
if(state==QMediaPlayer::EndOfMedia)
{
QFile::remove(QDir::tempPath() + "/temp0.mp3");
qDebug()<<"Audio played";
}
}
tôi nhận được "âm thanh chơi" tin nhắn nhưng nó không deleteing tập tin.
hãy giúp tôi giải quyết vấn đề này.
có cách nào trực tiếp phát trực tiếp từ tệp DLL mà không tạo bất kỳ tệp tạm thời nào không? – Saravanan
Có vẻ như người chơi có thể giữ một tay cầm cho tập tin. Nếu bạn xóa đối tượng trình phát, tệp có thể bị xóa không? – TheDarkKnight
tốt, tôi đã thử tất cả mọi thứ nhưng tôi vẫn gặp lỗi. vì vậy tôi đặt các tệp âm thanh vào thư mục windows/media và sử dụng trong ứng dụng. Cảm ơn. – Saravanan