<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[【FAQ】全志V系列芯片 如何生成拍照缩略图和视频缩略图？]]></title><description><![CDATA[<h3><strong>适用范围</strong></h3>
<p dir="auto">只适用于V系列，并使用MPP多媒体框架。</p>
<h3><strong>拍照缩略图的处理</strong></h3>
<p dir="auto"><strong>设置JPEG编码生成缩略图</strong><br />
在创建一个JPEG编码的通路时，想要同时生成缩略图，其实很简单，只需要在调用AW_MPI_VENC_SendFrame之前调用AW_MPI_VENC_SetJpegExifInfo设置缩略图属性即可。</p>
<pre><code>VENC_EXIFINFO_S stExifInfo;
memset(&amp;stExifInfo, 0, sizeof(VENC_EXIFINFO_S));
stExifInfo.ThumbWidth = thumbnailWidth;
stExifInfo.ThumbHeight = thumbnailHeight;
stExifInfo.thumb_quality = thumbnailQuality;
stExifInfo.Orientation = mJpegRotate;
AW_MPI_VENC_SetJpegExifInfo(vechn, &amp;stExifInfo);
AW_MPI_VENC_SendFrame(vechn, &amp;frmInfo);
</code></pre>
<p dir="auto"><strong>获取缩略图</strong></p>
<p dir="auto">通过调用接口AW_MPI_VENC_GetJpegThumbBuffer，我们可以得到缩略图buffer的起始指针，和其大小。需要注意的是，缩略图并不是单独的buffer，而是保存在整个JPEG图像数据中的。</p>
<p dir="auto">我们可以通过比较缩略的起始地址指针和JPEG图像数据的起始指针，得到其在JEPG文件中的偏移位置。同时由于JPEG文件的格式，我们可以在保存JPEG文件时，将得出的缩略图偏移量和大小写入到文件尾部，当需要缩略图去显示的时候，能更方便的获取到缩略图数据。</p>
<pre><code>int getThumbOffset(VENC_STREAM_S *pVencStream, VENC_JPEG_THUMB_BUFFER_S *pThumbBuf, off_t *pThumbOffset)
{
    if (NULL == pVencStream || NULL == pThumbBuf)
    {
        aloge("fatal error! why parameter is null!");
        return -1;
    }

    if (pThumbBuf-&gt;ThumbAddrVir &gt;= pVencStream-&gt;mpPack[0].mpAddr0 &amp;&amp; \
        pThumbBuf-&gt;ThumbAddrVir &lt; pVencStream-&gt;mpPack[0].mpAddr0+pVencStream-&gt;mpPack[0].mLen0)
    {
        *pThumbOffset = pThumbBuf-&gt;ThumbAddrVir - pVencStream-&gt;mpPack[0].mpAddr0;
    }
    else if (pThumbBuf-&gt;ThumbAddrVir &gt;= pVencStream-&gt;mpPack[0].mpAddr1 &amp;&amp; \
        pThumbBuf-&gt;ThumbAddrVir &lt; pVencStream-&gt;mpPack[0].mpAddr1+pVencStream-&gt;mpPack[0].mLen1)
    {
        *pThumbOffset = pThumbBuf-&gt;ThumbAddrVir - pVencStream-&gt;mpPack[0].mpAddr1;
    }

    alogd("get thumb offet[%lld]", *pThumbOffset);

    return 0;
}
</code></pre>
<h3><strong>视频生成缩略图</strong></h3>
<p dir="auto">视频生成缩略图的方法是通过demux组件解析一帧图像，送入解码器，将其解码为YUV图像，再将其送入编码器缩放编码为较小的图像作为视频的缩略图。</p>
<pre><code>demux -&gt; vdec -&gt; venc -&gt; jpeg
</code></pre>
<p dir="auto">详细的实现流程可以参考 softwinner/eyesee-mpp/framework/v316/demo/sample_ThumbRetriever下的sample_ThumbRetriever和eyesee-mpp/framework/v316/media/thumbretriever路径下的EyeseeThumbRetriever类的实现流程。</p>
]]></description><link>https://bbs.aw-ol.com/topic/1620/faq-全志v系列芯片-如何生成拍照缩略图和视频缩略图</link><generator>RSS for Node</generator><lastBuildDate>Wed, 22 Jul 2026 20:08:43 GMT</lastBuildDate><atom:link href="https://bbs.aw-ol.com/topic/1620.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 16 Jun 2022 07:32:14 GMT</pubDate><ttl>60</ttl></channel></rss>