Извлечение данных KLV из потока mp2 с использованием C ++ и ffmpeg - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть поток mp2 с метаданными klv.Я сохранил klv в файле, используя командную строку ffmpeg:

ffmpeg -i input.mpg -map data-re-codec copy -f data output.klv

Теперь я хочу сделать этов с ++.Итак, у меня есть

FFMPEG setup… ..

Тогда основной цикл

// Read frames
while(av_read_frame(pFormatCtx, &packet) >= 0)
{
    // Is this a packet from the video stream?
    if(packet.stream_index == videoStream)
    {
        // Decode video frame
        avcodec_decode_video2(pCodecCtx, pFrame, &frameFinished, &packet);

        // Did we get a video frame?
        if(frameFinished)
        {
            // Convert the image from its native format to RGB
            sws_scale(sws_ctx, (uint8_t const * const *)pFrame->data,
                                pFrame->linesize, 0, pCodecCtx->height,
                                pFrameRGB->data, pFrameRGB->linesize);

            QImage myImage(pFrameRGB->data[0], pCodecCtx->width, pCodecCtx->height, QImage::Format_RGB888);

            QPixmap img(QPixmap::fromImage(myImage.scaled(ui->label->width(),ui->label->height(),Qt::KeepAspectRatio)));

            ui->label->setPixmap(img);
            QCoreApplication::processEvents();
        }
    }
    else // klv stream
    {
        // Decode klv data
        qDebug() << packet.buf->size;
        for(int i=0; i<packet.buf->size; i++)
        {
            qDebug() << packet.buf->data[i];
        }
    }

В результате вывод klv отличается - я должен что-то делать неправильно при обработке пакета,Кадры хорошие, и я просматриваю их в метке qt, поэтому моя настройка ffmpeg работает с изображениями, но не с данными klv.

1 Ответ

0 голосов
/ 19 февраля 2019

Плохо - этот код работает - я сравнивал вывод int с выводом ffmpeg, который просматривается в блокноте - когда я использовал notepad ++ - я могу понять вывод ffmpeg, и он действительно коррелирует:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...