av_interleaved_write_frame mpegts 写入文件头
时间: 2023-08-05 09:09:06 浏览: 165
av_interleaved_write_frame 函数用于将编码后的视频帧或音频帧写入媒体文件中。而 mpegts 是一种常见的媒体文件格式,用于存储 MPEG-2 视频和音频流。写入 mpegts 文件头可以在媒体文件中添加必要的元数据,以便播放器或其他应用程序可以正确解析文件。
要写入 mpegts 文件头,可以在调用 avformat_write_header 函数之前设置 AVFormatContext 的 muxer 格式为 mpegts,如下所示:
```c
AVFormatContext *fmt_ctx;
AVOutputFormat *out_fmt;
// 分配 AVFormatContext 和设置输出格式
avformat_alloc_output_context2(&fmt_ctx, NULL, "mpegts", output_filename);
out_fmt = fmt_ctx->oformat;
// 打开输出文件
if (!(out_fmt->flags & AVFMT_NOFILE)) {
if (avio_open(&fmt_ctx->pb, output_filename, AVIO_FLAG_WRITE) < 0) {
fprintf(stderr, "Could not open output file '%s'", output_filename);
return -1;
}
}
// 写入文件头
if (avformat_write_header(fmt_ctx, NULL) < 0) {
fprintf(stderr, "Error occurred when opening output file\n");
return -1;
}
```
在上面的代码中,我们使用 avformat_alloc_output_context2 分配了一个 AVFormatContext,并将输出格式设置为 mpegts。然后,我们打开输出文件并调用 avformat_write_header 函数来写入文件头。注意,第二个参数传入了 NULL,表示使用默认的选项。
阅读全文