查詢流
媒體流容器通常具有若干流,例如視訊流和音訊流。例如,你可以使用以下方法獲取音訊流:
// 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