CINXE.COM
Qt/C++ - Lesson 051. QMediaPlayer – simple audio player
<!DOCTYPE html><html lang="en" itemscope itemtype="http://schema.org/Article"><head><!-- Yandex.RTB --><script>window.yaContextCb=window.yaContextCb||[]</script><script src="https://yandex.ru/ads/system/context.js" async></script><!-- Yandex.RTB --><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="apple-touch-icon-precomposed" sizes="57x57" href="/static/images/favicons/apple-touch-icon-57x57.png" /><link rel="apple-touch-icon-precomposed" sizes="72x72" href="/static/images/favicons/apple-touch-icon-72x72.png" /><link rel="apple-touch-icon-precomposed" sizes="114x114" href="/static/images/favicons/apple-touch-icon-114x114.png" /><link rel="apple-touch-icon-precomposed" sizes="120x120" href="/static/images/favicons/apple-touch-icon-120x120.png" /><link rel="apple-touch-icon-precomposed" sizes="144x144" href="/static/images/favicons/apple-touch-icon-144x144.png" /><link rel="apple-touch-icon-precomposed" sizes="152x152" href="/static/images/favicons/apple-touch-icon-152x152.png" /><link title="EVILEG - Social network of programmers" rel="alternate" type="application/rss+xml" href="/en/feed/" /><link title="EVILEG - Forum" rel="alternate" type="application/rss+xml" href="/en/forum/feed/" /><title>Qt/C++ - Lesson 051. QMediaPlayer – simple audio player</title><meta property="og:title" content="Qt/C++ - Lesson 051. QMediaPlayer – simple audio player" /><meta property="og:type" content="website" /><meta property="og:url" content="https://evileg.com/en/post/155/" /><meta property="og:image" content="https://evileg.com/static/images/favicons/favicon.ico" /><meta property="og:site_name" content="EVILEG" /><meta name="google-site-verification" content="vVTpO8SvQTo0QU2hU-zDTBHgHzqr2CGx7ACdQHPlLes" /><meta name="yandex-verification" content="c58ddaad8c500539" /><meta name="wot-verification" content="5e851b19f7a76433f3dc"/><meta name="description" content="Qt/C++ - Lesson 051. QMediaPlayer – simple audio player. I suggest to write a simple audio player for mp3 files using Qt/C++, which will have a playlist, the ability to start / pause / stop tracks, as well as scroll through the tracks. For the im"/><link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous"><link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css" rel="stylesheet" ><link href="/static/css/custom.css?9" rel="stylesheet"><script src="/static/js/jquery-3.3.1.min.js"></script><script src="https://cdn.jsdelivr.net/npm/js-cookie@2/src/js.cookie.min.js"></script><script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.8/dist/umd/popper.min.js" integrity="sha384-I7E8VVD/ismYTF4hNIPjVp/Zjvgyol6VFvRkX/vR+Vc4jQkC+hVqc2pM8ODewa9r" crossorigin="anonymous"></script><script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script><script src="/static/js/global.js?27"></script><script type="application/ld+json">{"@context": "http://schema.org", "@type": "ItemList", "itemListElement": [{"@type": "SiteNavigationElement", "position": 1, "name": "EVILEG", "url": "/en/"}, {"@type": "SiteNavigationElement", "position": 2, "name": "Articles", "url": "/en/knowledge/"}, {"@type": "SiteNavigationElement", "position": 3, "name": "Forum", "url": "/en/forum/"}, {"@type": "SiteNavigationElement", "position": 4, "name": "Tests", "url": "/en/tests/"}, {"@type": "SiteNavigationElement", "position": 5, "name": "Share code", "url": "/en/sharecode/"}, {"@type": "SiteNavigationElement", "position": 6, "name": "Share code", "url": "/en/sharecode/create/"}, {"@type": "SiteNavigationElement", "position": 7, "name": "Write article", "url": "/en/knowledge/article/add/"}, {"@type": "SiteNavigationElement", "position": 8, "name": "Ask a question", "url": "/en/forum/create_topic/"}]}</script></head><body class="bg-light"><nav class="navbar navbar-expand-lg navbar-dark fixed-top bg-dark"><div class="container-xxl"><button class="navbar-toggler collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#mainNavbar" aria-controls="mainNavbar" aria-expanded="false" aria-label="Toggle navigation"><span class="navbar-toggler-icon"></span></button><a class="navbar-brand ms-3 ms-lg-0" href="/en/">EVILEG</a><button class="btn btn-outline-secondary ms-auto d-block d-lg-none" type="button" data-bs-toggle="modal" data-bs-target="#menuModal" aria-controls="menuModal" title="Menu"><span class="bi bi-grid-3x3-gap-fill"></span></button><a class="btn btn-outline-secondary ms-2 d-block d-lg-none" href="/en/accounts/login/" title="Login"> Login </a><div class="navbar-collapse collapse" id="mainNavbar"><form role="search" action="/en/search/" method="get" class="mt-3 mt-lg-0"><input id="search" name="search" type="search" class="form-control" placeholder="Search..." title="Search"></form><ul class="navbar-nav ms-2 mb-2 mb-lg-0"><li class="nav-item"><a class="nav-link" href="/en/knowledge/">Articles</a></li><li class="nav-item"><a class="nav-link" href="/en/forum/">Forum</a></li><li class="nav-item"><a class="nav-link" href="/en/tests/">Tests</a></li><li class="nav-item"><a class="nav-link" href="/en/sharecode/">Share code</a></li><li class="nav-item dropdown"><a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown" aria-expanded="false">EN</a><ul class="dropdown-menu"><a class="dropdown-item" href="/lang/ru/">Русский</a><a class="dropdown-item" href="/lang/uk/">Українська</a><a class="dropdown-item" href="/lang/en/">English</a><a class="dropdown-item" href="/lang/kk/">Қазақ</a><a class="dropdown-item" href="/lang/de/">Deutsch</a></ul></li></ul></div><button class="btn btn-outline-secondary ms-2 d-none d-lg-block" type="button" data-bs-toggle="modal" data-bs-target="#menuModal" aria-controls="menuModal" title="Menu"><span class="bi bi-grid-3x3-gap-fill"></span></button><a class="btn btn-outline-secondary ms-2 d-none d-lg-block" href="/en/accounts/login/" title="Login"> Login </a></div></nav><main class="container-xxl"><div class="row"><div class="col-12 col-lg overflow-hidden"><ul class="breadcrumb bg-light"><li class="breadcrumb-item"><a href="/en/"><i class="bi bi-house"><span class="d-none">EVILEG</span></i></a></li><li class="breadcrumb-item"><a href="/en/knowledge/">Articles</a></li><li class="breadcrumb-item"><a href="/en/knowledge/qt/">Qt</a></li><li class="breadcrumb-item active">Qt/C++ - Lesson 051. QMediaPlayer – simple audio player</li></ul><script type="application/ld+json">{"@context": "http://schema.org", "@type": "BreadcrumbList", "itemListElement": [{"@type": "ListItem", "position": 1, "item": {"@type": "Thing", "@id": "/en/", "name": "EVILEG"}}, {"@type": "ListItem", "position": 2, "item": {"@type": "Thing", "@id": "/en/knowledge/", "name": "Articles"}}, {"@type": "ListItem", "position": 3, "item": {"@type": "Thing", "@id": "/en/knowledge/qt/", "name": "Qt"}}, {"@type": "ListItem", "position": 4, "item": {"@type": "Thing", "@id": "/en/post/155/", "name": "Qt/C++ - Lesson 051. QMediaPlayer – simple audio player"}}]}</script><div ><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8160668332851230" crossorigin="anonymous"></script><!-- EVILEG ADS TOP --><ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-8160668332851230" data-ad-slot="6001381692" data-ad-format="auto" data-full-width-responsive="true"></ins><script> (adsbygoogle = window.adsbygoogle || []).push({}); </script><article><div itemprop="publisher" itemscope itemtype="https://schema.org/Organization"><div itemprop="logo" itemscope itemtype="https://schema.org/ImageObject"><link itemprop="image" href="/static/images/favicons/apple-touch-icon-152x152.png"><link itemprop="url" href="/static/images/favicons/apple-touch-icon-152x152.png"><meta itemprop="width" content="152"><meta itemprop="height" content="152"></div><meta itemprop="name" content="EVILEG"><meta itemprop="address" content="EVILEG"><meta itemprop="telephone" content="-"><link itemprop="url" href="https://evileg.com"></div><link itemprop="mainEntityOfPage" itemscope href="/en/post/155/" /><meta itemprop="commentCount" content="15"><meta itemprop="articleSection" content="Qt"><div itemscope itemprop="author" itemtype="https://schema.org/Person"><meta itemprop="name" content="Evgenii Legotckoi"><link itemprop="url" content="/en/users/2/"></div><meta itemprop="url" content="/en/post/155/"><meta itemprop="accessMode" content="textual"><meta itemprop="wordCount" content="1033"><meta itemprop="datePublished" content="June 29, 2016, 7:06 p.m."><meta itemprop="dateModified" content="March 30, 2023, 2 a.m."><div itemprop="interactionStatistic" itemscope itemtype="https://schema.org/InteractionCounter"><meta itemprop="interactionType" content="https://schema.org/BookmarkAction"><meta itemprop="userInteractionCount" content="0"></div><div itemprop="interactionStatistic" itemscope itemtype="https://schema.org/InteractionCounter"><meta itemprop="interactionType" content="https://schema.org/LikeAction"><meta itemprop="userInteractionCount" content="3"></div><div itemprop="interactionStatistic" itemscope itemtype="https://schema.org/InteractionCounter"><meta itemprop="interactionType" content="https://schema.org/DislikeAction"><meta itemprop="userInteractionCount" content="0"></div><meta itemprop="keywords" content="QStandardItemModel,QMediaPlayer,QMediaPlaylist,Qt,аудио плеер"><div class="card mb-3"><div class="card-header d-flex py-2"><a href=/en/users/2/><img loading="lazy" alt="Evgenii Legotckoi" class="bg-secondary bg-opacity-10 rounded avatar-initials avatar-48" src="/media/cache/7a/08/7a0837c6eb199ca9af1a03ea5ccbfcbf.webp"></a><div class="ms-3"><div><a href="/en/users/2/" class="text-decoration-none">Evgenii Legotckoi</a></div><small class="text-secondary">June 29, 2016, 7:06 p.m.</small></div></div><div class="card-body"><h1 itemprop="headline">Qt/C++ - Lesson 051. QMediaPlayer – simple audio player</h1><div><p><a href="/en/search/?search=%23QStandardItemModel">QStandardItemModel</a>, <a href="/en/search/?search=%23QMediaPlayer">QMediaPlayer</a>, <a href="/en/search/?search=%23QMediaPlaylist">QMediaPlaylist</a>, <a href="/en/search/?search=%23Qt">Qt</a>, <a href="/en/search/?search=%23%D0%B0%D1%83%D0%B4%D0%B8%D0%BE%20%D0%BF%D0%BB%D0%B5%D0%B5%D1%80">аудио плеер</a></p></div><div itemprop="articleBody"><div class="card border mb-3"><div class="card-header">Content</div><div class="card-body"><ol class="list-unstyled mb-0"><li><span>1. </span><span><a href="#header_Project_structure">Project structure</a></span></li><li><span>2. </span><span><a href="#header_widget.ui">widget.ui</a></span></li><li><span>3. </span><span><a href="#header_SimplePlayer.pro">SimplePlayer.pro</a></span></li><li><span>4. </span><span><a href="#header_widget.h">widget.h</a></span></li><li><span>5. </span><span><a href="#header_widget.cpp">widget.cpp</a></span></li><li><span>6. </span><span><a href="#header_Result">Result</a></span></li><li><span>7. </span><span><a href="#header_Video">Video</a></span></li></ol></div></div><p> I suggest to write a simple audio player for mp3 files using Qt/C++, which will have a playlist, the ability to start / pause / stop tracks, as well as scroll through the tracks. </p><p> For the implementation of this ideas in Qt, classes are QMediaPlayer and QMediaPlaylist, which belong to the multimedia module. And to display the playlist and use QStandardItemModel QTableView. </p><p> Articles in this series: </p><ul><li><a href="http://www.evileg.ru/baza-znanij/qt/kastomizatsiya-qt-audio-pleera-v-stile-aimp.html" rel="nofollow"> Customization Qt Audio player in the style of AIMP </a></li></ul><h2><a class="anchor" id="header_Project_structure"></a> Project structure </h2><ul><li><strong> SimplePlayer.pro </strong> - the profile of the project; </li><li><strong> main.cpp </strong> - the file with the main function; </li><li><strong> widget.ui </strong> - form of application window; </li><li><strong> widget.h </strong> - header file of the application window; </li><li><strong> widget.cpp </strong> - file source code of the application window; </li><li><strong> buttons.qrc </strong> - resource file application icon buttons. </li></ul><hr/><h2><a class="anchor" id="header_widget.ui"></a> widget.ui </h2><p> The application interface is made using a graphic designer, and it have look as follows. </p><p><img alt="" class="img-fluid" loading="lazy" src="/media/uploads/2016/12/26/player.png"/></p><p> The application interface consists of the following elements: </p><ul><li><strong> btn_add (QToolButton*) </strong> - responsible for adding tracks to the playlist; </li><li><strong> btn_next </strong><strong> (QToolButton*) </strong> - responsible for flipping the playlist ahead; </li><li><strong> btn_previous (QToolButton*) </strong> - responsible for flipping playlist ago; </li><li><strong> btn_play (QToolButton*) </strong> - responsible for track playback; </li><li><strong> btn_pause </strong><strong> (QToolButton*) </strong> - responsible for setting the track is paused; </li><li><strong> btn_stop (QToolButton*) </strong> - responsible for track stop; </li><li><strong> currentTrack (QLabel*) </strong> - label, which will display the current track; </li><li><strong> playlistView (QTableView*) </strong> - table, which displays the playlist. </li></ul><h2><a class="anchor" id="header_SimplePlayer.pro"></a> SimplePlayer.pro </h2><p> The project profile that you connect the multimedia module, otherwise QMediaPlayer and QMediaPlaylist classes will be not available. </p><pre><pre class="prettyprint linenums"> #------------------------------------------------- # # Project created by QtCreator 2016-06-29T11:25:56 # #------------------------------------------------- QT += core gui multimedia greaterThan(QT_MAJOR_VERSION, 4): QT += widgets TARGET = SimplePlayer TEMPLATE = app SOURCES += main.cpp\ widget.cpp HEADERS += widget.h FORMS += widget.ui RESOURCES += \ buttons.qrc </pre></pre><h2><a class="anchor" id="header_widget.h"></a> widget.h </h2><p> To implement the playlist display, have to use QStandardItemModel. In it will be placed in the path of audio files and audio file names. The first column is the name of the audio file, and the second will be the full path, but this column will be hidden in a QTableView object, which will be responsible for mapping Playlist. </p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8160668332851230" crossorigin="anonymous"></script><ins class="adsbygoogle" style="display:block; text-align:center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-8160668332851230" data-ad-slot="5700035342"></ins><script> (adsbygoogle = window.adsbygoogle || []).push({}); </script><p> Also, the path to the file as a media source will need to be put in QMediaPlaylist object that will be placed in QMediaPlayer. </p><p> Pointers to these objects are placed in the header file of the application window. Also here there avtogenerirovany through designer interface slot to press the button add tracks to the playlist processing. </p><pre><pre class="prettyprint linenums"> #ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include <QStandardItemModel> #include <QMediaPlayer> #include <QMediaPlaylist> namespace Ui { class Widget; } class Widget : public QWidget { Q_OBJECT public: explicit Widget(QWidget *parent = 0); ~Widget(); private slots: void on_btn_add_clicked(); // The slot for the processing of adding tracks through dialog private: Ui::Widget *ui; QStandardItemModel *m_playListModel; // Data Model for Playlist QMediaPlayer *m_player; QMediaPlaylist *m_playlist; }; #endif // WIDGET_H </pre></pre><h2><a class="anchor" id="header_widget.cpp"></a> widget.cpp </h2><p> For realization of the player it is necessary to initialize the object <strong> QMediaPlayer </strong> , <strong> QMediaPlaylist </strong> and <strong> QStandardItemModel </strong> , which have been declared in the header file of the application window. In the first half of the designer made customize the appearance of the table to display the playlist, while the second setting of the player. player controlled via the buttons that are connected to the control slots <strong> m_playlist </strong> (for navigation) and <strong> m_player </strong> (to start / pause / stop). </p><p> If you change the current track, the player will automatically terminates playback of the track that was before the change, and starts to play a new track. </p><p> Due to the fact that <strong> QMediaPlaylist </strong> has no model to be displayed in the table, we use the <strong> QStandardItemModel </strong> class, so you have to add data about file paths and there and there. </p><pre><pre class="prettyprint linenums"> #include "widget.h" #include "ui_widget.h" #include <QFileDialog> #include <QDir> Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); m_playListModel = new QStandardItemModel(this); ui->playlistView->setModel(m_playListModel); m_playListModel->setHorizontalHeaderLabels(QStringList() << tr("Audio Track") << tr("File Path")); ui->playlistView->hideColumn(1); ui->playlistView->verticalHeader()->setVisible(false); ui->playlistView->setSelectionBehavior(QAbstractItemView::SelectRows); ui->playlistView->setSelectionMode(QAbstractItemView::SingleSelection); ui->playlistView->setEditTriggers(QAbstractItemView::NoEditTriggers); ui->playlistView->horizontalHeader()->setStretchLastSection(true); m_player = new QMediaPlayer(this); // Init player m_playlist = new QMediaPlaylist(m_player); // Init playlist m_player->setPlaylist(m_playlist); m_player->setVolume(70); m_playlist->setPlaybackMode(QMediaPlaylist::Loop); // Set circular play mode playlist // подключаем кнопки управления к слотам управления // Here we note that the navigation is done through the playlist playlist // and start / pause / stop via the player itself connect(ui->btn_previous, &QToolButton::clicked, m_playlist, &QMediaPlaylist::previous); connect(ui->btn_next, &QToolButton::clicked, m_playlist, &QMediaPlaylist::next); connect(ui->btn_play, &QToolButton::clicked, m_player, &QMediaPlayer::play); connect(ui->btn_pause, &QToolButton::clicked, m_player, &QMediaPlayer::pause); connect(ui->btn_stop, &QToolButton::clicked, m_player, &QMediaPlayer::stop); // When you doubleclick on the track in the table set the track in the playlist connect(ui->playlistView, &QTableView::doubleClicked, [this](const QModelIndex &index){ m_playlist->setCurrentIndex(index.row()); }); // if the current track of the index change in the playlist, set the file name in a special label connect(m_playlist, &QMediaPlaylist::currentIndexChanged, [this](int index){ ui->currentTrack->setText(m_playListModel->data(m_playListModel->index(index, 0)).toString()); }); } Widget::~Widget() { delete ui; delete m_playListModel; delete m_playlist; delete m_player; } void Widget::on_btn_add_clicked() { // Using the file selection dialog to make multiple selections of mp3 files QStringList files = QFileDialog::getOpenFileNames(this, tr("Open files"), QString(), tr("Audio Files (*.mp3)")); // Next, set the data names and file paths // into the playlist and table displaying the playlist foreach (QString filePath, files) { QList<QStandardItem *> items; items.append(new QStandardItem(QDir(filePath).dirName())); items.append(new QStandardItem(filePath)); m_playListModel->appendRow(items); m_playlist->addMedia(QUrl(filePath)); } } </pre></pre><h2><a class="anchor" id="header_Result"></a> Result </h2><p> Once the app is started, you can open the mp3 tracks and listen to them. </p><p><a href="/media/uploads/2016/12/26/simpleplayer.zip"> Download Qt Audio Player </a></p><h2><a class="anchor" id="header_Video"></a> Video </h2><p></p><div class="youtube-wrapper"><iframe class="youtube-iframe" src="//www.youtube.com/embed/_H9X4p8GqeA"></iframe></div></div><div class="mt-3"><a href="https://timeweb.com/ru/?i=27415&utm_source=evileg&utm_medium=after_article&utm_campaign=base" rel="nofollow" target="_blank"><div class="d-flex"><div class="me-3"><img src="/media/technical_storage/timeweb-120-90.jpg" alt="We recommend hosting TIMEWEB"></div><div><h5 class="mt-0">We recommend hosting TIMEWEB</h5> Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting. </div></div></a></div></div><div class="card-body border-top"><p><strong>Recommended articles on this topic</strong></p><ul><li><a href="/en/post/156/">Qt/C++ - Lesson 052. Customization Qt Audio player in the style of AIMP</a></li></ul><p><strong class="me-1">By article asked</strong><a href="/en/forum/?search=article:155">1<span class="ms-1">question(s)</span></a></p><div class="form-check form-switch d-flex justify-content-between align-items-center"><input class="form-check-input me-3" type="checkbox" role="switch" disabled><label class="form-check-label mt-1">Subscribe to the discussion</label><span class="badge text-bg-primary ms-auto">8</span></div><div class="form-check form-switch d-flex justify-content-between align-items-center"><input class="form-check-input me-3" type="checkbox" role="switch" disabled><label class="form-check-label mt-1"><a href="/en/knowledge/qt/">Section subscription</a></label><span class="badge text-bg-primary ms-auto">348</span></div></div><div class="m-3 p-3 bg-light rounded text-center"><p>Do you like it? Share on social networks!</p><script async src="https://yastatic.net/share2/share.js"></script><div class="ya-share2" data-curtain data-size="l" data-shape="round" data-lang="en" data-services="telegram,vkontakte,twitter,linkedin,reddit,odnoklassniki,whatsapp,skype,tumblr,lj,pocket,surfingbird"></div></div><div class="card-footer"><div class="btn btn-sm" title="Views"><i class="bi bi-eye me-1"></i>7.2K</div><a class="btn btn-sm btn-light" title="Comments" href="/en/post/155/#comments"><i class="bi bi-chat-left me-1"></i>15</a><div class="btn btn-sm btn-light" onclick="Global.nonlogin()" title="Only registered users can add to favorites"><i class="bi bi-bookmark me-1"></i>0</div><div class="btn btn-sm btn-light" onclick="Global.nonlogin()" title="Only registered users can rate"><i class="bi bi-hand-thumbs-up-fill me-1"></i>3</div><div class="btn btn-sm btn-light" onclick="Global.nonlogin()" title="Only registered users can rate"><i class="bi bi-hand-thumbs-down-fill me-1"></i>0</div></div></div></article><a class="anchor" id="comments"></a><div id="comments-feed"><a class="anchor" name="comment-204"></a><div id="204" class="card mb-3"><div class="card-header d-flex py-2"><a class="bg-secondary bg-opacity-10 rounded avatar-initials avatar-48" href=/en/users/1444/>S</a><div class="ms-3"><ul class="list-inline mb-0"><li class="list-inline-item"><a rel="author" href="/en/users/1444/">Sergei</a></li><li class="list-inline-item"><a href="/en/post/155/#comment-204" title="Link to comment">#</a></li></ul><ul class="list-inline mb-0"><li class="list-inline-item me-2"><small class="text-secondary">June 10, 2017, 1:26 p.m.</small></li></ul></div></div><div class="card-body"><div class="mb-3"><p> Скажите, пожалуйста, как на линуксе исправить ошибку , связанную с непраильной схемой пути к файлу - "Error: "Invalid URI ...."" и далее соответственно GSteamer; unable to pause... </p><div> На официальном форуме указано на то, что "when passing local file to the media player, you need to use the "file://" scheme so it knows it has to look in to the file system." Но что конкретно из этого стоит вынести, не ясно. </div><div><div> Благодарен за внимание. </div></div></div></div><div class="card-footer"><div class="btn btn-sm btn-light" onclick="Global.nonlogin()" title="Only registered users can add to favorites"><i class="bi bi-bookmark me-1"></i>0</div><div class="btn btn-sm btn-light" onclick="Global.nonlogin()" title="Only registered users can rate"><i class="bi bi-hand-thumbs-up-fill me-1"></i>0</div><div class="btn btn-sm btn-light" onclick="Global.nonlogin()" title="Only registered users can rate"><i class="bi bi-hand-thumbs-down-fill me-1"></i>0</div></div><script type="application/ld+json">{"@context": "http://schema.org", "@type": "Comment", "author": "Sergei", "url": "/en/post/155/#comment-204", "name": "Qt/C++ - Lesson 051. QMediaPlayer – simple audio player", "headline": "Qt/C++ - Lesson 051. QMediaPlayer – simple audio player", "description": "\n \n Скажите, пожалуйста, как на линуксе исправить ошибку , связанную с непраильной схемой пути к файлу - \"Error: \"Invalid URI ....\"\" и далее соответственно GSteamer; unable to pause...\n \n \n На официальном форуме указано на то, что \"when passing local file to the media player, you need to use the \"file://\" scheme so it knows it has to look in to the file system.\" Но что конкретно из этого стоит вынести, не ясно.\n \n \n \n Благодарен за внимание.\n \n \n", "datePublished": "2017-06-10T07:26:48.165674+00:00", "interactionStatistic": [{"@type": "InteractionCounter", "interactionType": "BookmarkAction", "userInteractionCount": 0}, {"@type": "InteractionCounter", "interactionType": "LikeAction", "userInteractionCount": 0}, {"@type": "InteractionCounter", "interactionType": "DislikeAction", "userInteractionCount": 0}]}</script></div><a class="anchor" name="comment-205"></a><div id="205" class="card mb-3"><div class="card-header d-flex py-2"><a href=/en/users/2/><img loading="lazy" alt="Evgenii Legotckoi" class="bg-secondary bg-opacity-10 rounded avatar-initials avatar-48" src="/media/cache/7a/08/7a0837c6eb199ca9af1a03ea5ccbfcbf.webp"></a><div class="ms-3"><ul class="list-inline mb-0"><li class="list-inline-item"><a rel="author" href="/en/users/2/">Evgenii Legotckoi</a> → <a class="text-muted" href="#comment-204">Sergei</a></li><li class="list-inline-item"><a href="/en/post/155/#comment-205" title="Link to comment">#</a></li></ul><ul class="list-inline mb-0"><li class="list-inline-item me-2"><small class="text-secondary">June 10, 2017, 8:35 p.m.</small></li></ul></div></div><div class="card-body"><div class="mb-3"><p> Ответил на <a href="https://evileg.com/forum/topic/276/#post-1769"> форуме </a></p></div></div><div class="card-footer"><div class="btn btn-sm btn-light" onclick="Global.nonlogin()" title="Only registered users can add to favorites"><i class="bi bi-bookmark me-1"></i>0</div><div class="btn btn-sm btn-light" onclick="Global.nonlogin()" title="Only registered users can rate"><i class="bi bi-hand-thumbs-up-fill me-1"></i>0</div><div class="btn btn-sm btn-light" onclick="Global.nonlogin()" title="Only registered users can rate"><i class="bi bi-hand-thumbs-down-fill me-1"></i>0</div></div><script type="application/ld+json">{"@context": "http://schema.org", "@type": "Comment", "author": "Evgenii Legotckoi", "url": "/en/post/155/#comment-205", "name": "Qt/C++ - Lesson 051. QMediaPlayer – simple audio player", "headline": "Qt/C++ - Lesson 051. QMediaPlayer – simple audio player", "description": "\n \n Ответил на\n \n форуме\n \n \n", "datePublished": "2017-06-10T14:35:43.147201+00:00", "interactionStatistic": [{"@type": "InteractionCounter", "interactionType": "BookmarkAction", "userInteractionCount": 0}, {"@type": "InteractionCounter", "interactionType": "LikeAction", "userInteractionCount": 0}, {"@type": "InteractionCounter", "interactionType": "DislikeAction", "userInteractionCount": 0}]}</script></div><a class="anchor" name="comment-2156"></a><div id="2156" class="card mb-3"><div class="card-header d-flex py-2"><a class="bg-secondary bg-opacity-10 rounded avatar-initials avatar-48" href=/en/users/8006/>DV</a><div class="ms-3"><ul class="list-inline mb-0"><li class="list-inline-item"><a rel="author" href="/en/users/8006/">Dzmitry Vashkevich</a></li><li class="list-inline-item"><a href="/en/post/155/#comment-2156" title="Link to comment">#</a></li></ul><ul class="list-inline mb-0"><li class="list-inline-item me-2"><small class="text-secondary">April 28, 2021, 1:40 a.m.</small></li></ul></div></div><div class="card-body"><div class="mb-3"><p> Добрый вечер. Хотел бы получить консультацию по работе с проектом на Mac OS. Открыл проект в QT и собрал его. Проблема в том, что он не воспроизводит треки и их названия зацикленно мелькают в поле текущего трека. По системе: <br/> - Mac OS 10.14 <br/> - QT 5.15.2 <br/> - XCode 10.2 <br/> С чем это может быть связано. Заранее благодарен. </p></div></div><div class="card-footer"><div class="btn btn-sm btn-light" onclick="Global.nonlogin()" title="Only registered users can add to favorites"><i class="bi bi-bookmark me-1"></i>0</div><div class="btn btn-sm btn-light" onclick="Global.nonlogin()" title="Only registered users can rate"><i class="bi bi-hand-thumbs-up-fill me-1"></i>0</div><div class="btn btn-sm btn-light" onclick="Global.nonlogin()" title="Only registered users can rate"><i class="bi bi-hand-thumbs-down-fill me-1"></i>0</div></div><script type="application/ld+json">{"@context": "http://schema.org", "@type": "Comment", "author": "Dzmitry Vashkevich", "url": "/en/post/155/#comment-2156", "name": "Qt/C++ - Lesson 051. QMediaPlayer – simple audio player", "headline": "Qt/C++ - Lesson 051. QMediaPlayer – simple audio player", "description": "\n \n Добрый вечер. Хотел бы получить консультацию по работе с проектом на Mac OS. Открыл проект в QT и собрал его. Проблема в том, что он не воспроизводит треки и их названия зацикленно мелькают в поле текущего трека. По системе:\n \n - Mac OS 10.14\n \n - QT 5.15.2\n \n - XCode 10.2\n \n С чем это может быть связано. Заранее благодарен.\n \n", "datePublished": "2021-04-27T19:40:20.374198+00:00", "interactionStatistic": [{"@type": "InteractionCounter", "interactionType": "BookmarkAction", "userInteractionCount": 0}, {"@type": "InteractionCounter", "interactionType": "LikeAction", "userInteractionCount": 0}, {"@type": "InteractionCounter", "interactionType": "DislikeAction", "userInteractionCount": 0}]}</script></div><a class="anchor" name="comment-2192"></a><div id="2192" class="card mb-3"><div class="card-header d-flex py-2"><a href=/en/users/2/><img loading="lazy" alt="Evgenii Legotckoi" class="bg-secondary bg-opacity-10 rounded avatar-initials avatar-48" src="/media/cache/7a/08/7a0837c6eb199ca9af1a03ea5ccbfcbf.webp"></a><div class="ms-3"><ul class="list-inline mb-0"><li class="list-inline-item"><a rel="author" href="/en/users/2/">Evgenii Legotckoi</a> → <a class="text-muted" href="#comment-2156">Dzmitry Vashkevich</a></li><li class="list-inline-item"><a href="/en/post/155/#comment-2192" title="Link to comment">#</a></li></ul><ul class="list-inline mb-0"><li class="list-inline-item me-2"><small class="text-secondary">July 2, 2021, 3:09 p.m.</small></li></ul></div></div><div class="card-body"><div class="mb-3"><p> С Mac OS опыта работы не имею на данный момент </p></div></div><div class="card-footer"><div class="btn btn-sm btn-light" onclick="Global.nonlogin()" title="Only registered users can add to favorites"><i class="bi bi-bookmark me-1"></i>0</div><div class="btn btn-sm btn-light" onclick="Global.nonlogin()" title="Only registered users can rate"><i class="bi bi-hand-thumbs-up-fill me-1"></i>0</div><div class="btn btn-sm btn-light" onclick="Global.nonlogin()" title="Only registered users can rate"><i class="bi bi-hand-thumbs-down-fill me-1"></i>0</div></div><script type="application/ld+json">{"@context": "http://schema.org", "@type": "Comment", "author": "Evgenii Legotckoi", "url": "/en/post/155/#comment-2192", "name": "Qt/C++ - Lesson 051. QMediaPlayer – simple audio player", "headline": "Qt/C++ - Lesson 051. QMediaPlayer – simple audio player", "description": "\n \n С Mac OS опыта работы не имею на данный момент\n \n", "datePublished": "2021-07-02T09:09:46.430010+00:00", "interactionStatistic": [{"@type": "InteractionCounter", "interactionType": "BookmarkAction", "userInteractionCount": 0}, {"@type": "InteractionCounter", "interactionType": "LikeAction", "userInteractionCount": 0}, {"@type": "InteractionCounter", "interactionType": "DislikeAction", "userInteractionCount": 0}]}</script></div><a class="anchor" name="comment-2466"></a><div id="2466" class="card mb-3"><div class="card-header d-flex py-2"><a class="bg-secondary bg-opacity-10 rounded avatar-initials avatar-48" href=/en/users/11883/>АГ</a><div class="ms-3"><ul class="list-inline mb-0"><li class="list-inline-item"><a rel="author" href="/en/users/11883/">Александр Галанов</a></li><li class="list-inline-item"><a href="/en/post/155/#comment-2466" title="Link to comment">#</a></li></ul><ul class="list-inline mb-0"><li class="list-inline-item me-2"><small class="text-secondary">June 21, 2022, 3:48 p.m.</small></li></ul></div></div><div class="card-body"><div class="mb-3"><p> можно ли из этого плеера сделать многоканалов воспроизведения ? </p></div></div><div class="card-footer"><div class="btn btn-sm btn-light" onclick="Global.nonlogin()" title="Only registered users can add to favorites"><i class="bi bi-bookmark me-1"></i>0</div><div class="btn btn-sm btn-light" onclick="Global.nonlogin()" title="Only registered users can rate"><i class="bi bi-hand-thumbs-up-fill me-1"></i>0</div><div class="btn btn-sm btn-light" onclick="Global.nonlogin()" title="Only registered users can rate"><i class="bi bi-hand-thumbs-down-fill me-1"></i>0</div></div><script type="application/ld+json">{"@context": "http://schema.org", "@type": "Comment", "author": "Александр Галанов", "url": "/en/post/155/#comment-2466", "name": "Qt/C++ - Lesson 051. QMediaPlayer – simple audio player", "headline": "Qt/C++ - Lesson 051. QMediaPlayer – simple audio player", "description": "\n \n можно ли из этого плеера сделать многоканалов воспроизведения ?\n \n", "datePublished": "2022-06-21T09:48:32.271230+00:00", "interactionStatistic": [{"@type": "InteractionCounter", "interactionType": "BookmarkAction", "userInteractionCount": 0}, {"@type": "InteractionCounter", "interactionType": "LikeAction", "userInteractionCount": 0}, {"@type": "InteractionCounter", "interactionType": "DislikeAction", "userInteractionCount": 0}]}</script></div><a class="anchor" name="comment-2467"></a><div id="2467" class="card mb-3"><div class="card-header d-flex py-2"><a href=/en/users/2/><img loading="lazy" alt="Evgenii Legotckoi" class="bg-secondary bg-opacity-10 rounded avatar-initials avatar-48" src="/media/cache/7a/08/7a0837c6eb199ca9af1a03ea5ccbfcbf.webp"></a><div class="ms-3"><ul class="list-inline mb-0"><li class="list-inline-item"><a rel="author" href="/en/users/2/">Evgenii Legotckoi</a> → <a class="text-muted" href="#comment-2466">Александр Галанов</a></li><li class="list-inline-item"><a href="/en/post/155/#comment-2467" title="Link to comment">#</a></li></ul><ul class="list-inline mb-0"><li class="list-inline-item me-2"><small class="text-secondary">June 21, 2022, 3:54 p.m.</small></li></ul></div></div><div class="card-body"><div class="mb-3"><p> нет </p></div></div><div class="card-footer"><div class="btn btn-sm btn-light" onclick="Global.nonlogin()" title="Only registered users can add to favorites"><i class="bi bi-bookmark me-1"></i>0</div><div class="btn btn-sm btn-light" onclick="Global.nonlogin()" title="Only registered users can rate"><i class="bi bi-hand-thumbs-up-fill me-1"></i>0</div><div class="btn btn-sm btn-light" onclick="Global.nonlogin()" title="Only registered users can rate"><i class="bi bi-hand-thumbs-down-fill me-1"></i>0</div></div><script type="application/ld+json">{"@context": "http://schema.org", "@type": "Comment", "author": "Evgenii Legotckoi", "url": "/en/post/155/#comment-2467", "name": "Qt/C++ - Lesson 051. QMediaPlayer – simple audio player", "headline": "Qt/C++ - Lesson 051. QMediaPlayer – simple audio player", "description": "\n \n нет\n \n", "datePublished": "2022-06-21T09:54:58.652595+00:00", "interactionStatistic": [{"@type": "InteractionCounter", "interactionType": "BookmarkAction", "userInteractionCount": 0}, {"@type": "InteractionCounter", "interactionType": "LikeAction", "userInteractionCount": 0}, {"@type": "InteractionCounter", "interactionType": "DislikeAction", "userInteractionCount": 0}]}</script></div><a class="anchor" name="comment-2468"></a><div id="2468" class="card mb-3"><div class="card-header d-flex py-2"><a class="bg-secondary bg-opacity-10 rounded avatar-initials avatar-48" href=/en/users/11883/>АГ</a><div class="ms-3"><ul class="list-inline mb-0"><li class="list-inline-item"><a rel="author" href="/en/users/11883/">Александр Галанов</a></li><li class="list-inline-item"><a href="/en/post/155/#comment-2468" title="Link to comment">#</a></li></ul><ul class="list-inline mb-0"><li class="list-inline-item me-2"><small class="text-secondary">June 21, 2022, 4:07 p.m.</small></li></ul></div></div><div class="card-body"><div class="mb-3"><p> есть такая вообще возможность ? </p></div></div><div class="card-footer"><div class="btn btn-sm btn-light" onclick="Global.nonlogin()" title="Only registered users can add to favorites"><i class="bi bi-bookmark me-1"></i>0</div><div class="btn btn-sm btn-light" onclick="Global.nonlogin()" title="Only registered users can rate"><i class="bi bi-hand-thumbs-up-fill me-1"></i>0</div><div class="btn btn-sm btn-light" onclick="Global.nonlogin()" title="Only registered users can rate"><i class="bi bi-hand-thumbs-down-fill me-1"></i>0</div></div><script type="application/ld+json">{"@context": "http://schema.org", "@type": "Comment", "author": "Александр Галанов", "url": "/en/post/155/#comment-2468", "name": "Qt/C++ - Lesson 051. QMediaPlayer – simple audio player", "headline": "Qt/C++ - Lesson 051. QMediaPlayer – simple audio player", "description": "\n \n есть такая вообще возможность ?\n \n", "datePublished": "2022-06-21T10:07:19.528768+00:00", "interactionStatistic": [{"@type": "InteractionCounter", "interactionType": "BookmarkAction", "userInteractionCount": 0}, {"@type": "InteractionCounter", "interactionType": "LikeAction", "userInteractionCount": 0}, {"@type": "InteractionCounter", "interactionType": "DislikeAction", "userInteractionCount": 0}]}</script></div><a class="anchor" name="comment-2469"></a><div id="2469" class="card mb-3"><div class="card-header d-flex py-2"><a href=/en/users/2/><img loading="lazy" alt="Evgenii Legotckoi" class="bg-secondary bg-opacity-10 rounded avatar-initials avatar-48" src="/media/cache/7a/08/7a0837c6eb199ca9af1a03ea5ccbfcbf.webp"></a><div class="ms-3"><ul class="list-inline mb-0"><li class="list-inline-item"><a rel="author" href="/en/users/2/">Evgenii Legotckoi</a> → <a class="text-muted" href="#comment-2468">Александр Галанов</a></li><li class="list-inline-item"><a href="/en/post/155/#comment-2469" title="Link to comment">#</a></li></ul><ul class="list-inline mb-0"><li class="list-inline-item me-2"><small class="text-secondary">June 21, 2022, 4:26 p.m.</small></li><li id='post_lastmod_2469' class="list-inline-item me-2" title="June 21, 2022, 4:43 p.m."><small class="text-secondary">(edited)</small></li></ul></div></div><div class="card-body"><div class="mb-3"><p> Не думаю, QMediaPlayer в один поток проигрывает. Если вам нужно одновременное воспроизведение нескольких аудиоисточников, то вам нужна <strong> Bass audio library </strong> , насколько знаю, её обычно используют для подобных вещей. </p></div></div><div class="card-footer"><div class="btn btn-sm btn-light" onclick="Global.nonlogin()" title="Only registered users can add to favorites"><i class="bi bi-bookmark me-1"></i>0</div><div class="btn btn-sm btn-light" onclick="Global.nonlogin()" title="Only registered users can rate"><i class="bi bi-hand-thumbs-up-fill me-1"></i>0</div><div class="btn btn-sm btn-light" onclick="Global.nonlogin()" title="Only registered users can rate"><i class="bi bi-hand-thumbs-down-fill me-1"></i>0</div></div><script type="application/ld+json">{"@context": "http://schema.org", "@type": "Comment", "author": "Evgenii Legotckoi", "url": "/en/post/155/#comment-2469", "name": "Qt/C++ - Lesson 051. QMediaPlayer – simple audio player", "headline": "Qt/C++ - Lesson 051. QMediaPlayer – simple audio player", "description": "\n \n Не думаю, QMediaPlayer в один поток проигрывает. Если вам нужно одновременное воспроизведение нескольких аудиоисточников, то вам нужна\n \n Bass audio library\n \n , насколько знаю, её обычно используют для подобных вещей.\n \n", "datePublished": "2022-06-21T10:26:23.541669+00:00", "interactionStatistic": [{"@type": "InteractionCounter", "interactionType": "BookmarkAction", "userInteractionCount": 0}, {"@type": "InteractionCounter", "interactionType": "LikeAction", "userInteractionCount": 0}, {"@type": "InteractionCounter", "interactionType": "DislikeAction", "userInteractionCount": 0}]}</script></div><a class="anchor" name="comment-2532"></a><div id="2532" class="card mb-3"><div class="card-header d-flex py-2"><a class="bg-secondary bg-opacity-10 rounded avatar-initials avatar-48" href=/en/users/12441/>Р5</a><div class="ms-3"><ul class="list-inline mb-0"><li class="list-inline-item"><a rel="author" href="/en/users/12441/">Рассвет 55.2</a></li><li class="list-inline-item"><a href="/en/post/155/#comment-2532" title="Link to comment">#</a></li></ul><ul class="list-inline mb-0"><li class="list-inline-item me-2"><small class="text-secondary">Sept. 13, 2022, 6:54 p.m.</small></li></ul></div></div><div class="card-body"><div class="mb-3"><p> Здравствуйте. Подскажите пожалуйста, как решить проблему <br/> multimedia модуль не распознается </p></div></div><div class="card-footer"><div class="btn btn-sm btn-light" onclick="Global.nonlogin()" title="Only registered users can add to favorites"><i class="bi bi-bookmark me-1"></i>0</div><div class="btn btn-sm btn-light" onclick="Global.nonlogin()" title="Only registered users can rate"><i class="bi bi-hand-thumbs-up-fill me-1"></i>0</div><div class="btn btn-sm btn-light" onclick="Global.nonlogin()" title="Only registered users can rate"><i class="bi bi-hand-thumbs-down-fill me-1"></i>0</div></div><script type="application/ld+json">{"@context": "http://schema.org", "@type": "Comment", "author": "Рассвет 55.2", "url": "/en/post/155/#comment-2532", "name": "Qt/C++ - Lesson 051. QMediaPlayer – simple audio player", "headline": "Qt/C++ - Lesson 051. QMediaPlayer – simple audio player", "description": "\n \n Здравствуйте. Подскажите пожалуйста, как решить проблему\n \n multimedia модуль не распознается\n \n", "datePublished": "2022-09-13T12:54:38.160951+00:00", "interactionStatistic": [{"@type": "InteractionCounter", "interactionType": "BookmarkAction", "userInteractionCount": 0}, {"@type": "InteractionCounter", "interactionType": "LikeAction", "userInteractionCount": 0}, {"@type": "InteractionCounter", "interactionType": "DislikeAction", "userInteractionCount": 0}]}</script></div><a class="anchor" name="comment-2581"></a><div id="2581" class="card mb-3"><div class="card-header d-flex py-2"><a href=/en/users/9475/><img loading="lazy" alt="juvf" class="bg-secondary bg-opacity-10 rounded avatar-initials avatar-48" src="/media/cache/16/56/1656a46a07c237035b6add61b3fa5c27.webp"></a><div class="ms-3"><ul class="list-inline mb-0"><li class="list-inline-item"><a rel="author" href="/en/users/9475/">juvf</a></li><li class="list-inline-item"><a href="/en/post/155/#comment-2581" title="Link to comment">#</a></li></ul><ul class="list-inline mb-0"><li class="list-inline-item me-2"><small class="text-secondary">Nov. 25, 2022, 12:14 p.m.</small></li></ul></div></div><div class="card-body"><div class="mb-3"><p> Добрый день. <br/> Подскажите, как можно перехватить в Qt или Qml уровень воспроизводимого звука? Т.е. требуется сделать виртуальный винтажный индикатор (стрелочный или светодиодный), который бы показывал уровень звука. И желательно без усилиения. Т.е. в файле mp3 допустим записана синусоида 1000 кГц, амплитудой 0.5 (минимальный уровень 0.0, макс 1.0), то на индикаторе должно быть 0.5, в независимости от того, как выкручена громкость на регуляторе звука плеера, винды/линукса, калонок или внешнего УМ. Как такое возможно реализовать (желательно кроссплатформено с помощью qt/qml)? Куда копать? Как-то перехватывать декодирование mp3 и допустим раз в 100 мс обновлять виджет "Индикатор"? </p></div></div><div class="card-footer"><div class="btn btn-sm btn-light" onclick="Global.nonlogin()" title="Only registered users can add to favorites"><i class="bi bi-bookmark me-1"></i>0</div><div class="btn btn-sm btn-light" onclick="Global.nonlogin()" title="Only registered users can rate"><i class="bi bi-hand-thumbs-up-fill me-1"></i>0</div><div class="btn btn-sm btn-light" onclick="Global.nonlogin()" title="Only registered users can rate"><i class="bi bi-hand-thumbs-down-fill me-1"></i>0</div></div><script type="application/ld+json">{"@context": "http://schema.org", "@type": "Comment", "author": "juvf", "url": "/en/post/155/#comment-2581", "name": "Qt/C++ - Lesson 051. QMediaPlayer – simple audio player", "headline": "Qt/C++ - Lesson 051. QMediaPlayer – simple audio player", "description": "\n \n Добрый день.\n \n Подскажите, как можно перехватить в Qt или Qml уровень воспроизводимого звука? Т.е. требуется сделать виртуальный винтажный индикатор (стрелочный или светодиодный), который бы показывал уровень звука. И желательно без усилиения. Т.е. в файле mp3 допустим записана синусоида 1000 кГц, амплитудой 0.5 (минимальный уровень 0.0, макс 1.0), то на индикаторе должно быть 0.5, в независимости от того, как выкручена громкость на регуляторе звука плеера, винды/линукса, калонок или внешнего УМ. Как такое возможно реализовать (желательно кроссплатформено с помощью qt/qml)? Куда копать? Как-то перехватывать декодирование mp3 и допустим раз в 100 мс обновлять виджет \"Индикатор\"?\n \n", "datePublished": "2022-11-25T06:14:06.530456+00:00", "interactionStatistic": [{"@type": "InteractionCounter", "interactionType": "BookmarkAction", "userInteractionCount": 0}, {"@type": "InteractionCounter", "interactionType": "LikeAction", "userInteractionCount": 0}, {"@type": "InteractionCounter", "interactionType": "DislikeAction", "userInteractionCount": 0}]}</script></div><a class="anchor" name="comment-2603"></a><div id="2603" class="card mb-3"><div class="card-header d-flex py-2"><a href=/en/users/2/><img loading="lazy" alt="Evgenii Legotckoi" class="bg-secondary bg-opacity-10 rounded avatar-initials avatar-48" src="/media/cache/7a/08/7a0837c6eb199ca9af1a03ea5ccbfcbf.webp"></a><div class="ms-3"><ul class="list-inline mb-0"><li class="list-inline-item"><a rel="author" href="/en/users/2/">Evgenii Legotckoi</a> → <a class="text-muted" href="#comment-2581">juvf</a></li><li class="list-inline-item"><a href="/en/post/155/#comment-2603" title="Link to comment">#</a></li></ul><ul class="list-inline mb-0"><li class="list-inline-item me-2"><small class="text-secondary">Dec. 12, 2022, 3:05 p.m.</small></li></ul></div></div><div class="card-body"><div class="mb-3"><p> Qt не располагает средствами для визуализации формы звукового сигнала в файле. То есть из модуля Qt multimedia вы не сможете забрать график звука а потом его обработать так, чтобы вы получали нужный вам результат. Это нужно реализовывать с помощью сторонних библиотек, а потом отрисовывать уже в Qt/Qml. Возможно Bass Dll может в этом помочь. </p></div></div><div class="card-footer"><div class="btn btn-sm btn-light" onclick="Global.nonlogin()" title="Only registered users can add to favorites"><i class="bi bi-bookmark me-1"></i>0</div><div class="btn btn-sm btn-light" onclick="Global.nonlogin()" title="Only registered users can rate"><i class="bi bi-hand-thumbs-up-fill me-1"></i>0</div><div class="btn btn-sm btn-light" onclick="Global.nonlogin()" title="Only registered users can rate"><i class="bi bi-hand-thumbs-down-fill me-1"></i>0</div></div><script type="application/ld+json">{"@context": "http://schema.org", "@type": "Comment", "author": "Evgenii Legotckoi", "url": "/en/post/155/#comment-2603", "name": "Qt/C++ - Lesson 051. QMediaPlayer – simple audio player", "headline": "Qt/C++ - Lesson 051. QMediaPlayer – simple audio player", "description": "\n \n Qt не располагает средствами для визуализации формы звукового сигнала в файле. То есть из модуля Qt multimedia вы не сможете забрать график звука а потом его обработать так, чтобы вы получали нужный вам результат. Это нужно реализовывать с помощью сторонних библиотек, а потом отрисовывать уже в Qt/Qml. Возможно Bass Dll может в этом помочь.\n \n", "datePublished": "2022-12-12T09:05:16.330106+00:00", "interactionStatistic": [{"@type": "InteractionCounter", "interactionType": "BookmarkAction", "userInteractionCount": 0}, {"@type": "InteractionCounter", "interactionType": "LikeAction", "userInteractionCount": 0}, {"@type": "InteractionCounter", "interactionType": "DislikeAction", "userInteractionCount": 0}]}</script></div><a class="anchor" name="comment-2604"></a><div id="2604" class="card mb-3"><div class="card-header d-flex py-2"><a href=/en/users/9475/><img loading="lazy" alt="juvf" class="bg-secondary bg-opacity-10 rounded avatar-initials avatar-48" src="/media/cache/16/56/1656a46a07c237035b6add61b3fa5c27.webp"></a><div class="ms-3"><ul class="list-inline mb-0"><li class="list-inline-item"><a rel="author" href="/en/users/9475/">juvf</a></li><li class="list-inline-item"><a href="/en/post/155/#comment-2604" title="Link to comment">#</a></li></ul><ul class="list-inline mb-0"><li class="list-inline-item me-2"><small class="text-secondary">Dec. 12, 2022, 3:06 p.m.</small></li></ul></div></div><div class="card-body"><div class="mb-3"><p> Спасибо. </p></div></div><div class="card-footer"><div class="btn btn-sm btn-light" onclick="Global.nonlogin()" title="Only registered users can add to favorites"><i class="bi bi-bookmark me-1"></i>0</div><div class="btn btn-sm btn-light" onclick="Global.nonlogin()" title="Only registered users can rate"><i class="bi bi-hand-thumbs-up-fill me-1"></i>1</div><div class="btn btn-sm btn-light" onclick="Global.nonlogin()" title="Only registered users can rate"><i class="bi bi-hand-thumbs-down-fill me-1"></i>0</div></div><script type="application/ld+json">{"@context": "http://schema.org", "@type": "Comment", "author": "juvf", "url": "/en/post/155/#comment-2604", "name": "Qt/C++ - Lesson 051. QMediaPlayer – simple audio player", "headline": "Qt/C++ - Lesson 051. QMediaPlayer – simple audio player", "description": "\n \n Спасибо.\n \n", "datePublished": "2022-12-12T09:06:14.021691+00:00", "interactionStatistic": [{"@type": "InteractionCounter", "interactionType": "BookmarkAction", "userInteractionCount": 0}, {"@type": "InteractionCounter", "interactionType": "LikeAction", "userInteractionCount": 1}, {"@type": "InteractionCounter", "interactionType": "DislikeAction", "userInteractionCount": 0}]}</script></div><a class="anchor" name="comment-2632"></a><div id="2632" class="card mb-3"><div class="card-header d-flex py-2"><a href=/en/users/9475/><img loading="lazy" alt="juvf" class="bg-secondary bg-opacity-10 rounded avatar-initials avatar-48" src="/media/cache/16/56/1656a46a07c237035b6add61b3fa5c27.webp"></a><div class="ms-3"><ul class="list-inline mb-0"><li class="list-inline-item"><a rel="author" href="/en/users/9475/">juvf</a></li><li class="list-inline-item"><a href="/en/post/155/#comment-2632" title="Link to comment">#</a></li></ul><ul class="list-inline mb-0"><li class="list-inline-item me-2"><small class="text-secondary">Jan. 17, 2023, 9:18 a.m.</small></li></ul></div></div><div class="card-body"><div class="mb-3"><p> PS. Почти дописал плеер на QML. Уперся в ограничения QML. Переписываю плеер на с++/qt, а графика останится в qml. Нашел то, что мне надо, а именно индикатор звука. Qt может перехватывать аудиопоток и анализировать уровень звука. Кому интересно - подробно в примерах в QtCreator "Media Player Example". </p></div></div><div class="card-footer"><div class="btn btn-sm btn-light" onclick="Global.nonlogin()" title="Only registered users can add to favorites"><i class="bi bi-bookmark me-1"></i>0</div><div class="btn btn-sm btn-light" onclick="Global.nonlogin()" title="Only registered users can rate"><i class="bi bi-hand-thumbs-up-fill me-1"></i>1</div><div class="btn btn-sm btn-light" onclick="Global.nonlogin()" title="Only registered users can rate"><i class="bi bi-hand-thumbs-down-fill me-1"></i>0</div></div><script type="application/ld+json">{"@context": "http://schema.org", "@type": "Comment", "author": "juvf", "url": "/en/post/155/#comment-2632", "name": "Qt/C++ - Lesson 051. QMediaPlayer – simple audio player", "headline": "Qt/C++ - Lesson 051. QMediaPlayer – simple audio player", "description": "\n \n PS. Почти дописал плеер на QML. Уперся в ограничения QML. Переписываю плеер на с++/qt, а графика останится в qml. Нашел то, что мне надо, а именно индикатор звука. Qt может перехватывать аудиопоток и анализировать уровень звука. Кому интересно - подробно в примерах в QtCreator \"Media Player Example\".\n \n", "datePublished": "2023-01-17T03:18:04.911456+00:00", "interactionStatistic": [{"@type": "InteractionCounter", "interactionType": "BookmarkAction", "userInteractionCount": 0}, {"@type": "InteractionCounter", "interactionType": "LikeAction", "userInteractionCount": 1}, {"@type": "InteractionCounter", "interactionType": "DislikeAction", "userInteractionCount": 0}]}</script></div><a class="anchor" name="comment-2659"></a><div id="2659" class="card mb-3"><div class="card-header d-flex py-2"><a href=/en/users/2/><img loading="lazy" alt="Evgenii Legotckoi" class="bg-secondary bg-opacity-10 rounded avatar-initials avatar-48" src="/media/cache/7a/08/7a0837c6eb199ca9af1a03ea5ccbfcbf.webp"></a><div class="ms-3"><ul class="list-inline mb-0"><li class="list-inline-item"><a rel="author" href="/en/users/2/">Evgenii Legotckoi</a> → <a class="text-muted" href="#comment-2632">juvf</a></li><li class="list-inline-item"><a href="/en/post/155/#comment-2659" title="Link to comment">#</a></li></ul><ul class="list-inline mb-0"><li class="list-inline-item me-2"><small class="text-secondary">Feb. 7, 2023, 4:32 p.m.</small></li></ul></div></div><div class="card-body"><div class="mb-3"><p> А он анализирует уровень звука по частотам, как эквайлайзер? Я просто подумал, что вам как в аналоговом эквалайзере нужно... </p></div></div><div class="card-footer"><div class="btn btn-sm btn-light" onclick="Global.nonlogin()" title="Only registered users can add to favorites"><i class="bi bi-bookmark me-1"></i>0</div><div class="btn btn-sm btn-light" onclick="Global.nonlogin()" title="Only registered users can rate"><i class="bi bi-hand-thumbs-up-fill me-1"></i>0</div><div class="btn btn-sm btn-light" onclick="Global.nonlogin()" title="Only registered users can rate"><i class="bi bi-hand-thumbs-down-fill me-1"></i>0</div></div><script type="application/ld+json">{"@context": "http://schema.org", "@type": "Comment", "author": "Evgenii Legotckoi", "url": "/en/post/155/#comment-2659", "name": "Qt/C++ - Lesson 051. QMediaPlayer – simple audio player", "headline": "Qt/C++ - Lesson 051. QMediaPlayer – simple audio player", "description": "\n \n А он анализирует уровень звука по частотам, как эквайлайзер? Я просто подумал, что вам как в аналоговом эквалайзере нужно...\n \n", "datePublished": "2023-02-07T10:32:13.965098+00:00", "interactionStatistic": [{"@type": "InteractionCounter", "interactionType": "BookmarkAction", "userInteractionCount": 0}, {"@type": "InteractionCounter", "interactionType": "LikeAction", "userInteractionCount": 0}, {"@type": "InteractionCounter", "interactionType": "DislikeAction", "userInteractionCount": 0}]}</script></div><a class="anchor" name="comment-2845"></a><div id="2845" class="card mb-3"><div class="card-header d-flex py-2"><a class="bg-secondary bg-opacity-10 rounded avatar-initials avatar-48" href=/en/users/18515/>AK</a><div class="ms-3"><ul class="list-inline mb-0"><li class="list-inline-item"><a rel="author" href="/en/users/18515/">Arseniy Khomchenko</a></li><li class="list-inline-item"><a href="/en/post/155/#comment-2845" title="Link to comment">#</a></li></ul><ul class="list-inline mb-0"><li class="list-inline-item me-2"><small class="text-secondary">April 1, 2025, 11:41 a.m.</small></li><li id='post_lastmod_2845' class="list-inline-item me-2" title="April 1, 2025, 1:05 p.m."><small class="text-secondary">(edited)</small></li></ul></div></div><div class="card-body"><div class="mb-3"><p> Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поскольку в 6 версии вырезали <em> QMediaPlaylist </em> . </p><p> Нашел класс <em> QAudioOutput </em> , но абсолютно не понимаю, как связать его с <em> QMediaPlayer </em> , поскольку в нем есть только метод <em> SetVideoOutput </em> . Может кто-по подсказать решение? Гуглеж, поиск по форуму Qt и документации ничего не дали, даже ChatGPT выдает решение с несуществующими классами и методами </p></div></div><div class="card-footer"><div class="btn btn-sm btn-light" onclick="Global.nonlogin()" title="Only registered users can add to favorites"><i class="bi bi-bookmark me-1"></i>0</div><div class="btn btn-sm btn-light" onclick="Global.nonlogin()" title="Only registered users can rate"><i class="bi bi-hand-thumbs-up-fill me-1"></i>0</div><div class="btn btn-sm btn-light" onclick="Global.nonlogin()" title="Only registered users can rate"><i class="bi bi-hand-thumbs-down-fill me-1"></i>0</div></div><script type="application/ld+json">{"@context": "http://schema.org", "@type": "Comment", "author": "Arseniy Khomchenko", "url": "/en/post/155/#comment-2845", "name": "Qt/C++ - Lesson 051. QMediaPlayer – simple audio player", "headline": "Qt/C++ - Lesson 051. QMediaPlayer – simple audio player", "description": "\n \n Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поскольку в 6 версии вырезали\n \n QMediaPlaylist\n \n .\n \n \n Нашел класс\n \n QAudioOutput\n \n , но абсолютно не понимаю, как связать его с\n \n QMediaPlayer\n \n , поскольку в нем есть только метод\n \n SetVideoOutput\n \n . Может кто-по подсказать решение? Гуглеж, поиск по форуму Qt и документации ничего не дали, даже ChatGPT выдает решение с несуществующими классами и методами\n \n\n", "datePublished": "2025-04-01T06:41:01.406094+00:00", "interactionStatistic": [{"@type": "InteractionCounter", "interactionType": "BookmarkAction", "userInteractionCount": 0}, {"@type": "InteractionCounter", "interactionType": "LikeAction", "userInteractionCount": 0}, {"@type": "InteractionCounter", "interactionType": "DislikeAction", "userInteractionCount": 0}]}</script></div></div><div class="card card-warning m-3 "><div class="card-header bg-warning"><h3 class="card-title mb-0">Comments</h3></div><div class="card-body"> Only authorized users can post comments.<br/>Please, <a href="/en/accounts/login/">Log in</a> or <a href="/en/accounts/register/">Sign up</a></div></div></div></div><div class="col-12 col-lg-auto"><div class="sidebar sidebar-lg sticky-lg-top mb-3"><div class="list-group mb-3"><div class="list-group-item list-group-item-primary"><strong>Actions</strong></div><a None href="/en/knowledge/article/add/" class="list-group-item list-group-item-action"><span>Write article</span></a><a None href="/en/forum/create_topic/" class="list-group-item list-group-item-action"><span>Ask a question</span></a><a None href="/en/forum/create_topic/" class="list-group-item list-group-item-action"><span>Take the test</span></a><a None href="/en/sharecode/create/" class="list-group-item list-group-item-action"><span>Share code</span></a></div><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8160668332851230" crossorigin="anonymous"></script><!-- EVILEG SIDEBAR TOP --><ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-8160668332851230" data-ad-slot="8743063287" data-ad-format="auto" data-full-width-responsive="true"></ins><script> (adsbygoogle = window.adsbygoogle || []).push({}); </script></div></div></div><div class="row"><div class="col-12 col-lg overflow-hidden"><ul class="list-group mb-3"><li class="list-group-item list-group-item-primary"><strong>Last passed tests</strong></li><li class="list-group-item"><div class="d-flex py-2"><a class="bg-secondary bg-opacity-10 rounded avatar-initials avatar-48" href=/en/users/18523/>КБ</a><div class="ms-3"><div><a href="/en/users/18523/" class="text-decoration-none">Кирилл Бородин</a></div><small class="text-secondary">April 7, 2025, 11:09 a.m.</small></div></div><div class="mb-3"><div><a href="/en/tests/t/8/">C++ - Test 006. Enumerations</a></div><div><strong>Result:</strong> 70 points</div><div><span class="text-success">Test passed</span></div></div></li><li class="list-group-item"><div class="d-flex py-2"><a class="bg-secondary bg-opacity-10 rounded avatar-initials avatar-48" href=/en/users/18523/>КБ</a><div class="ms-3"><div><a href="/en/users/18523/" class="text-decoration-none">Кирилл Бородин</a></div><small class="text-secondary">April 6, 2025, 3:29 p.m.</small></div></div><div class="mb-3"><div><a href="/en/tests/t/7/">C++ - Test 005. Structures and Classes</a></div><div><strong>Result:</strong> 66 points</div><div><span class="text-danger">Test is not passed</span></div></div></li><li class="list-group-item"><div class="d-flex py-2"><a class="bg-secondary bg-opacity-10 rounded avatar-initials avatar-48" href=/en/users/18523/>КБ</a><div class="ms-3"><div><a href="/en/users/18523/" class="text-decoration-none">Кирилл Бородин</a></div><small class="text-secondary">April 6, 2025, 3:20 p.m.</small></div></div><div class="mb-3"><div><a href="/en/tests/t/6/">C ++ - Test 004. Pointers, Arrays and Loops</a></div><div><strong>Result:</strong> 80 points</div><div><span class="text-success">Test passed</span></div></div></li></ul><ul class="list-group mb-3"><li class="list-group-item list-group-item-primary"><strong>Last comments</strong></li><li class="list-group-item"><div class="py-2"><div class="d-flex py-2"><a class="bg-secondary bg-opacity-10 rounded avatar-initials avatar-48" href=/en/users/18515/>AK</a><div class="ms-3"><div><a href="/en/users/18515/" class="text-decoration-none">Arseniy Khomchenko</a></div><small class="text-secondary">April 1, 2025, 11:41 a.m.</small></div></div><div><a href="/en/post/155/#comment-2845">Qt/C++ - Lesson 051. QMediaPlayer – simple audio player</a></div><div class="text-break"> Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…</div></div></li><li class="list-group-item"><div class="py-2"><div class="d-flex py-2"><a href=/en/users/2/><img loading="lazy" alt="Evgenii Legotckoi" class="bg-secondary bg-opacity-10 rounded avatar-initials avatar-48" src="/media/cache/7a/08/7a0837c6eb199ca9af1a03ea5ccbfcbf.webp"></a><div class="ms-3"><div><a href="/en/users/2/" class="text-decoration-none">Evgenii Legotckoi</a></div><small class="text-secondary">March 9, 2025, 9:02 p.m.</small></div></div><div><a href="/en/post/193/#comment-2844">QML - Lesson 020. Introduction to Android Manifest in Qt Creator</a></div><div class="text-break"> К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…</div></div></li><li class="list-group-item"><div class="py-2"><div class="d-flex py-2"><a class="bg-secondary bg-opacity-10 rounded avatar-initials avatar-48" href=/en/users/15549/>VP</a><div class="ms-3"><div><a href="/en/users/15549/" class="text-decoration-none">Viktor Pathfinder</a></div><small class="text-secondary">March 9, 2025, 4:14 p.m.</small></div></div><div><a href="/en/post/193/#comment-2843">QML - Lesson 020. Introduction to Android Manifest in Qt Creator</a></div><div class="text-break"> Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…</div></div></li><li class="list-group-item"><div class="py-2"><div class="d-flex py-2"><a class="bg-secondary bg-opacity-10 rounded avatar-initials avatar-48" href=/en/users/1217/>ИМ</a><div class="ms-3"><div><a href="/en/users/1217/" class="text-decoration-none">Игорь Максимов</a></div><small class="text-secondary">Nov. 22, 2024, 9:51 p.m.</small></div></div><div><a href="/en/post/203/#comment-2842">Django - Tutorial 017. Customize the login page to Django</a></div><div class="text-break"> Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…</div></div></li><li class="list-group-item"><div class="py-2"><div class="d-flex py-2"><a href=/en/users/2/><img loading="lazy" alt="Evgenii Legotckoi" class="bg-secondary bg-opacity-10 rounded avatar-initials avatar-48" src="/media/cache/7a/08/7a0837c6eb199ca9af1a03ea5ccbfcbf.webp"></a><div class="ms-3"><div><a href="/en/users/2/" class="text-decoration-none">Evgenii Legotckoi</a></div><small class="text-secondary">Oct. 31, 2024, 11:37 p.m.</small></div></div><div><a href="/en/post/729/#comment-2751">Django - Lesson 064. How to write a Python Markdown extension</a></div><div class="text-break"> Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup </div></div></li></ul><ul class="list-group mb-3"><li class="list-group-item list-group-item-primary"><strong>Now discuss on the forum</strong></li><li class="list-group-item"><div class="py-2"><div class="d-flex py-2"><a class="bg-secondary bg-opacity-10 rounded avatar-initials avatar-48" href=/en/users/18263/>f</a><div class="ms-3"><div><a href="/en/users/18263/" class="text-decoration-none">firstlunoxod</a></div><small class="text-secondary">Feb. 15, 2025, 1:46 p.m.</small></div></div><div><a href="/en/forum/topic/218/#post-9885">Рисование на QGraphicsScene при зажатой кнопке мыши</a></div><div class="text-break"> Подскажите, пожалуйста! Как данный класс можно дополнить, чтобы созданные объекты можно было перемещать мышкой по сцене? </div></div></li><li class="list-group-item"><div class="py-2"><div class="d-flex py-2"><a href=/en/users/2417/><img loading="lazy" alt="Дмитрий" class="bg-secondary bg-opacity-10 rounded avatar-initials avatar-48" src="/media/cache/7f/2a/7f2a7c6416eb74fb21e8506c0ed78532.webp"></a><div class="ms-3"><div><a href="/en/users/2417/" class="text-decoration-none">Дмитрий</a></div><small class="text-secondary">Feb. 3, 2025, 4:24 p.m.</small></div></div><div><a href="/en/forum/topic/1920/">Создание deb-пакета. Как создать ярлык на рабочем столе после установки собственного deb-пакета?</a></div><div class="text-break"> Всем привет. Сделал свой deb-пакет с программой. Всё устанавливается и работает. Ставлю по пути /usr/bin/my_application. Как для пользователя при установке пакета сразу создать ярлык на раб…</div></div></li><li class="list-group-item"><div class="py-2"><div class="d-flex py-2"><a class="bg-secondary bg-opacity-10 rounded avatar-initials avatar-48" href=/en/users/18202/>NW</a><div class="ms-3"><div><a href="/en/users/18202/" class="text-decoration-none">Nayo Wai</a></div><small class="text-secondary">Jan. 30, 2025, 7:22 p.m.</small></div></div><div><a href="/en/forum/topic/1919/">не запускается компьютер!!!</a></div><div class="text-break"> Не запускается компьютер (точнее работает блок , но сам монитор вообще жесть)В общем я ничего с интернета не скачивала в последнее время. На компе никаких левых пр…</div></div></li><li class="list-group-item"><div class="py-2"><div class="d-flex py-2"><a class="bg-secondary bg-opacity-10 rounded avatar-initials avatar-48" href=/en/users/12748/>n</a><div class="ms-3"><div><a href="/en/users/12748/" class="text-decoration-none">nkly</a></div><small class="text-secondary">Jan. 3, 2025, 12:52 p.m.</small></div></div><div><a href="/en/forum/topic/1909/#post-9884">Нужно запретить перемещение только некоторых итемов, остальные перемещать можно.</a></div><div class="text-break"> Вопрос решен. Узнать QModelIndex элемента на который мы перетаскиваем другой элемент, можно с помощью функции indexAt(event->position().toPoint()) представления QTreeViev вызываемой в переопр…</div></div></li><li class="list-group-item"><div class="py-2"><div class="d-flex py-2"><a class="bg-secondary bg-opacity-10 rounded avatar-initials avatar-48" href=/en/users/15590/>M</a><div class="ms-3"><div><a href="/en/users/15590/" class="text-decoration-none">Marsel</a></div><small class="text-secondary">Aug. 17, 2023, 12:26 a.m.</small></div></div><div><a href="/en/forum/topic/1850/#post-9711">OAuth2.0 через VK, получение email</a></div><div class="text-break"> Спасибо большое за помощь и простите за то что отнял время своей невнимательностью. </div></div></li></ul></div><div class="col-12 col-lg-auto"><div class="sidebar sidebar-lg sticky-lg-top mb-3"><div class="sidebar sidebar-lg sticky-top"><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8160668332851230" crossorigin="anonymous"></script><!-- EVILEG SIDEBAR BOTTOM --><ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-8160668332851230" data-ad-slot="3079673067" data-ad-format="auto" data-full-width-responsive="true"></ins><script> (adsbygoogle = window.adsbygoogle || []).push({}); </script></div></div></div></div></main><div class="container-xxl"><footer class="py-5"><div class="row"><div class="col-6 col-md-3 mb-3"><h5>About us</h5><ul class="nav flex-column"><li class="nav-item mb-2"><a class="nav-link p-0 text-body-secondary" href="/en/pages/">About us</a></li><li class="nav-item mb-2"><a class="nav-link p-0 text-body-secondary" href="/en/pages/rules/privacy-policy/">Privacy Policy</a></li><li class="nav-item mb-2"><a class="nav-link p-0 text-body-secondary" href="/en/pages/contacts/">Contacts</a></li><li class="nav-item mb-2"><a class="nav-link p-0 text-body-secondary" href="/en/pages/donate/">Donate</a></li><li class="nav-item mb-2"><a class="nav-link p-0 text-body-secondary" href="/en/pages/for-advertisers/">For advertisers</a></li></ul></div><div class="col-6 col-md-3 mb-3"><h5>Follow us in social networks</h5><ul class="nav flex-column"><li class="nav-item mb-2"><a class="nav-link p-0 text-body-secondary" href="https://vk.com/evileg" target="_blank" rel="noindex nofollow">VKontakte</a></li><li class="nav-item mb-2"><a class="nav-link p-0 text-body-secondary" href="https://t.me/evileg_ru" target="_blank" rel="noindex nofollow">Telegram</a></li><li class="nav-item mb-2"><a class="nav-link p-0 text-body-secondary" href="https://www.reddit.com/r/Evileg/" target="_blank" rel="noindex nofollow">Reddit</a></li></ul></div><div class="col-6 mb-3"><ul class="nav flex-column"><li class="nav-item mb-2">We recommend VSD hosting <a class="nav-link p-0" href="http://timeweb.com/ru/?i=27415&utm_source=evileg&utm_medium=footer&utm_campaign=timeweb" target="_blank" rel="noindex nofollow">Timeweb</a></li></ul></div></div><div class="d-flex flex-column flex-sm-row justify-content-between py-4 my-4 border-top"><p>© 2015-2025, Evgenii Legotckoi</p><ul class="list-unstyled d-flex"><li class="ms-3"><a class="link-body-emphasis" href="https://t.me/evileg_ru" target="_blank" rel="noindex nofollow"><i class="bi bi-telegram" style="font-size: 2rem;"></i></a></li><li class="ms-3"><a class="link-body-emphasis" href="https://www.reddit.com/r/Evileg/" target="_blank" rel="noindex nofollow"><i class="bi bi-reddit" style="font-size: 2rem;"></i></a></li></ul></div></footer></div><div id="menuModal" class="modal" tabindex="-1"><div class="modal-dialog modal-dialog-scrollable"><div class="modal-content"><div class="modal-header"><h5 class="modal-title">Actions</h5><button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button></div><div class="modal-body m-0 p-0"><div class="list-group list-group-flush"><a None href="/en/knowledge/article/add/" class="list-group-item list-group-item-action"><span>Write article</span></a><a None href="/en/forum/create_topic/" class="list-group-item list-group-item-action"><span>Ask a question</span></a><a None href="/en/forum/create_topic/" class="list-group-item list-group-item-action"><span>Take the test</span></a><a None href="/en/sharecode/create/" class="list-group-item list-group-item-action"><span>Share code</span></a></div></div></div></div></div><script async src="/static/js/run_prettify.js"></script><!-- Yandex.Metrika counter --><script type="text/javascript" > (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)}; m[i].l=1*new Date(); for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }} k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)}) (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym"); ym(39565770, "init", { clickmap:true, trackLinks:true, accurateTrackBounce:true }); </script><noscript><div><img src="https://mc.yandex.ru/watch/39565770" style="position:absolute; left:-9999px;" alt="" /></div></noscript><!-- /Yandex.Metrika counter --><!-- Yandex.RTB R-A-218837-50 --><script> window.addEventListener("load", () => { const render = (imageId) => { window.yaContextCb.push(() => { Ya.Context.AdvManager.render({ "renderTo": imageId, "blockId": "R-A-218837-50", "type": "inImage" }) }) } const renderInImage = (images) => { if (!images.length) { return } const image = images.shift() image.id = `yandex_rtb_R-A-218837-50-${Math.random().toString(16).slice(2)}` if (image.tagName === "IMG" && !image.complete) { image.addEventListener("load", () => { render(image.id) }, { once: true }) } else { render(image.id) } renderInImage(images) } renderInImage(Array.from(document.querySelectorAll("img"))) }, { once: true }) </script></body></html>