我想使用libav实现某种tee函数。我从文件中读取数据包,并希望将它们转发到几个输出文件。 到目前为止,由于av_interleaved_write_frame释放了数据包,我这样做了:
AVPacket pkt;
// Stuff to read packets into pkt
for (ic = 0; ic < nb_outputs; ic++) {
AVPacket pkt2;
av_copy_packet(&pkt2,&pkt);
av_interleaved_write_frame(ofmt_ctx[ic], &pkt2);
}
我想知道这是否是最佳方式? 复制数据包似乎有点矫枉过正。我尝试使用av_packet_ref但它失败了。