查找流
媒体流容器通常具有若干流,例如视频流和音频流。例如,你可以使用以下方法获取音频流:
// A Format Context - see Reading Data for more info
AVFormatContext *formatContext;
// Inspect packets of stream to determine properties
if (avformat_find_stream_info(formatContext, NULL) < 0){
// Error finding info
}
// Find the stream and its codec
AVCodec* audioCodec;
int audioStreamIndex = av_find_best_stream(
formatContext, // The media stream
AVMEDIA_TYPE_AUDIO, // The type of stream we are looking for - audio for example
-1, // Desired stream number, -1 for any
-1, // Number of related stream, -1 for none
&audioCodec, // Gets the codec associated with the stream, can be NULL
0 // Flags - not used currently
);
if(audioStreamIndex = AVERROR_STREAM_NOT_FOUND || !audioCodec){
// Error finding audio (ie. no audio stream?)
}
要获取其他类型的流,你只需要替换流的类型。以下是有效类型:
AVMEDIA_TYPE_VIDEO,
AVMEDIA_TYPE_AUDIO,
AVMEDIA_TYPE_SUBTITLE,
AVMEDIA_TYPE_DATA, // Usually continuous
AVMEDIA_TYPE_ATTACHMENT, // Usually sparse