我只是想将任何格式的文件转换为任何格式(目前,我需要将MKV转换为MP4-h264),而又不损失质量。我不想调整视频的大小(缩放),我不想更改其长宽比,也不想失去质量(这很重要);我想要的只是“更改格式”,仅此而已。原因:我的DVD播放器无法识别AVI或MP4以外的任何格式。我不在乎文件大小,除非输入文件和输出文件之间的差异非常大。所以,我该怎么做?

我已经尝试过WinFF,Arista,Format Junkie之类的程序,但是它们的预设总是会更改一些我不想更改的内容(大小,规格比率等)。我不太确定,但是我认为最好的方法是使用纯ffmpeg命令。但是如何?

顺便说一下,这里是Ubuntu 13.04(64位)。伙计们,谢谢您的宝贵时间。

评论

怎么样noobslab.com/2013/06/ff-multi-converter-for-ubuntu.html

生动有趣,似乎很有趣。我会尝试的。让我们看看它能做什么。谢谢。 :)

Dumindu Mahawela,我按了您提供的链接,并遇到了以下命令:“ avconv -i input.mkv -codec copy output.mp4”。这对我来说就像一种魅力。谢谢你的时间。 :)

将其发布为答案。

#1 楼

如果您只想将MKV转换为MP4,则只需更换容器即可节省质量和大量时间。这两个都是相同内容的包装,因此CPU只需做一点工作。不要重新编码,因为这肯定会失去质量。

使用ffmpeg非常简单:



 ffmpeg -i LostInTranslation.mkv -codec copy LostInTranslation.mp4
 


这里,您正在复制视频编解码器和音频编解码器,因此没有任何编码。

提示:要转换所有MKV当前目录中的文件,在终端中运行一个简单的循环:

 for i in *.mkv; do
    ffmpeg -i "$i" -codec copy "${i%.*}.mp4"
done
 


用于将来的转换,例如从AVI到MP4,请查看HandBrake。

评论


Sayem,我尝试了您的建议,但得到了以下结果:“ [mp4 @ 0x134da20]应用程序向流0中的混合器提供了无效的,非单调递增的dts:-2> = -2 av_interleaved_write_frame():无效的参数”。无论如何,我可以通过以下命令获得所需的信息:“ avconv -i input.mkv -codec copy output.mp4”,它与您建议的非常相似。非常感谢您的宝贵时间。 :)

–user229552
13年12月28日在18:45

当文件名中有空格时,for循环即消失。

–EaterOfCode
2014-09-26 10:54

并且不要忘记-movflags + faststart,因为mp4很烂;否则,您将无法播放部分文件(文件末尾尚未写入)。

– Peter Cordes
2015年1月15日在2:44

Windows用户可能需要在输入文件之后添加-strict实验标志才能使其正常工作:ffmpeg -i LostInTranslation.mkv -strict实验-codec复制LostInTranslation.mp4。根据此错误报告,-strict选项必须在输入文件之后指定;否则,它将不会识别您指定了该选项。我花了好一会儿才找到答案。

–亚历山大
19年2月18日在8:20

@Alexander我在Windows 10上,未使用-strict标志,并且没有问题。仅供参考。无论如何,该错误报告的发布时间为9年,并且在9年前已关闭。

– Sabuncu
20-3-21在15:10

#2 楼

这是您没有尝试过的。手刹

评论


TheHerk,我无法安装。添加了PPA,更新了源代码,试图安装“ handbrake”软件包,但是它说没有要安装的软件包。去搞清楚!

–user229552
13年12月28日在19:36

没关系,TheHerk。我找到了正确的包装名称:handbrake-gtk。安装了它,但不喜欢它。但是还是谢谢你。 :)

–user229552
13年12月28日在20:05

如OP的问题所述,手刹不能进行无损视频转换。它没有视频的“复制”选项。它只能进行转码,这总是会导致质量下降。

–库尔特·菲茨纳
20-04-22在2:08

刹车确实没有任何无损选择,但是第二句话绝对是不正确的。您可以将一种数据类型转换为另一种数据类型,而不会降低质量,只要第二种可以存储比第一种更多的信息即可。 video.stackexchange.com/a/21623

–TheHerk
20-4-23在17:30