<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans">
	<id>https://wiki.fiveyellowmice.com/index.php?action=history&amp;feed=atom&amp;title=%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8_FFmpeg_%E8%BF%9B%E8%A1%8C%E8%A7%86%E9%A2%91%E8%BD%AC%E7%A0%81%3A%E8%BD%AC%E7%A0%81%E6%97%B6%E8%83%BD%E9%A1%BA%E4%BE%BF%E4%B8%80%E8%B5%B7%E5%81%9A%E7%9A%84%E4%BA%8B%E6%83%85</id>
	<title>如何使用 FFmpeg 进行视频转码:转码时能顺便一起做的事情 - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.fiveyellowmice.com/index.php?action=history&amp;feed=atom&amp;title=%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8_FFmpeg_%E8%BF%9B%E8%A1%8C%E8%A7%86%E9%A2%91%E8%BD%AC%E7%A0%81%3A%E8%BD%AC%E7%A0%81%E6%97%B6%E8%83%BD%E9%A1%BA%E4%BE%BF%E4%B8%80%E8%B5%B7%E5%81%9A%E7%9A%84%E4%BA%8B%E6%83%85"/>
	<link rel="alternate" type="text/html" href="https://wiki.fiveyellowmice.com/index.php?title=%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8_FFmpeg_%E8%BF%9B%E8%A1%8C%E8%A7%86%E9%A2%91%E8%BD%AC%E7%A0%81:%E8%BD%AC%E7%A0%81%E6%97%B6%E8%83%BD%E9%A1%BA%E4%BE%BF%E4%B8%80%E8%B5%B7%E5%81%9A%E7%9A%84%E4%BA%8B%E6%83%85&amp;action=history"/>
	<updated>2026-05-10T14:23:26Z</updated>
	<subtitle>本wiki的该页面的版本历史</subtitle>
	<generator>MediaWiki 1.34.1</generator>
	<entry>
		<id>https://wiki.fiveyellowmice.com/index.php?title=%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8_FFmpeg_%E8%BF%9B%E8%A1%8C%E8%A7%86%E9%A2%91%E8%BD%AC%E7%A0%81:%E8%BD%AC%E7%A0%81%E6%97%B6%E8%83%BD%E9%A1%BA%E4%BE%BF%E4%B8%80%E8%B5%B7%E5%81%9A%E7%9A%84%E4%BA%8B%E6%83%85&amp;diff=52&amp;oldid=prev</id>
		<title>FiveYellowMice：添加导航栏</title>
		<link rel="alternate" type="text/html" href="https://wiki.fiveyellowmice.com/index.php?title=%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8_FFmpeg_%E8%BF%9B%E8%A1%8C%E8%A7%86%E9%A2%91%E8%BD%AC%E7%A0%81:%E8%BD%AC%E7%A0%81%E6%97%B6%E8%83%BD%E9%A1%BA%E4%BE%BF%E4%B8%80%E8%B5%B7%E5%81%9A%E7%9A%84%E4%BA%8B%E6%83%85&amp;diff=52&amp;oldid=prev"/>
		<updated>2016-03-30T03:55:57Z</updated>

		<summary type="html">&lt;p&gt;添加导航栏&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh-Hans&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;2016年3月30日 (三) 03:55的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;第1行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第1行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{如何使用 FFmpeg 进行视频转码:导航栏}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;虽然这篇教程的主要内容是视频转码，但除了将文件在各种封装格式、编码中转换以外，一些其他的调整也是很有用的。&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;虽然这篇教程的主要内容是视频转码，但除了将文件在各种封装格式、编码中转换以外，一些其他的调整也是很有用的。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>FiveYellowMice</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.fiveyellowmice.com/index.php?title=%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8_FFmpeg_%E8%BF%9B%E8%A1%8C%E8%A7%86%E9%A2%91%E8%BD%AC%E7%A0%81:%E8%BD%AC%E7%A0%81%E6%97%B6%E8%83%BD%E9%A1%BA%E4%BE%BF%E4%B8%80%E8%B5%B7%E5%81%9A%E7%9A%84%E4%BA%8B%E6%83%85&amp;diff=27&amp;oldid=prev</id>
		<title>FiveYellowMice：创建页面，内容为“虽然这篇教程的主要内容是视频转码，但除了将文件在各种封装格式、编码中转换以外，一些其他的调整也是很有用的。  在...”</title>
		<link rel="alternate" type="text/html" href="https://wiki.fiveyellowmice.com/index.php?title=%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8_FFmpeg_%E8%BF%9B%E8%A1%8C%E8%A7%86%E9%A2%91%E8%BD%AC%E7%A0%81:%E8%BD%AC%E7%A0%81%E6%97%B6%E8%83%BD%E9%A1%BA%E4%BE%BF%E4%B8%80%E8%B5%B7%E5%81%9A%E7%9A%84%E4%BA%8B%E6%83%85&amp;diff=27&amp;oldid=prev"/>
		<updated>2016-03-29T12:56:01Z</updated>

		<summary type="html">&lt;p&gt;创建页面，内容为“虽然这篇教程的主要内容是视频转码，但除了将文件在各种封装格式、编码中转换以外，一些其他的调整也是很有用的。  在...”&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;虽然这篇教程的主要内容是视频转码，但除了将文件在各种封装格式、编码中转换以外，一些其他的调整也是很有用的。&lt;br /&gt;
&lt;br /&gt;
在这一章中，我们将学到许多具有各种功能的[[如何使用_FFmpeg_进行视频转码:运行#“选项”与“参数”|命令行选项]]，这些选项都需要加在整条命令的输出文件名之前。&lt;br /&gt;
&lt;br /&gt;
万变不离其宗，在前面介绍的[[如何使用_FFmpeg_进行视频转码:运行#查看帮助|查看帮助]]一节中学到的 &amp;lt;code&amp;gt;ffmpeg -help&amp;lt;/code&amp;gt; 命令仍然是非常实用的，本章也将一直围绕它的输出来进行。所以，在开始阅读第一节之前，先打开终端，执行一下 &amp;lt;code&amp;gt;ffmpeg -help&amp;lt;/code&amp;gt; 吧！&lt;br /&gt;
&lt;br /&gt;
== 音频 ==&lt;br /&gt;
&lt;br /&gt;
我们在 &amp;lt;code&amp;gt;ffmpeg -help&amp;lt;/code&amp;gt; 的输出中能找到这样一段信息：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Audio options:&lt;br /&gt;
-aframes number     set the number of audio frames to output&lt;br /&gt;
-aq quality         set audio quality (codec-specific)&lt;br /&gt;
-ar rate            set audio sampling rate (in Hz)&lt;br /&gt;
-ac channels        set number of audio channels&lt;br /&gt;
-an                 disable audio&lt;br /&gt;
-acodec codec       force audio codec (&amp;#039;copy&amp;#039; to copy stream)&lt;br /&gt;
-vol volume         change audio volume (256=normal)&lt;br /&gt;
-af filter_graph    set audio filters&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
这些就是关于音频的选项了，由于有些东西涉及的知识太多，我在这里只介绍比较常用且简单的 &amp;lt;code&amp;gt;-ar&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-an&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-vol&amp;lt;/code&amp;gt; 这几个选项。（ &amp;lt;code&amp;gt;-acodec&amp;lt;/code&amp;gt; 早就讲过了，不是吗？）&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;-ar&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
如上面所说， &amp;lt;code&amp;gt;-ar&amp;lt;/code&amp;gt; 选项后面还要跟一个叫 &amp;lt;code&amp;gt;rate&amp;lt;/code&amp;gt; 的参数，不过参数叫什么名字对我们来说不重要，我们只要知道后面要有一个参数就可以了。这个参数是音频的[https://zh.wikipedia.org/wiki/%E9%87%87%E6%A0%B7%E7%8E%87 采样率]，以 Hz 为单位。通常来说，采样率越大，音质越好。电话的采样率通常是 8000 Hz ，普通的录音笔通常是 32000 Hz ，一般的 MP3 音乐是 44100 Hz ，稍高品质的音乐是 48000 Hz ，再高的采样率我们平常就不容易接触到了。&lt;br /&gt;
&lt;br /&gt;
以下是一个将音频文件 &amp;lt;code&amp;gt;input.mp3&amp;lt;/code&amp;gt; 转换为 [https://zh.wikipedia.org/wiki/Ogg Ogg] 封装格式， [https://zh.wikipedia.org/wiki/Vorbis Vorbis] 编码，并且指定音频采样率为 32000 Hz 的例子：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
ffmpeg -i input.mp3 -c:a libvorbis -ar 32000 output.ogg&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{注意|在 FFmpeg 中使用 Vorbis 编码时，编码器应指定为 &amp;lt;code&amp;gt;libvorbis&amp;lt;/code&amp;gt; 而不是 &amp;lt;code&amp;gt;vorbis&amp;lt;/code&amp;gt; ，这是两个不同的编码器，而后者还处于不完善的状态。}}&lt;br /&gt;
&lt;br /&gt;
{{提示|如果你喜欢的话，数字 &amp;lt;code&amp;gt;32000&amp;lt;/code&amp;gt; 可以简写为 &amp;lt;code&amp;gt;32k&amp;lt;/code&amp;gt; ，因为 &amp;quot;k&amp;quot; 就相当与“千”。}}&lt;br /&gt;
&lt;br /&gt;
{{注意|采样率只能变小，不能变大。当然你要是指定一个比原来大的采样率也没人阻止你，不过音质不会有任何的提升就是了。原理跟你把一张分辨率很小的图片拉大一样，画质没有任何提升。}}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;-an&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
这个其实没什么好讲的，它就是在进行视频转码的时候，将音频给去除，这样就会得到一个没有声音的视频。&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;-vol&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
这个选项有一个参数，用来指定相对与原来的文件的音量大小。不过注意，标准的音量并不是 100 ，而是 256 ，也就是说，我指定了 &amp;lt;code&amp;gt;-vol 256&amp;lt;/code&amp;gt; 就是原来的音量不变（跟没指定一样）。&lt;br /&gt;
&lt;br /&gt;
下面的例子是将音量减小为原来的一半：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
ffmpeg -i input.mp3 -c:a libvorbis -vol 128 output.ogg&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 视频 ==&lt;br /&gt;
&lt;br /&gt;
在 &amp;lt;code&amp;gt;ffmpeg -help&amp;lt;/code&amp;gt; 的输出中，我们也能找到这样一段信息：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Video options:&lt;br /&gt;
-vframes number     set the number of video frames to output&lt;br /&gt;
-r rate             set frame rate (Hz value, fraction or abbreviation)&lt;br /&gt;
-s size             set frame size (WxH or abbreviation)&lt;br /&gt;
-aspect aspect      set aspect ratio (4:3, 16:9 or 1.3333, 1.7777)&lt;br /&gt;
-bits_per_raw_sample number  set the number of bits per raw sample&lt;br /&gt;
-vn                 disable video&lt;br /&gt;
-vcodec codec       force video codec (&amp;#039;copy&amp;#039; to copy stream)&lt;br /&gt;
-timecode hh:mm:ss[:;.]ff  set initial TimeCode value.&lt;br /&gt;
-pass n             select the pass number (1 to 3)&lt;br /&gt;
-vf filter_graph    set video filters&lt;br /&gt;
-ab bitrate         audio bitrate (please use -b:a)&lt;br /&gt;
-b bitrate          video bitrate (please use -b:v)&lt;br /&gt;
-dn                 disable data&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
同样的，实用为先，我在这里只挑 &amp;lt;code&amp;gt;-r&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-s&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-vn&amp;lt;/code&amp;gt; 这几个选项来讲。&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;-r&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;-r&amp;lt;/code&amp;gt; 选项可以指定视频的[https://zh.wikipedia.org/wiki/%E5%B8%A7%E7%8E%87 帧率]，其参数的单位是 Hz ，也就是我们平常所说的“帧每秒”（ FPS ）。比如 &amp;lt;code&amp;gt;-r 24&amp;lt;/code&amp;gt; 即代表输出视频的帧率为每秒 24 帧。&lt;br /&gt;
&lt;br /&gt;
当然，视频的帧率跟音频的采样率一样，只能变小不能变大。&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;-s&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
这个选项可以指定视频的尺寸，以像素为单位。这个选项的参数由 &amp;lt;code&amp;gt;宽度x高度&amp;lt;/code&amp;gt; 的格式填写。比如如果要把视频转为 720P （也就是宽度 1280 像素，高度 720 像素），就写上 &amp;lt;code&amp;gt;-s 1280x720&amp;lt;/code&amp;gt; 。没错，中间用小写字母 &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; 分隔两个数字。&lt;br /&gt;
&lt;br /&gt;
下面的例子会将输出文件视频的帧率指定为 15 帧每秒，画面尺寸 1280x720 ：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
ffmpeg -i input.mp4 -r 15 -s 1280x720 output.mkv&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;-vn&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
与 &amp;lt;code&amp;gt;-an&amp;lt;/code&amp;gt; 选项一样，在命令中加入了这个选项之后，视频内容便会被去除。也就是说，只把音频剥离出来。比如，把 &amp;lt;code&amp;gt;video.mp4&amp;lt;/code&amp;gt; 这个视频中的音频提取出来，保存为 &amp;lt;code&amp;gt;audio.mp3&amp;lt;/code&amp;gt; ，指定音频编码为 &amp;lt;code&amp;gt;mp3&amp;lt;/code&amp;gt; ，将使用这样一个命令：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
ffmpeg -i video.mp4 -vn -c:a mp3 audio.mp3&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{提示|MP3 封装格式的默认音频编码已经是 &amp;lt;code&amp;gt;mp3&amp;lt;/code&amp;gt; ，我在这里写 &amp;lt;code&amp;gt;-c:a mp3&amp;lt;/code&amp;gt; 其实是多此一举。}}&lt;br /&gt;
&lt;br /&gt;
== 整体 ==&lt;br /&gt;
&lt;br /&gt;
除了仅仅针对媒体流的选项以外，还有一些针对整个媒体文件的调整选项。那么我们先在 &amp;lt;code&amp;gt;ffmpeg -help&amp;lt;/code&amp;gt; 的输出中找出这样一段内容：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Per-file main options:&lt;br /&gt;
-f fmt              force format&lt;br /&gt;
-c codec            codec name&lt;br /&gt;
-codec codec        codec name&lt;br /&gt;
-pre preset         preset name&lt;br /&gt;
-map_metadata outfile[,metadata]:infile[,metadata]  set metadata information of &lt;br /&gt;
outfile from infile&lt;br /&gt;
-t duration         record or transcode &amp;quot;duration&amp;quot; seconds of audio/video&lt;br /&gt;
-to time_stop       record or transcode stop time&lt;br /&gt;
-fs limit_size      set the limit file size in bytes&lt;br /&gt;
-ss time_off        set the start time offset&lt;br /&gt;
-sseof time_off     set the start time offset relative to EOF&lt;br /&gt;
-seek_timestamp     enable/disable seeking by timestamp with -ss&lt;br /&gt;
-timestamp time     set the recording timestamp (&amp;#039;now&amp;#039; to set the current time)&lt;br /&gt;
-metadata string=string  add metadata&lt;br /&gt;
-target type        specify target file type (&amp;quot;vcd&amp;quot;, &amp;quot;svcd&amp;quot;, &amp;quot;dvd&amp;quot;, &amp;quot;dv&amp;quot; or &amp;quot;dv5&lt;br /&gt;
0&amp;quot; with optional prefixes &amp;quot;pal-&amp;quot;, &amp;quot;ntsc-&amp;quot; or &amp;quot;film-&amp;quot;)&lt;br /&gt;
-apad               audio pad&lt;br /&gt;
-frames number      set the number of frames to output&lt;br /&gt;
-filter filter_graph  set stream filtergraph&lt;br /&gt;
-filter_script filename  read stream filtergraph description from a file&lt;br /&gt;
-reinit_filter      reinit filtergraph on input parameter changes&lt;br /&gt;
-discard            discard&lt;br /&gt;
-disposition        disposition&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
我在这里将会挑选 &amp;lt;code&amp;gt;-c&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-t&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-ss&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-metadata&amp;lt;/code&amp;gt; 这几个选项来讲。&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;-c&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
其实这个选项我们在[[如何使用 FFmpeg 进行视频转码:开始转码#指定编码器]]的最后已经讲过了，不过我觉得有必要再做一次详细的说明。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;-c&amp;lt;/code&amp;gt; 选项用来指定输出文件的编码，但跟 &amp;lt;code&amp;gt;-vcodec&amp;lt;/code&amp;gt; 和 &amp;lt;code&amp;gt;-acodec&amp;lt;/code&amp;gt; 不同的是，它指定的是全部媒体流的编码而不是单独一个视频流或音频流。在通常情况下，这是行不通的，因为视频编码和音频编码是两种不同的东西，怎么能是同一个呢？&lt;br /&gt;
&lt;br /&gt;
但是，我们可以通过在 &amp;lt;code&amp;gt;-c&amp;lt;/code&amp;gt; 后面紧挨着加上 &amp;lt;code&amp;gt;:v&amp;lt;/code&amp;gt; 成为 &amp;lt;code&amp;gt;-c:v&amp;lt;/code&amp;gt; 来表示指定视频编码，紧挨着加上 &amp;lt;code&amp;gt;:a&amp;lt;/code&amp;gt; 成为 &amp;lt;code&amp;gt;-c:a&amp;lt;/code&amp;gt; 来表示指定音频编码。也就跟 &amp;lt;code&amp;gt;-vcode&amp;lt;/code&amp;gt; 和 &amp;lt;code&amp;gt;-acodec&amp;lt;/code&amp;gt; 一样了。不过 &amp;lt;code&amp;gt;-c:v&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-c:a&amp;lt;/code&amp;gt; 的写法比 &amp;lt;code&amp;gt;-vcodec&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-acodec&amp;lt;/code&amp;gt; 的写法要短，所以我喜欢用前者。&lt;br /&gt;
&lt;br /&gt;
当然，单独的 &amp;lt;code&amp;gt;-c&amp;lt;/code&amp;gt; 也是有用的，有什么用呢？&lt;br /&gt;
&lt;br /&gt;
还记得在编码器的地方指定 &amp;lt;code&amp;gt;copy&amp;lt;/code&amp;gt; 来让 FFmpeg 不重新进行编码吗？众所周知，大部分视频或音频编码都是[https://zh.wikipedia.org/wiki/%E6%9C%89%E6%8D%9F%E6%95%B0%E6%8D%AE%E5%8E%8B%E7%BC%A9 有损压缩]，重新进行一次编码不但费时费力，还会产生无法挽回的画质/音质损失，损失一两次通常是人类很难判别的，但是次数多了差别就大了。所以，我们要尽量避免重新编码，能用 &amp;lt;code&amp;gt;copy&amp;lt;/code&amp;gt; 作为“编码器”的时候就尽量使用它。&lt;br /&gt;
&lt;br /&gt;
让视频不重新编码的时候使用 &amp;lt;code&amp;gt;-c:v copy&amp;lt;/code&amp;gt; ，让音频不重新编码的时候使用 &amp;lt;code&amp;gt;-c:a copy&amp;lt;/code&amp;gt; 。那么在两个都要不重新编码的时候，就不用把这两条选项都写上去了，只要 &amp;lt;code&amp;gt;-c copy&amp;lt;/code&amp;gt; 就足够。&lt;br /&gt;
&lt;br /&gt;
下面是一些例子：&lt;br /&gt;
&lt;br /&gt;
# 将视频尺寸转换为 `1280x720` ，其他不变。&amp;lt;br&amp;gt;因为视频的尺寸变了，所以视频不得不重新编码，但音频不用。&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;ffmpeg -i input.mp4 -c:v h264 -c:a copy -s 1280x720 output.mp4&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# 将音频的编码转换为 `libvorbis` ，其他不变。&amp;lt;br&amp;gt;音频的编码肯定得变，但是视频不用。&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;ffmpeg -i input.mp4 -c:v copy -c:a libvorbis output.mp4&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# 仅仅将 MP4 封装格式转换为 Matroska 封装格式。&amp;lt;br&amp;gt;只是封装格式变了，视频和音频都不需要重新编码。&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;ffmpeg -i input.mp4 -c copy output.mkv&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;-t&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
这个选项用来指定输出文件的持续时间，以秒为单位，比如我想截取 &amp;lt;code&amp;gt;full.mp4&amp;lt;/code&amp;gt; 这个视频的前 30 秒并保存为 &amp;lt;code&amp;gt;segment.mp4&amp;lt;/code&amp;gt; ，就可以使用这个命令：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
ffmpeg -i full.mp4 -c copy -t 30 segment.mp4&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{注意|看到了 &amp;lt;code&amp;gt;-c copy&amp;lt;/code&amp;gt; 了吗？因为我们只是进行截取，所以不需要进行重新编码。能不重新编码就尽量不要重新编码。}}&lt;br /&gt;
&lt;br /&gt;
这个选项的参数以秒为单位，但这并不意味着 5 分钟你就得写 &amp;lt;code&amp;gt;300&amp;lt;/code&amp;gt; ， 1 个小时你就得写 &amp;lt;code&amp;gt;3600&amp;lt;/code&amp;gt; ， 1 小时 23 分钟 45 秒你就得先拿出计算器算出 1&amp;amp;#x00d7;3600+23&amp;amp;#x00d7;60+45=5025 再写上 &amp;lt;code&amp;gt;5025&amp;lt;/code&amp;gt; 。  &lt;br /&gt;
事实上，你只要写 &amp;lt;code&amp;gt;5:00&amp;lt;/code&amp;gt; 就可以表示 5 分钟， &amp;lt;code&amp;gt;1:23:45&amp;lt;/code&amp;gt; 就可以表示 1 小时 23 分钟 45 秒。&lt;br /&gt;
&lt;br /&gt;
你也可以写小数点，比如 &amp;lt;code&amp;gt;10.0268&amp;lt;/code&amp;gt; 或者 &amp;lt;code&amp;gt;1:23:45.678&amp;lt;/code&amp;gt; 。&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;-ss&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
这个选项用来指定输出文件相对于输入文件的开始时间，比如我想把 &amp;lt;code&amp;gt;full.mp4&amp;lt;/code&amp;gt; 这个视频的前 30 秒剪掉并把剩下的保存为 &amp;lt;code&amp;gt;segment.mp4&amp;lt;/code&amp;gt; ，就可以使用这个命令：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
ffmpeg -i full.mp4 -c copy -ss 30 segment.mp4&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;-ss&amp;lt;/code&amp;gt; 选项也可以跟 &amp;lt;code&amp;gt;-t&amp;lt;/code&amp;gt; 选项配合使用以截取媒体文件的一部分，比如如果我想截取 &amp;lt;code&amp;gt;full.mp4&amp;lt;/code&amp;gt; 的 12 分 25 秒至 20 分 27 秒，保存为 &amp;lt;code&amp;gt;segment.mp4&amp;lt;/code&amp;gt; ，使用这条命令。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
ffmpeg -i full.mp4 -c copy -ss 12:25 -t 8:02 segment.mp4&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{注意|&amp;lt;code&amp;gt;-t&amp;lt;/code&amp;gt; 选项后面的参数并不是结束时间而是持续时间，所以在上面的例子中我写的不是 &amp;lt;code&amp;gt;20:27&amp;lt;/code&amp;gt; 而是 20:27-12:25 的结果， &amp;lt;code&amp;gt;8:02&amp;lt;/code&amp;gt; 。}}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;-metadata&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
这个选项说的很明白了，它所更改的就是输出文件的[https://zh.wikipedia.org/wiki/%E5%85%83%E6%95%B0%E6%8D%AE 元数据]，比如一首歌的标题、艺术家、专辑。比如 &amp;lt;code&amp;gt;-metadata title=&amp;quot;我是标题&amp;quot;&amp;lt;/code&amp;gt; 就会把输出文件的标题元数据改为 &amp;lt;code&amp;gt;我是标题&amp;lt;/code&amp;gt; 。 &amp;lt;code&amp;gt;-metadata&amp;lt;/code&amp;gt; 选项可以多次指定以更改多个元数据。&lt;br /&gt;
&lt;br /&gt;
举个例子，把 `no metadata.mp3` 的标题改成 `一首歌` ，艺术家改成 `一位艺术家` ，专辑改成 `一张专辑` ，然后保存为 `with metadata.mp3` ：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
ffmpeg -i &amp;quot;no metadata.mp3&amp;quot; -c copy -metadata title=&amp;quot;一首歌&amp;quot; -metadata artist=&amp;quot;一位艺术家&amp;quot; -metadata album=&amp;quot;一张专辑&amp;quot; &amp;quot;with metadata.mp3&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{提示|还记得吗？在文件名包含空格或其他特殊字符的时候，必须用半角双引号包起来。}}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;我在命令中所写的选项和参数，顺序有关系吗？&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
这样的问题可能发自一个对命令行不熟悉的用户。那么我就来解答一下：在 FFmpeg 中，以我们目前的知识，除了 &amp;lt;code&amp;gt;-i 输入文件名&amp;lt;/code&amp;gt; 必须在仅次于 &amp;lt;code&amp;gt;ffmpeg&amp;lt;/code&amp;gt; 的最前面以及输出文件名必须在最后面以外，选项的顺序没有关系。&lt;br /&gt;
&lt;br /&gt;
也就是说，以下两条命令是没有任何区别的。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
ffmpeg -i input.mp4 -c:v vp9 -c:a opus -s 1280x720 -ss 10 -t 1:00 output.webm&lt;br /&gt;
ffmpeg -i input.mp4 -t 1:00 -c:v vp9 -s 1280x720 -c:a opus -ss 10 output.webm&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
但是注意了，一个选项跟这个选项的的参数是不可分开的，也就是说，音频编码必须跟在 &amp;lt;code&amp;gt;-c:a&amp;lt;/code&amp;gt; 后面，持续时间必须跟在 &amp;lt;code&amp;gt;-t&amp;lt;/code&amp;gt; 后面……下面这条命令是&amp;#039;&amp;#039;&amp;#039;错误&amp;#039;&amp;#039;&amp;#039;且&amp;#039;&amp;#039;&amp;#039;无法&amp;#039;&amp;#039;&amp;#039;被正常运行的：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
ffmpeg -i input -c:v -ss -t 10 -ss -c:a 1280x720 vp9 1:00 opus -s output.webm&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
看完了这些说明，我想你就应该能够熟练地掌握命令行的规则了。而在接下来的[[如何使用 FFmpeg 进行视频转码:字幕|下一章]]中，我们将会介绍有关字幕的东西。&lt;/div&gt;</summary>
		<author><name>FiveYellowMice</name></author>
		
	</entry>
</feed>