mirror of
https://github.com/jaywcjlove/reference.git
synced 2025-06-19 21:51:20 +08:00
doc: update ffmpeg.md
(#18). 40d15647e0
This commit is contained in:
@ -41,7 +41,7 @@
|
||||
<p>本备忘清单是 <a href="https://ffmpeg.org/">FFmpeg</a> 中常见视频处理操作的备忘清单</p>
|
||||
</div></header><div class="menu-tocs"><div class="menu-btn"><svg aria-hidden="true" fill="currentColor" height="1em" width="1em" viewBox="0 0 16 16" version="1.1" data-view-component="true">
|
||||
<path fill-rule="evenodd" d="M2 4a1 1 0 100-2 1 1 0 000 2zm3.75-1.5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zm0 5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zm0 5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zM3 8a1 1 0 11-2 0 1 1 0 012 0zm-1 6a1 1 0 100-2 1 1 0 000 2z"></path>
|
||||
</svg></div><div class="menu-modal"><a aria-hidden="true" class="leve2 tocs-link" href="#参数参考">参数参考</a><a aria-hidden="true" class="leve3 tocs-link" href="#常用开关">常用开关</a><a aria-hidden="true" class="leve3 tocs-link" href="#音频">音频</a><a aria-hidden="true" class="leve3 tocs-link" href="#比特率">比特率</a><a aria-hidden="true" class="leve4 tocs-link" href="#视频">视频</a><a aria-hidden="true" class="leve2 tocs-link" href="#视频编辑">视频编辑</a><a aria-hidden="true" class="leve3 tocs-link" href="#裁剪">裁剪</a><a aria-hidden="true" class="leve3 tocs-link" href="#缩放">缩放</a><a aria-hidden="true" class="leve3 tocs-link" href="#剪切视频部分">剪切视频部分</a><a aria-hidden="true" class="leve3 tocs-link" href="#h265-2-pass-编码">H265 2-pass 编码</a><a aria-hidden="true" class="leve3 tocs-link" href="#视频比特率设置">视频比特率设置</a><a aria-hidden="true" class="leve3 tocs-link" href="#固定旋转">固定旋转</a><a aria-hidden="true" class="leve3 tocs-link" href="#视频帧速率">视频帧速率</a><a aria-hidden="true" class="leve2 tocs-link" href="#重新包装">重新包装</a><a aria-hidden="true" class="leve3 tocs-link" href="#提取音频流">提取音频流</a><a aria-hidden="true" class="leve3 tocs-link" href="#创建缩略图">创建缩略图</a><a aria-hidden="true" class="leve3 tocs-link" href="#处理-id3-标签">处理 id3 标签</a><a aria-hidden="true" class="leve3 tocs-link" href="#重新采样转换音频">重新采样/转换音频</a><a aria-hidden="true" class="leve3 tocs-link" href="#切换容器">切换容器</a><a aria-hidden="true" class="leve3 tocs-link" href="#图片中的视频">图片中的视频</a><a aria-hidden="true" class="leve3 tocs-link" href="#将视频拆分为图像">将视频拆分为图像</a><a aria-hidden="true" class="leve2 tocs-link" href="#另见">另见</a></div></div><div class="h1wrap-body"><div class="wrap h2body-exist"><div class="wrap-header h2wrap"><h2 id="参数参考"><a aria-hidden="true" tabindex="-1" href="#参数参考"><span class="icon icon-link"></span></a>参数参考</h2><div class="wrap-body">
|
||||
</svg></div><div class="menu-modal"><a aria-hidden="true" class="leve2 tocs-link" href="#参数参考">参数参考</a><a aria-hidden="true" class="leve3 tocs-link" href="#常用开关">常用开关</a><a aria-hidden="true" class="leve3 tocs-link" href="#音频">音频</a><a aria-hidden="true" class="leve3 tocs-link" href="#比特率">比特率</a><a aria-hidden="true" class="leve4 tocs-link" href="#视频">视频</a><a aria-hidden="true" class="leve2 tocs-link" href="#视频编辑">视频编辑</a><a aria-hidden="true" class="leve3 tocs-link" href="#裁剪">裁剪</a><a aria-hidden="true" class="leve3 tocs-link" href="#缩放">缩放</a><a aria-hidden="true" class="leve3 tocs-link" href="#视频帧速率">视频帧速率</a><a aria-hidden="true" class="leve3 tocs-link" href="#剪切视频部分">剪切视频部分</a><a aria-hidden="true" class="leve3 tocs-link" href="#h265-2-pass-编码">H265 2-pass 编码</a><a aria-hidden="true" class="leve3 tocs-link" href="#视频比特率设置">视频比特率设置</a><a aria-hidden="true" class="leve3 tocs-link" href="#固定旋转">固定旋转</a><a aria-hidden="true" class="leve3 tocs-link" href="#放慢视频速度">放慢视频速度</a><a aria-hidden="true" class="leve3 tocs-link" href="#缩放到特定宽度">缩放到特定宽度</a><a aria-hidden="true" class="leve2 tocs-link" href="#重新包装">重新包装</a><a aria-hidden="true" class="leve3 tocs-link" href="#提取音频流">提取音频流</a><a aria-hidden="true" class="leve3 tocs-link" href="#创建缩略图">创建缩略图</a><a aria-hidden="true" class="leve3 tocs-link" href="#处理-id3-标签">处理 id3 标签</a><a aria-hidden="true" class="leve3 tocs-link" href="#重新采样转换音频">重新采样/转换音频</a><a aria-hidden="true" class="leve3 tocs-link" href="#切换容器转换类型">切换容器(转换类型)</a><a aria-hidden="true" class="leve3 tocs-link" href="#音视频同步">音视频同步</a><a aria-hidden="true" class="leve3 tocs-link" href="#图片中的视频">图片中的视频</a><a aria-hidden="true" class="leve3 tocs-link" href="#将视频拆分为图像">将视频拆分为图像</a><a aria-hidden="true" class="leve3 tocs-link" href="#转换为-gif">转换为 Gif</a><a aria-hidden="true" class="leve2 tocs-link" href="#另见">另见</a></div></div><div class="h1wrap-body"><div class="wrap h2body-exist"><div class="wrap-header h2wrap"><h2 id="参数参考"><a aria-hidden="true" tabindex="-1" href="#参数参考"><span class="icon icon-link"></span></a>参数参考</h2><div class="wrap-body">
|
||||
</div></div><div class="h2wrap-body"><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="常用开关"><a aria-hidden="true" tabindex="-1" href="#常用开关"><span class="icon icon-link"></span></a>常用开关</h3><div class="wrap-body">
|
||||
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line"><span class="token parameter variable">-codecs</span> <span class="token comment"># 列出编解码器</span>
|
||||
</span><span class="code-line"><span class="token parameter variable">-c:v</span> <span class="token comment"># 视频编解码器(-vcodec)-'copy'复制流</span>
|
||||
@ -67,19 +67,37 @@
|
||||
</span></code></pre>
|
||||
</div></div></div></div><div class="wrap h2body-exist"><div class="wrap-header h2wrap"><h2 id="视频编辑"><a aria-hidden="true" tabindex="-1" href="#视频编辑"><span class="icon icon-link"></span></a>视频编辑</h2><div class="wrap-body">
|
||||
<!--rehype:body-class=cols-2-->
|
||||
</div></div><div class="h2wrap-body cols-2"><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="裁剪"><a aria-hidden="true" tabindex="-1" href="#裁剪"><span class="icon icon-link"></span></a>裁剪</h3><div class="wrap-body">
|
||||
</div></div><div class="h2wrap-body cols-2"><div class="wrap h3body-not-exist row-span-2"><div class="wrap-header h3wrap"><h3 id="裁剪"><a aria-hidden="true" tabindex="-1" href="#裁剪"><span class="icon icon-link"></span></a>裁剪</h3><div class="wrap-body">
|
||||
<!--rehype:wrap-class=row-span-2-->
|
||||
<pre class="wrap-text "><code class="language-bash code-highlight"><span class="code-line">$ ffmpeg <span class="token parameter variable">-i</span> <span class="token operator"><</span>input<span class="token operator">></span> <span class="token parameter variable">-filter:v</span> <span class="token string">"crop=640:480:100:25"</span> <span class="token operator"><</span>output<span class="token operator">></span>
|
||||
</span></code></pre>
|
||||
<!--rehype:className=wrap-text -->
|
||||
<p>通过从输入视频中复制偏移 <code>x=100px</code> <code>y=25px</code> 的相应窗口来创建 <code>640x480</code> 大小的输出视频</p>
|
||||
<pre class="wrap-text "><code class="language-bash code-highlight"><span class="code-line"><span class="token comment"># 裁剪到宽度 360,高度 640</span>
|
||||
</span><span class="code-line">$ ffmpeg <span class="token parameter variable">-i</span> input.mov <span class="token parameter variable">-filter:v</span> <span class="token string">'crop=360:640:0:0'</span> <span class="token parameter variable">-codec:a</span> copy output.mov
|
||||
</span></code></pre>
|
||||
<!--rehype:className=wrap-text -->
|
||||
<p>裁剪到宽度 360,高度 640,从坐标 (10, 20) 开始</p>
|
||||
<pre class="wrap-text "><code class="language-bash code-highlight"><span class="code-line">$ ffmpeg <span class="token parameter variable">-i</span> input.mov <span class="token parameter variable">-filter:v</span> <span class="token string">'crop=360:640:10:20'</span> <span class="token parameter variable">-codec:a</span> copy output.mov
|
||||
</span></code></pre>
|
||||
<!--rehype:className=wrap-text -->
|
||||
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="缩放"><a aria-hidden="true" tabindex="-1" href="#缩放"><span class="icon icon-link"></span></a>缩放</h3><div class="wrap-body">
|
||||
<pre class="wrap-text "><code class="language-bash code-highlight"><span class="code-line">$ ffmpeg <span class="token parameter variable">-i</span> <span class="token operator"><</span>输入<span class="token operator">></span> <span class="token parameter variable">-vf</span> <span class="token assign-left variable">scale</span><span class="token operator">=</span><span class="token number">640</span>:480 <span class="token operator"><</span>输出<span class="token operator">></span>
|
||||
</span></code></pre>
|
||||
<!--rehype:className=wrap-text -->
|
||||
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="视频帧速率"><a aria-hidden="true" tabindex="-1" href="#视频帧速率"><span class="icon icon-link"></span></a>视频帧速率</h3><div class="wrap-body">
|
||||
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line">$ ffmpeg <span class="token parameter variable">-i</span> input.avi <span class="token parameter variable">-r</span> <span class="token number">24</span> output.avi
|
||||
</span></code></pre>
|
||||
<p>将输出文件的帧速率强制为 24 fps</p>
|
||||
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line">$ ffmpeg <span class="token parameter variable">-r</span> <span class="token number">1</span> <span class="token parameter variable">-i</span> input.m2v <span class="token parameter variable">-r</span> <span class="token number">24</span> output.avi
|
||||
</span></code></pre>
|
||||
<p>将输入文件的帧速率(仅对原始格式有效)强制为 1 fps,将输出文件的帧速率强制为 24 fps</p>
|
||||
</div></div></div><div class="wrap h3body-not-exist col-span-2"><div class="wrap-header h3wrap"><h3 id="剪切视频部分"><a aria-hidden="true" tabindex="-1" href="#剪切视频部分"><span class="icon icon-link"></span></a>剪切视频部分</h3><div class="wrap-body">
|
||||
<!--rehype:wrap-class=col-span-2-->
|
||||
<pre class="wrap-text "><code class="language-bash code-highlight"><span class="code-line">$ ffmpeg <span class="token parameter variable">-i</span> <span class="token operator"><</span>input<span class="token operator">></span> <span class="token parameter variable">-ss</span> 00:01:45 <span class="token parameter variable">-t</span> 00:02:35 <span class="token parameter variable">-vcodec</span> copy <span class="token parameter variable">-acodec</span> copy <span class="token operator"><</span>output<span class="token operator">></span>
|
||||
</span><span class="code-line">$ ffmpeg <span class="token parameter variable">-ss</span> 00:00:30 <span class="token parameter variable">-i</span> orginalfile.mpg <span class="token parameter variable">-t</span> 00:00:05 <span class="token parameter variable">-vcodec</span> copy <span class="token parameter variable">-acodec</span> copy newfile.mpg
|
||||
</span><span class="code-line"><span class="token comment"># 从 4.5 秒开始的 5 秒长的视频</span>
|
||||
</span><span class="code-line">$ ffmpeg <span class="token parameter variable">-i</span> in.mp4 <span class="token parameter variable">-ss</span> <span class="token number">4.5</span> <span class="token parameter variable">-t</span> <span class="token number">5</span> out.mp4
|
||||
</span></code></pre>
|
||||
<!--rehype:className=wrap-text -->
|
||||
</div></div></div><div class="wrap h3body-not-exist row-span-2"><div class="wrap-header h3wrap"><h3 id="h265-2-pass-编码"><a aria-hidden="true" tabindex="-1" href="#h265-2-pass-编码"><span class="icon icon-link"></span></a>H265 2-pass 编码</h3><div class="wrap-body">
|
||||
@ -103,13 +121,14 @@
|
||||
</span></code></pre>
|
||||
<!--rehype:className=wrap-text -->
|
||||
<p>不要为旋转重新编码,而是简单地为旋转角度添加一个视频元数据字段</p>
|
||||
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="视频帧速率"><a aria-hidden="true" tabindex="-1" href="#视频帧速率"><span class="icon icon-link"></span></a>视频帧速率</h3><div class="wrap-body">
|
||||
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line">$ ffmpeg <span class="token parameter variable">-i</span> input.avi <span class="token parameter variable">-r</span> <span class="token number">24</span> output.avi
|
||||
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="放慢视频速度"><a aria-hidden="true" tabindex="-1" href="#放慢视频速度"><span class="icon icon-link"></span></a>放慢视频速度</h3><div class="wrap-body">
|
||||
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line">$ ffmpeg <span class="token parameter variable">-i</span> in.mp4 <span class="token parameter variable">-filter:v</span> <span class="token string">"setpts=4.0*PTS"</span> out.mp4
|
||||
</span></code></pre>
|
||||
<p>将输出文件的帧速率强制为 24 fps</p>
|
||||
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line">$ ffmpeg <span class="token parameter variable">-r</span> <span class="token number">1</span> <span class="token parameter variable">-i</span> input.m2v <span class="token parameter variable">-r</span> <span class="token number">24</span> output.avi
|
||||
<p>使用过滤器减慢视频。 此示例将视频减慢四倍</p>
|
||||
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="缩放到特定宽度"><a aria-hidden="true" tabindex="-1" href="#缩放到特定宽度"><span class="icon icon-link"></span></a>缩放到特定宽度</h3><div class="wrap-body">
|
||||
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line">$ ffmpeg <span class="token parameter variable">-i</span> in.mp4 <span class="token parameter variable">-filter:v</span> <span class="token assign-left variable">scale</span><span class="token operator">=</span><span class="token string">"538:trunc(ow/a/2)*2"</span> <span class="token parameter variable">-c:a</span> copy out.mp4
|
||||
</span></code></pre>
|
||||
<p>将输入文件的帧速率(仅对原始格式有效)强制为 1 fps,将输出文件的帧速率强制为 24 fps</p>
|
||||
<p>给定所需的视频宽度,例如 538 像素,您可以使用以下方法将视频调整为该宽度,同时保持宽高比</p>
|
||||
</div></div></div></div></div><div class="wrap h2body-exist"><div class="wrap-header h2wrap"><h2 id="重新包装"><a aria-hidden="true" tabindex="-1" href="#重新包装"><span class="icon icon-link"></span></a>重新包装</h2><div class="wrap-body">
|
||||
</div></div><div class="h2wrap-body"><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="提取音频流"><a aria-hidden="true" tabindex="-1" href="#提取音频流"><span class="icon icon-link"></span></a>提取音频流</h3><div class="wrap-body">
|
||||
<pre class="wrap-text "><code class="language-bash code-highlight"><span class="code-line">$ ffmpeg <span class="token parameter variable">-i</span> file.mp4 <span class="token parameter variable">-vn</span> <span class="token parameter variable">-acodec</span> copy output.aac
|
||||
@ -141,11 +160,25 @@
|
||||
<pre class="wrap-text "><code class="language-bash code-highlight"><span class="code-line">$ ffmpeg <span class="token parameter variable">-i</span> file.aac <span class="token parameter variable">-acodec</span> mp3 <span class="token parameter variable">-ar</span> <span class="token number">44100</span> <span class="token parameter variable">-ab</span> <span class="token number">128000</span> output.mp3
|
||||
</span></code></pre>
|
||||
<!--rehype:className=wrap-text -->
|
||||
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="切换容器"><a aria-hidden="true" tabindex="-1" href="#切换容器"><span class="icon icon-link"></span></a>切换容器</h3><div class="wrap-body">
|
||||
</div></div></div><div class="wrap h3body-not-exist row-span-2"><div class="wrap-header h3wrap"><h3 id="切换容器转换类型"><a aria-hidden="true" tabindex="-1" href="#切换容器转换类型"><span class="icon icon-link"></span></a>切换容器(转换类型)</h3><div class="wrap-body">
|
||||
<!--rehype:wrap-class=row-span-2-->
|
||||
<p>将容器从 <code>MKV</code> 更改为 <code>MP4</code></p>
|
||||
<pre class="wrap-text "><code class="language-bash code-highlight"><span class="code-line">$ ffmpeg <span class="token parameter variable">-i</span> file.mkv <span class="token parameter variable">-acodec</span> copy <span class="token parameter variable">-vcodec</span> copy file.mp4
|
||||
</span></code></pre>
|
||||
<!--rehype:className=wrap-text -->
|
||||
<p>要将视频从 <code>.mov</code> 更改为 <code>.mp4</code></p>
|
||||
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line">$ ffmpeg <span class="token parameter variable">-i</span> in.mov out.mp4
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="wrap h3body-not-exist row-span-2"><div class="wrap-header h3wrap"><h3 id="音视频同步"><a aria-hidden="true" tabindex="-1" href="#音视频同步"><span class="icon icon-link"></span></a>音视频同步</h3><div class="wrap-body">
|
||||
<!--rehype:wrap-class=row-span-2-->
|
||||
<p>将音频延迟 3 秒</p>
|
||||
<pre class="wrap-text "><code class="language-bash code-highlight"><span class="code-line">$ ffmpeg <span class="token parameter variable">-i</span> input.mov <span class="token parameter variable">-itsoffset</span> <span class="token number">3</span> <span class="token parameter variable">-i</span> input.mov <span class="token parameter variable">-map</span> <span class="token number">0</span>:v <span class="token parameter variable">-map</span> <span class="token number">1</span>:a <span class="token parameter variable">-codec:a</span> copy <span class="token parameter variable">-codec:v</span> copy output.mov
|
||||
</span></code></pre>
|
||||
<!--rehype:className=wrap-text -->
|
||||
<p>将视频延迟 3 秒(即将音频提前 3 秒)</p>
|
||||
<pre class="wrap-text "><code class="language-bash code-highlight"><span class="code-line">$ ffmpeg <span class="token parameter variable">-i</span> input.mov <span class="token parameter variable">-itsoffset</span> <span class="token number">3</span> <span class="token parameter variable">-i</span> input.mov <span class="token parameter variable">-map</span> <span class="token number">1</span>:v <span class="token parameter variable">-map</span> <span class="token number">0</span>:a <span class="token parameter variable">-codec:a</span> copy <span class="token parameter variable">-codec:v</span> copy output.mov
|
||||
</span></code></pre>
|
||||
<!--rehype:className=wrap-text -->
|
||||
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="图片中的视频"><a aria-hidden="true" tabindex="-1" href="#图片中的视频"><span class="icon icon-link"></span></a>图片中的视频</h3><div class="wrap-body">
|
||||
<p>如果您有多个编号的图像 image1.jpg、image2.jpg... 像这样从它们创建一个视频</p>
|
||||
<pre class="wrap-text "><code class="language-bash code-highlight"><span class="code-line">$ ffmpeg <span class="token parameter variable">-f</span> image2 <span class="token parameter variable">-i</span> image%d.jpg video.mp4
|
||||
@ -154,6 +187,14 @@
|
||||
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="将视频拆分为图像"><a aria-hidden="true" tabindex="-1" href="#将视频拆分为图像"><span class="icon icon-link"></span></a>将视频拆分为图像</h3><div class="wrap-body">
|
||||
<pre class="language-bash"><code class="language-bash code-highlight"><span class="code-line">$ ffmpeg <span class="token parameter variable">-i</span> video.mp4 image%d.jpg
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="wrap h3body-not-exist col-span-3"><div class="wrap-header h3wrap"><h3 id="转换为-gif"><a aria-hidden="true" tabindex="-1" href="#转换为-gif"><span class="icon icon-link"></span></a>转换为 Gif</h3><div class="wrap-body">
|
||||
<!--rehype:wrap-class=col-span-3-->
|
||||
<pre class="wrap-text "><code class="language-bash code-highlight"><span class="code-line">$ ffmpeg <span class="token parameter variable">-ss</span> <span class="token number">2</span> <span class="token parameter variable">-t</span> <span class="token number">28</span> <span class="token parameter variable">-i</span> input.mp4 <span class="token punctuation">\</span>
|
||||
</span><span class="code-line"> <span class="token parameter variable">-vf</span> <span class="token string">"fps=10,scale=1080:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse"</span> <span class="token punctuation">\</span>
|
||||
</span><span class="code-line"> <span class="token parameter variable">-loop</span> <span class="token number">0</span> output.gif
|
||||
</span></code></pre>
|
||||
<!--rehype:className=wrap-text -->
|
||||
<p>有关更多信息,请参阅 <a href="https://superuser.com/a/556031">StackOverflow 问题</a></p>
|
||||
</div></div></div></div></div><div class="wrap h2body-not-exist"><div class="wrap-header h2wrap"><h2 id="另见"><a aria-hidden="true" tabindex="-1" href="#另见"><span class="icon icon-link"></span></a>另见</h2><div class="wrap-body">
|
||||
<ul>
|
||||
<li><a href="https://ffmpeg.org/">FFmpeg 官网地址</a> <em>(ffmpeg.org)</em></li>
|
||||
|
Reference in New Issue
Block a user