如何使用FFMPEG从编码视频中提取AVPacket的重要信息

时间:2017-05-05 04:15:48

标签: c++ ffmpeg computer-vision

我编写了一个代码来读取编码域中的视频,并能够检索诸如帧的大小和持续时间之类的信息。 AVPacket类由变量作为数据组成。我可以读它,但因为它是一个咬合阵列,我不能以可读格式使用它。我想使用此数据与另一个视频文件进行比较。请帮忙。

 //Method Onee By Adding A Class
  $('.panel-title').click(function() {
    $(this).addClass('open-panel') 
  }) 

 $('.panel-title').click(function() {
    $(this).removeClass('open-panel') 
  }) 

  //Method Two By Click but just animates open and closes right after another
  $('.panel-title').click(function(){
    $(this).animate({"margin-left": '+=20'});
  }),

  $('.panel-title').click(function(){
  $(this).animate({"margin-left": '-=20'});
  });

//Method Three the panels shrink among themselves cause of toggle()
  $(".panel-title").toggle(
    function () { 
    $(this).animate({"margin-left": "+50px"}); 
    },
    function () { 
      $(this).animate({"margin-left": "0px"}); 
});

}

1 个答案:

答案 0 :(得分:0)

  

我无法以可读格式使用它

你为什么这么想?您想输出您AVPAcket的详细信息吗?然后,您需要从AVFormatContext获取这些详细信息。 AVPacketstream_index,您可以使用它来获取数据包所代表的流的详细信息。另一个有用的信息是数据包的pts / dts和大小。

AVPacket pkt = ...;
AVFormatContext *s = ... ;

AVStream* stream = s->streams[pkt.stream_index]; // get the stream

基本上每个媒体文件都包含多个流。当您打开文件时,AVFormatContext会存储有关您打开的文件的信息。 AVFormatContext::streams是媒体文件中的流(例如音频,视频)。从每个AVPacket开始,您可以获得数据包所代表的AVStream。在AVStream中,您可以检查流的codecduration和其他有用的参数。