У меня есть поток 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.