根据我自己的经验,如果您绝对希望不损失质量,那么--lossless是您想要的。
不确定,avconv
但是您键入的命令与我执行的命令相同FFmpeg
。在FFmpeg
您可以传递这样的参数:
ffmpeg -i INPUT.mkv -c:v libx265 -preset ultrafast -x265-params lossless=1 OUTPUT.mkv
x265
可以像这样指定大多数开关(没有值的选项)(除了那些仅CLI的x265
开关,那些开关只能直接与二进制一起使用)。
顺便说一句,我想分享一下我在x265
编码方面的经验。对于大多数视频(无论是WMV还是MPEG或AVC / H.264),我都使用crf=23
。x265
确定其余的参数,通常情况下它做得很好。
但是,经常在我承诺对视频进行整体转码之前,我会通过转换一小部分相关视频来测试我的设置。下面是一个示例,假设一个mkv文件,其中流0为视频,流1为DTS音频,流2为字幕:
ffmpeg -hide_banner \
-ss 0 \
-i "INPUT.mkv" \
-attach "COVER.jpg" \
-map_metadata 0 \
-map_chapters 0 \
-metadata title="TITLE" \
-map 0:0 -metadata:s:v:0 language=eng \
-map 0:1 -metadata:s:a:0 language=eng -metadata:s:a:0 title="Surround 5.1 (DTS)" \
-map 0:2 -metadata:s:s:0 language=eng -metadata:s:s:0 title="English" \
-metadata:s:t:0 filename="Cover.jpg" -metadata:s:t:0 mimetype="image/jpeg" \
-c:v libx265 -preset ultrafast -x265-params \
crf=22:qcomp=0.8:aq-mode=1:aq_strength=1.0:qg-size=16:psy-rd=0.7:psy-rdoq=5.0:rdoq-level=1:merange=44 \
-c:a copy \
-c:s copy \
-t 120 \
"OUTPUT.HEVC.DTS.Sample.mkv"
请注意,反斜杠信号线在一个长命令中中断,我这样做是为了帮助我跟踪复杂的CLI输入的各个位。在逐行解释之前,您只转换视频的一小部分的部分是第二行和倒数第二行:-ss 0
表示在开始解码输入之前先搜寻0秒,然后-t 120
表示停止写入输出120秒后。您还可以使用hh:mm:ss或hh:mm:ss.sss时间格式。
现在逐行:
-hide_banner
防止FFmpeg
在启动时显示构建信息。我只是不想在控制台中向上滚动时看到它;
-ss 0
在开始解码输入之前先寻找0秒。请注意,如果该参数给出后输入文件和之前的输出文件,它成为一个输出选项,并告诉ffmpeg
解码和忽略输入直到x秒,然后开始写输出。作为输入选项,它不太准确(因为在大多数容器格式中查找都不准确),但是几乎不需要时间。作为输出选项,它非常精确,但是在指定的时间之前需要花费大量时间来解码所有流,并且出于测试目的,您不想浪费时间。
-i "INPUT.mkv"
:指定输入文件;
-attach "COVER.jpg"
:在输出中附加封面(缩略图图片,海报等)。封面通常显示在文件浏览器中。
-map_metadata 0
:从输入0复制所有元数据,在该示例中,元数据仅是输入;
-map_chapters 0
:从输入0复制章节信息(如果有);
-metadata title="TITLE"
:设置视频标题;
-map 0:0 ...
:映射输入0的流0,这意味着我们希望将输入中的第一个流写入输出。由于此流是视频流,因此它是输出中的第一个视频流,因此是流说明符。将其语言标签设置为英语;:s:v:0
-map 0:1 ...
:与第8行类似,映射第二个流(DTS音频),并设置其语言和标题(以便从播放器中进行选择时更容易识别);
-map 0:2 ...
:类似于第9行,除了此流是字幕之外;
-metadata:s:t:0 ...
:设置封面的元数据。这是mkv容器格式所必需的;
-c:v libx265 ...
:视频编解码器选项。这么长时间,我已将其分为两行。此设置适用于高质量的模糊视频(1080p),且渐变条带最小(x265很烂)。这很可能是DVD,电视节目和电话视频的滥杀滥伤。该设置大部分是从Doom9帖子中窃取的;
crf=22:...
:视频编解码器参数的延续。参见上面提到的论坛帖子;
-c:a copy
:通过音频复制;
-c:s copy
:复制字幕;
-t 120
:120秒后停止写入输出,这为我们提供了2分钟的剪辑,可预览转码质量;
"OUTPUT.HEVC.DTS.Sample.mkv"
:输出文件名。我用视频编解码器和主要音频编解码器标记文件名。
ew。这是我的第一个答案,因此,如果有任何遗漏,请发表评论。我不是视频制作专家,我只是一个懒惰的人,懒得将光盘放入播放器来观看电影。
PS。也许这个问题属于别的地方,因为它与Unix&Linux无关。
--lossless
如果文件解码了以前的有损编解码器,然后对它所做的无损解码进行了编码,则实际上可能会放大文件。质量将保持与输入完全相同。