Recherche avancée

Médias (91)

Autres articles (25)

  • Selection of projects using MediaSPIP

    2 mai 2011, par

    The examples below are representative elements of MediaSPIP specific uses for specific projects.
    MediaSPIP farm @ Infini
    The non profit organizationInfini develops hospitality activities, internet access point, training, realizing innovative projects in the field of information and communication technologies and Communication, and hosting of websites. It plays a unique and prominent role in the Brest (France) area, at the national level, among the half-dozen such association. Its members (...)

  • Keeping control of your media in your hands

    13 avril 2011, par

    The vocabulary used on this site and around MediaSPIP in general, aims to avoid reference to Web 2.0 and the companies that profit from media-sharing.
    While using MediaSPIP, you are invited to avoid using words like "Brand", "Cloud" and "Market".
    MediaSPIP is designed to facilitate the sharing of creative media online, while allowing authors to retain complete control of their work.
    MediaSPIP aims to be accessible to as many people as possible and development is based on expanding the (...)

  • Sélection de projets utilisant MediaSPIP

    29 avril 2011, par

    Les exemples cités ci-dessous sont des éléments représentatifs d’usages spécifiques de MediaSPIP pour certains projets.
    Vous pensez avoir un site "remarquable" réalisé avec MediaSPIP ? Faites le nous savoir ici.
    Ferme MediaSPIP @ Infini
    L’Association Infini développe des activités d’accueil, de point d’accès internet, de formation, de conduite de projets innovants dans le domaine des Technologies de l’Information et de la Communication, et l’hébergement de sites. Elle joue en la matière un rôle unique (...)

Sur d’autres sites (4428)

  • avformat/dvdvideodec : fix missing last chapter marker due to off-by-one

    27 novembre 2024, par Marth64
    avformat/dvdvideodec : fix missing last chapter marker due to off-by-one
    

    When using fast chapter marker calculation (default), the last
    marker is inadverdently ignored due to an off-by-one.

    Signed-off-by : Marth64 <marth64@proxyid.net>

    • [DH] libavformat/dvdvideodec.c
  • 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 :

    &#xA;

    UPD

    &#xA;

    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.

    &#xA;

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

    &#xA;

    &#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;

  • Audio format not supported in Flash Media Live Encoder from Directshow Audio Filter

    1er novembre 2015, par Hamed GH

    I create a virtual audio filter in DirectShow and introduce it as a AudioInputDevice.

    When I select this filter as a Directshow Device in FFMPEG, it’s working without any problem. But in Flash Media Live Encoder(FMLE) it’s not working.

    FMLE said "Audio format not supported" when selecting my filter as the Audio Device.

    I searched in internet and found the following link. But implementing GetStreamCaps not working for me.

    https://forums.adobe.com/thread/778085?tstart=0

    Would you please tell me what is the problem ? or which audio connections FMLE accept ?