AVCodecContext
<h5>简要描述</h5>
<ul>
<li>描述一个编解码器的内容空间</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;">codec_type</td>
<td style="text-align: left;">enum AVMediaType</td>
<td>编解码器的类型(视频,音频...)</td>
</tr>
<tr>
<td style="text-align: left;">codec</td>
<td style="text-align: left;">struct AVCodec</td>
<td>采用的解码器AVCodec(H.264,MPEG2...)</td>
</tr>
<tr>
<td style="text-align: left;">bit_rate</td>
<td style="text-align: left;">int</td>
<td>平均比特率</td>
</tr>
<tr>
<td style="text-align: left;">time_base</td>
<td style="text-align: left;">AVRational</td>
<td>根据该参数,可以把PTS转化为实际的时间(单位为秒s)</td>
</tr>
<tr>
<td style="text-align: left;">width,height</td>
<td style="text-align: left;">int</td>
<td>如果是视频的话,代表宽和高</td>
</tr>
<tr>
<td style="text-align: left;">sample_rate</td>
<td style="text-align: left;">int</td>
<td>采样率(音频)</td>
</tr>
<tr>
<td style="text-align: left;">channels</td>
<td style="text-align: left;">int</td>
<td>声道数(音频)</td>
</tr>
<tr>
<td style="text-align: left;">channel_layout</td>
<td style="text-align: left;">uint64_t</td>
<td>音频通道布局</td>
</tr>
<tr>
<td style="text-align: left;">sample_fmt</td>
<td style="text-align: left;">enum AVSampleFormat</td>
<td>采样格式</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"> AVCodecContext *pCodecCtx = pFormatCtx->streams[streamIdx]->codec;
AVCodec* pCodec = avcodec_find_decoder(pCodecCtx->codec_id);
//编解码器类型
enum AVMediaType {
AVMEDIA_TYPE_UNKNOWN = -1, ///< Usually treated as AVMEDIA_TYPE_DATA
AVMEDIA_TYPE_VIDEO,
AVMEDIA_TYPE_AUDIO,
AVMEDIA_TYPE_DATA, ///< Opaque data information usually continuous
AVMEDIA_TYPE_SUBTITLE,
AVMEDIA_TYPE_ATTACHMENT, ///< Opaque data information usually sparse
AVMEDIA_TYPE_NB
};
//音频采样格式
enum AVSampleFormat {
AV_SAMPLE_FMT_NONE = -1,
AV_SAMPLE_FMT_U8, ///< unsigned 8 bits
AV_SAMPLE_FMT_S16, ///< signed 16 bits
AV_SAMPLE_FMT_S32, ///< signed 32 bits
AV_SAMPLE_FMT_FLT, ///< float
AV_SAMPLE_FMT_DBL, ///< double
AV_SAMPLE_FMT_U8P, ///< unsigned 8 bits, planar
AV_SAMPLE_FMT_S16P, ///< signed 16 bits, planar
AV_SAMPLE_FMT_S32P, ///< signed 32 bits, planar
AV_SAMPLE_FMT_FLTP, ///< float, planar
AV_SAMPLE_FMT_DBLP, ///< double, planar
AV_SAMPLE_FMT_NB ///< Number of sample formats. DO NOT USE if linking dynamically
};
</code></pre>