FFmpeg开发笔记(六十三)FFmpeg使用vvenc把视频转为H.266编码
<span data-cke-copybin-start="1"><span data-cke-copybin-start="1"></span></span>前面的两篇文章分别介绍了如何在Linux环境和Windows环境给FFmpeg集成H.266的编码器vvenc,接下来利用ffmpeg把视频文件转换为VVC格式,观察新生成的vvc视频能否正常播放。<p><span id="cke_bm_1457S"> 确保Linux系统已经按照《FFmpeg开发实战:从零基础到短视频上线》该书第一章的“1.2 Linux系统安装FFmpeg”安装了FFmpeg,并且Windows系统已经按照《FFmpeg开发实战:从零基础到短视频上线》该书第八章的“8.1 Windows环境编译FFmpeg”安装了FFmpeg,然后进入各自系统的控制台界面。<br>
先执行下面命令,把视频文件转为h264编码格式(即H.265视频编码标准):</span></p>
<div class="cke_widget_wrapper cke_widget_block cke_widget_codeSnippet cke_widget_selected" data-cke-display-name="代码段" data-cke-filter="off" data-cke-widget-id="9" data-cke-widget-wrapper="1">
<pre class="cke_widget_element" data-cke-widget-data="%7B%22code%22%3A%22ffmpeg%20-i%20fuzhous.mp4%20-vcodec%20h264%20ff_recode_video1.mp4%22%2C%22classes%22%3Anull%7D" data-cke-widget-keep-attr="0" data-cke-widget-upcasted="1" data-widget="codeSnippet"><code class="hljs">ffmpeg -i fuzhous.mp4 -vcodec h264 ff_recode_video1.mp4</code></pre>
</div>
<p>再执行下面命令,把视频文件转为hevc编码格式(即H.265视频编码标准):</p>
<div class="cke_widget_wrapper cke_widget_block cke_widget_codeSnippet cke_widget_selected" data-cke-display-name="代码段" data-cke-filter="off" data-cke-widget-id="8" data-cke-widget-wrapper="1">
<pre class="cke_widget_element" data-cke-widget-data="%7B%22code%22%3A%22ffmpeg%20-i%20fuzhous.mp4%20-vcodec%20hevc%20ff_recode_video2.mp4%22%2C%22classes%22%3Anull%7D" data-cke-widget-keep-attr="0" data-cke-widget-upcasted="1" data-widget="codeSnippet"><code class="hljs">ffmpeg -i fuzhous.mp4 -vcodec hevc ff_recode_video2.mp4</code></pre>
</div>
<p>再执行下面命令,把视频文件转为vvc编码格式(即H.266视频编码标准):</p>
<div class="cke_widget_wrapper cke_widget_block cke_widget_codeSnippet cke_widget_selected" data-cke-display-name="代码段" data-cke-filter="off" data-cke-widget-id="7" data-cke-widget-wrapper="1">
<pre class="cke_widget_element" data-cke-widget-data="%7B%22code%22%3A%22ffmpeg%20-i%20fuzhous.mp4%20-vcodec%20vvc%20ff_recode_video3.mp4%22%2C%22classes%22%3Anull%7D" data-cke-widget-keep-attr="0" data-cke-widget-upcasted="1" data-widget="codeSnippet"><code class="hljs">ffmpeg -i fuzhous.mp4 -vcodec vvc ff_recode_video3.mp4</code></pre>
</div>
<p>接着执行下面命令查看转换后的视频信息:</p>
<div class="cke_widget_wrapper cke_widget_block cke_widget_codeSnippet cke_widget_selected" data-cke-display-name="代码段" data-cke-filter="off" data-cke-widget-id="6" data-cke-widget-wrapper="1">
<pre class="cke_widget_element" data-cke-widget-data="%7B%22code%22%3A%22ls%20-lrt%22%2C%22classes%22%3Anull%7D" data-cke-widget-keep-attr="0" data-cke-widget-upcasted="1" data-widget="codeSnippet"><code class="hljs">ls -lrt</code></pre>
</div>
<p>命令行返回转换后的视频信息如下所示:</p>
<div class="cke_widget_wrapper cke_widget_block cke_widget_codeSnippet cke_widget_selected" data-cke-display-name="代码段" data-cke-filter="off" data-cke-widget-id="5" data-cke-widget-wrapper="1">
<pre class="cke_widget_element" data-cke-widget-data="%7B%22code%22%3A%22-rw-r--r--%201%20root%20root%20640320%20May%2013%2016%3A46%20ff_recode_video1.mp4%5Cn-rw-r--r--%201%20root%20root%20306139%20May%2013%2016%3A48%20ff_recode_video2.mp4%5Cn-rw-r--r--%201%20root%20root%20278684%20May%2013%2016%3A48%20ff_recode_video3.mp4%22%2C%22classes%22%3Anull%7D" data-cke-widget-keep-attr="0" data-cke-widget-upcasted="1" data-widget="codeSnippet"><code class="hljs">-rw-r--r-- 1 root root 640320 May 13 16:46 ff_recode_video1.mp4
-rw-r--r-- 1 root root 306139 May 13 16:48 ff_recode_video2.mp4
-rw-r--r-- 1 root root 278684 May 13 16:48 ff_recode_video3.mp4</code></pre>
</div>
<p>由以上视频信息可见,采取H.264格式的视频大小约640K,采取H.265格式的视频大小约306K,采取H.266格式的视频大小约278K,可见hevc和vvc编码的视频大小都比h264编码的视频大为减小,其中vvc视频比起hevc视频又缩小了少许。<br>
因为FFmpeg从7.1开始支持解码vvc格式,所以编译出来的ffplay程序能够播放vvc视频。于是运行下面命令播放新转换的vvc格式视频文件:</p>
<div class="cke_widget_wrapper cke_widget_block cke_widget_codeSnippet cke_widget_selected" data-cke-display-name="代码段" data-cke-filter="off" data-cke-widget-id="4" data-cke-widget-wrapper="1">
<pre class="cke_widget_element" data-cke-widget-data="%7B%22code%22%3A%22ffplay%20ff_recode_video3.mp4%22%2C%22classes%22%3Anull%7D" data-cke-widget-keep-attr="0" data-cke-widget-upcasted="1" data-widget="codeSnippet"><code class="hljs">ffplay ff_recode_video3.mp4</code></pre>
</div>
<p>发现弹出了ffplay播放窗口如下图所示,说明vvc视频可以正常播放。</p>
<p><span class="cke_widget_wrapper cke_widget_inline cke_widget_image cke_image_nocaption cke_widget_selected" data-cke-display-name="图像" data-cke-filter="off" data-cke-widget-id="3" data-cke-widget-wrapper="1"><span class="cke_reset cke_widget_drag_handler_container"><span class="cke_image_resizer" title="点击并拖拽以改变尺寸"><span class="cke_widget_edit_container" title="编辑图片"><img src="https://img2024.cnblogs.com/blog/729938/202506/729938-20250607130921834-702458521.png"></span></span></span></span></p>
<p>虽然通过ffplay命令能够播放vvc视频,但是VLC media player的3.0.21版本尚不支持vvc格式。若想通过可交互界面播放vvc视频,需下载最新版的PotPlayer,最新的PotPlayer支持播放VVC格式视频。</p>
<p>使用PotPlayer播放vvc视频的效果如下图所示:</p>
<p><span class="cke_widget_wrapper cke_widget_inline cke_widget_image cke_image_nocaption cke_widget_selected" data-cke-display-name="图像" data-cke-filter="off" data-cke-widget-id="2" data-cke-widget-wrapper="1"><img src="https://i-blog.csdnimg.cn/direct/ea5dfd21521e49cc8029bcb48e65fc5f.png"><img alt="" width="681" height="304" data-src="https://img2024.cnblogs.com/blog/729938/202506/729938-20250607130941070-442969037.png"></span></p>
<p>可见通过ffplay和PotPlayer都能播放VVC格式视频,证明之前的vvenc编码器正确集成到了FFmpeg。</p>
<p>更多详细的FFmpeg开发知识参见<span class="cke_widget_wrapper cke_widget_inline cke_widget_csdnlink cke_widget_selected" data-cke-display-name="a" data-cke-filter="off" data-cke-widget-id="1" data-cke-widget-wrapper="1">《FFmpeg开发实战:从零基础到短视频上线》一书。</span></p><br><br>
来源:https://www.cnblogs.com/aqi00/p/18916610
頁:
[1]