avformat_new_stream
时间: 2023-10-04 22:09:22 浏览: 83
avformat_new_stream是FFmpeg库中的一个函数,用于创建一个新的音频/视频流。其函数原型如下:
```
AVStream *avformat_new_stream(AVFormatContext *s, const AVCodec *c);
```
其中,参数s是AVFormatContext类型的指针,表示创建的流将要被添加到这个上下文中;参数c是AVCodec类型的指针,表示用于编解码这个流的编码器。
该函数会在内部创建一个AVStream结构体,并将其添加到AVFormatContext的streams数组中。在创建AVStream结构体时,会自动分配一个索引号(即AVStream的id属性),并设置一些默认值,比如时间基准(time_base)等。需要特别注意的是,该函数并不会将编解码器与流进行关联,这一步需要在后续的操作中手动完成。
例如,如果要创建一个新的视频流,可以使用如下代码:
```
AVCodec *codec = avcodec_find_encoder(AV_CODEC_ID_H264);
AVStream *stream = avformat_new_stream(format_context, codec);
stream->codecpar->codec_id = codec->id;
stream->codecpar->codec_type = AVMEDIA_TYPE_VIDEO;
stream->codecpar->width = width;
stream->codecpar->height = height;
stream->codecpar->format = AV_PIX_FMT_YUV420P;
```
其中,format_context表示AVFormatContext类型的指针,指向要添加流的上下文;codec表示AVCodec类型的指针,指向要使用的编码器;width、height表示视频的分辨率;AV_PIX_FMT_YUV420P表示视频的像素格式。
这样就创建了一个新的视频流,并设置了一些默认参数。接下来需要调用其他函数,将编解码器与流进行关联,并设置一些编码器特有的参数,最后打开输出文件并写入数据即可。
阅读全文