Recherche avancée

Médias (0)

Mot : - Tags -/performance

Aucun média correspondant à vos critères n’est disponible sur le site.

Autres articles (37)

  • La file d’attente de SPIPmotion

    28 novembre 2010, par

    Une file d’attente stockée dans la base de donnée
    Lors de son installation, SPIPmotion crée une nouvelle table dans la base de donnée intitulée spip_spipmotion_attentes.
    Cette nouvelle table est constituée des champs suivants : id_spipmotion_attente, l’identifiant numérique unique de la tâche à traiter ; id_document, l’identifiant numérique du document original à encoder ; id_objet l’identifiant unique de l’objet auquel le document encodé devra être attaché automatiquement ; objet, le type d’objet auquel (...)

  • Publier sur MédiaSpip

    13 juin 2013

    Puis-je poster des contenus à partir d’une tablette Ipad ?
    Oui, si votre Médiaspip installé est à la version 0.2 ou supérieure. Contacter au besoin l’administrateur de votre MédiaSpip pour le savoir

  • Demande de création d’un canal

    12 mars 2010, par

    En fonction de la configuration de la plateforme, l’utilisateur peu avoir à sa disposition deux méthodes différentes de demande de création de canal. La première est au moment de son inscription, la seconde, après son inscription en remplissant un formulaire de demande.
    Les deux manières demandent les mêmes choses fonctionnent à peu près de la même manière, le futur utilisateur doit remplir une série de champ de formulaire permettant tout d’abord aux administrateurs d’avoir des informations quant à (...)

Sur d’autres sites (6039)

  • Decoding an MKA audio file into raw data (MKA Audio to raw audio data)

    9 octobre 2020, par bbdd

    My task is to open an existing audio file with the mka extension (Matroska container) and extract the raw audio data. This example shows only an example of extracting raw data from an mp2 file. I do not know how to do this with the mka container. I would like to have something like this :

    


    UPD

    


    I found an option to save audio data in the format in which it was recorded in the audio file. An example is shown below.

    


    PS. This is only a test version and most likely there are memory leaks and other problems.

    


    &#xA;#include <qfile>&#xA;#include <qdebug>&#xA;#include "audiodecoder.h"&#xA;&#xA;int main(int argc, char* argv[])&#xA;{&#xA;    AudioDecoder decoder("/home/test/test.mka");&#xA;    bool started = decoder.start();&#xA;    if (!started) {&#xA;        return EXIT_FAILURE;&#xA;    }&#xA;&#xA;    QFile file("/home/test/rawData.bin");&#xA;    file.open(QIODevice::WriteOnly);&#xA;&#xA;    while (true) {&#xA;        auto data = decoder.getData(255);&#xA;        if (data.isEmpty()) {&#xA;            break;&#xA;        }&#xA;        file.write(data.data(), data.size());&#xA;    }&#xA;    file.close();&#xA;    return EXIT_SUCCESS;&#xA;}&#xA;&#xA;</qdebug></qfile>

    &#xA;

    audiodecoder.h

    &#xA;

    class AudioDecoder {&#xA;public:&#xA;    AudioDecoder(const QString&amp; fileName);&#xA;    AudioDecoder&amp; operator=(const AudioDecoder&amp; rhs) = delete;&#xA;    AudioDecoder&amp; operator=(AudioDecoder&amp;&amp; rhs) = delete;&#xA;    AudioDecoder(const AudioDecoder&amp; rhs) = delete;&#xA;    AudioDecoder(AudioDecoder&amp;&amp; rhs) = delete;&#xA;    virtual ~AudioDecoder(void);&#xA;&#xA;    virtual bool start(void) noexcept;&#xA;    virtual QByteArray getData(const quint16&amp; size) noexcept;&#xA;    virtual bool stop(void) noexcept;&#xA;&#xA;protected:&#xA;    bool m_initialized;&#xA;    QString m_fileName;&#xA;&#xA;    AVFrame* p_frame = nullptr;&#xA;    AVPacket* p_packet = nullptr;&#xA;    AVCodecContext* p_cdcCtx = nullptr;&#xA;    AVFormatContext* p_frmCtx = nullptr;&#xA;};&#xA;

    &#xA;

    audiodecoder.cpp

    &#xA;

    &#xA;static void logging(const char* message)&#xA;{&#xA;    qDebug() &lt;&lt; message;&#xA;}&#xA;&#xA;AudioDecoder::AudioDecoder(const QString&amp; fileName)&#xA;    : m_initialized(false)&#xA;    , m_fileName(fileName)&#xA;    , p_cdcCtx(nullptr)&#xA;    , p_frmCtx(nullptr)&#xA;{&#xA;    av_register_all();&#xA;}&#xA;&#xA;QByteArray AudioDecoder::getData(const quint16&amp; dataSize) noexcept&#xA;{&#xA;    QByteArray data;&#xA;    qint32 response = 0;&#xA;    if (av_read_frame(p_frmCtx, p_packet) >= 0) {&#xA;        //logging(QString("AVPacket->pts %1").arg(p_packet->pts).toStdString().c_str());&#xA;        //response = decode_packet(p_packet, p_cdcCtx, p_frame);&#xA;        response = avcodec_send_packet(p_cdcCtx, p_packet);&#xA;        if (response &lt; 0) {&#xA;            logging("Error while sending a packet to the decoder");&#xA;            return {};&#xA;        }&#xA;        while (response >= 0) {&#xA;            response = avcodec_receive_frame(p_cdcCtx, p_frame);&#xA;            if (response == AVERROR(EAGAIN) || response == AVERROR_EOF) {&#xA;                break;&#xA;            }&#xA;            else if (response &lt; 0) {&#xA;                logging("Error while receiving a frame from the decoder");&#xA;                return {};&#xA;            }&#xA;            if (response >= 0) {&#xA;                logging(QString("Frame %1 (type=%2, size=%3 bytes) pts %4 key_frame %5 [DTS %6], duration[%7]")&#xA;                            .arg(p_cdcCtx->frame_number)&#xA;                            .arg(av_get_picture_type_char(p_frame->pict_type))&#xA;                            .arg(p_frame->pkt_size)&#xA;                            .arg(p_frame->pts)&#xA;                            .arg(p_frame->key_frame)&#xA;                            .arg(p_frame->coded_picture_number)&#xA;                            .arg(p_frame->pkt_duration)&#xA;                            .toStdString()&#xA;                            .c_str());&#xA;&#xA;                for (int i = 0; i &lt; p_frame->linesize[0]; &#x2B;&#x2B;i) {&#xA;                    data.push_back(p_frame->data[0][i]);&#xA;                }&#xA;            }&#xA;        }&#xA;        av_packet_unref(p_packet);&#xA;        return data;&#xA;    }&#xA;    return {};&#xA;}&#xA;&#xA;bool AudioDecoder::start(void) noexcept&#xA;{&#xA;    if (m_initialized) {&#xA;        return true;&#xA;    }&#xA;&#xA;    int error;&#xA;    // Open the input file to read from it.&#xA;    if ((error = avformat_open_input(&amp;p_frmCtx,&#xA;             m_fileName.toStdString().c_str(), nullptr, nullptr))&#xA;        &lt; 0) {&#xA;        qDebug() &lt;&lt; "Could not open input file: " &lt;&lt; m_fileName;&#xA;        p_frmCtx = nullptr;&#xA;        return false;&#xA;    }&#xA;    // Get information on the input file (number of streams etc.).&#xA;    if ((error = avformat_find_stream_info(p_frmCtx, nullptr)) &lt; 0) {&#xA;        avformat_close_input(&amp;p_frmCtx);&#xA;        qDebug() &lt;&lt; __LINE__;&#xA;        return false;&#xA;    }&#xA;    // Make sure that there is only one stream in the input file.&#xA;    if ((p_frmCtx)->nb_streams != 1) {&#xA;        avformat_close_input(&amp;p_frmCtx);&#xA;        qDebug() &lt;&lt; __LINE__;&#xA;        return false;&#xA;    }&#xA;&#xA;    if (p_frmCtx->streams[0]->codecpar->codec_type != AVMEDIA_TYPE_AUDIO) {&#xA;        avformat_close_input(&amp;p_frmCtx);&#xA;        qDebug() &lt;&lt; __LINE__;&#xA;        return false;&#xA;    }&#xA;&#xA;    // Find a decoder for the audio stream.&#xA;    AVCodec* input_codec = nullptr;&#xA;    if (!(input_codec = avcodec_find_decoder((p_frmCtx)->streams[0]->codecpar->codec_id))) {&#xA;        avformat_close_input(&amp;p_frmCtx);&#xA;        qDebug() &lt;&lt; __LINE__;&#xA;        return false;&#xA;    }&#xA;    // Allocate a new decoding context.&#xA;    AVCodecContext* avctx = avcodec_alloc_context3(input_codec);&#xA;    if (!avctx) {&#xA;        avformat_close_input(&amp;p_frmCtx);&#xA;        qDebug() &lt;&lt; __LINE__;&#xA;        return false;&#xA;    }&#xA;    // Initialize the stream parameters with demuxer information.&#xA;    error = avcodec_parameters_to_context(avctx, (p_frmCtx)->streams[0]->codecpar);&#xA;    if (error &lt; 0) {&#xA;        avformat_close_input(&amp;p_frmCtx);&#xA;        avcodec_free_context(&amp;avctx);&#xA;        qDebug() &lt;&lt; __LINE__;&#xA;        return false;&#xA;    }&#xA;    /* Open the decoder for the audio stream to use it later. */&#xA;    if ((error = avcodec_open2(avctx, input_codec, NULL)) &lt; 0) {&#xA;        avcodec_free_context(&amp;avctx);&#xA;        avformat_close_input(&amp;p_frmCtx);&#xA;        qDebug() &lt;&lt; __LINE__;&#xA;        return false;&#xA;    }&#xA;    /* Save the decoder context for easier access later. */&#xA;    p_cdcCtx = avctx;&#xA;    av_dump_format(p_frmCtx, 0, m_fileName.toStdString().c_str(), 0);&#xA;&#xA;    p_frame = av_frame_alloc();&#xA;    if (!p_frame) {&#xA;        logging("failed to allocated memory for AVFrame");&#xA;        return false;&#xA;    }&#xA;    p_packet = av_packet_alloc();&#xA;    if (!p_packet) {&#xA;        logging("failed to allocated memory for AVPacket");&#xA;        return false;&#xA;    }&#xA;    return m_initialized = true;&#xA;}&#xA;&#xA;bool AudioDecoder::stop(void) noexcept&#xA;{&#xA;    if (p_cdcCtx != nullptr) {&#xA;        avcodec_free_context(&amp;p_cdcCtx);&#xA;    }&#xA;    if (p_frmCtx != nullptr) {&#xA;        avformat_close_input(&amp;p_frmCtx);&#xA;    }&#xA;    return true;&#xA;}&#xA;&#xA;AudioDecoder::~AudioDecoder(void)&#xA;{&#xA;    stop();&#xA;}&#xA;

    &#xA;

    But the problem in this example is that I didn't implement the ability to get exactly the requested size of audio data. In my case, it's just ignored.

    &#xA;

  • Revision 33976 : bugs html

    27 décembre 2009, par cedric@… — Log

    bugs html

  • Revision 29928 : On réutilise l’ancien code pour débuter notre branche

    17 juillet 2009, par kent1@… — Log

    On réutilise l’ancien code pour débuter notre branche