AVFormatContext
<h5>简要描述</h5>
<ul>
<li>描述一个媒体文件或媒体流的构成和基本信息,在avformat.h中被声明;这是FFMpeg中最为基本的一个结构,是其他所有结构的根,是一个多媒体文件或流的根本抽象。其中nb_streams和streams所表示的AVStream结构指针数组包含了所有内嵌媒体流的描述;iformat和oformat指向对应的demuxer和muxer指针;pb则指向一个控制底层数据读写的ByteIOContext结构</li>
</ul>
<h5>参数</h5>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">类型</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">pb</td>
<td style="text-align: left;">AVIOContext*</td>
<td>输入数据的缓存</td>
</tr>
<tr>
<td style="text-align: left;">nb_streams</td>
<td style="text-align: left;">unsigned int</td>
<td>视音频的个数</td>
</tr>
<tr>
<td style="text-align: left;">streams</td>
<td style="text-align: left;">AVStreams**</td>
<td>视音频流</td>
</tr>
<tr>
<td style="text-align: left;">filename</td>
<td style="text-align: left;">char[1024]</td>
<td>文件名</td>
</tr>
<tr>
<td style="text-align: left;">duration</td>
<td style="text-align: left;">int64_t</td>
<td>时长,单位为微妙us,转换为秒需要 / 1000000</td>
</tr>
<tr>
<td style="text-align: left;">bit_rate</td>
<td style="text-align: left;">int</td>
<td>比特率(单位bps,转换为kbps需要 / 1000)</td>
</tr>
<tr>
<td style="text-align: left;">metadata</td>
<td style="text-align: left;">AVDictionary*</td>
<td>元数据</td>
</tr>
<tr>
<td style="text-align: left;">av_class</td>
<td style="text-align: left;">const AVClass*</td>
<td>A class for logging and @ref avoptions. Set by avformat_alloc_context()</td>
</tr>
<tr>
<td style="text-align: left;">iformat</td>
<td style="text-align: left;">struct AVInputFormat*</td>
<td>The input container format</td>
</tr>
<tr>
<td style="text-align: left;">oformat</td>
<td style="text-align: left;">struct AVOutputFormat*</td>
<td>The output container format</td>
</tr>
<tr>
<td style="text-align: left;">priv_data</td>
<td style="text-align: left;">void*</td>
<td>Format private data. This is an AVOptions-enabled struct</td>
</tr>
<tr>
<td style="text-align: left;">...</td>
<td style="text-align: left;">...</td>
<td>...</td>
</tr>
</tbody>
</table>
<h5>初始化方法</h5>
<pre><code class="language-cpp"> AVFormatContext* pCtx;
pCtx = avformat_alloc_context();
ret = avformat_open_input(&pCtx, url.c_str(), 0, 0);</code></pre>