我现在使用FFMPEG几分钟,在第一次就此寻求帮助后,我能够发现我从那时起使用的命令行,用于将.MP4视频转换为.FLV:{{1 }。
结果简直令人惊叹!完美的视频和更少的空间。但是我尝试使用同一行来播放新视频并且无效。
这就是我所看到的:
ffmpeg -i namefile.mp4 -c:v libx264 -crf 19 destinationfile.flv
之后,我尝试了这些命令行
[libmp3lame @ 03eaf5a0] flv does not support that sample rate, choose from (44100, 22050, 11025).
没有成功。所以现在我只是不知道该怎么做才能将这个MP4文件转换为FLV文件,其尺寸更小并保持完美的图像,就像之前使用第一个代码行进行的其他转换一样。
感谢您的帮助!
答案 0 :(得分:3)
您遇到了几个问题,并且您已通过加入flv does not support that sample rate
解决了-ar
问题。我需要几条评论才能澄清,但是如果我理解正确的话,你的另一个问题是文件大小的输出仍然太大。
你提到FFmpeg: The ultimate Video and Audio Manipulation Tool解释了:
CRF可以是0到51之间的任何值,合理范围是17到23.越低,质量越好,文件越大。一般来说,最好的办法是尝试亲眼看看哪些看起来不错。考虑到您想要的结果文件大小以及您可以为较小的文件大小交换多少质量。这完全取决于你。
这意味着您需要选择仍然可以提供所需质量的最高CRF值。因此,而不是19,这是非常高的质量,尝试更高的价值。这并不意味着您必须对整个视频进行编码,以便大致了解特定crf值的外观。使用-ss
和-t
选项选择要编码的随机部分。此示例将跳过前2分30秒并编码10秒剪辑:
ffmpeg -ss 00:02:30 -i input -t 30 -c:v libx264 -preset medium -crf 24 output.mp4
如示例-ss
所示,-t
可以接受小时:分钟:秒或仅秒。
选择使用crf意味着您希望输出具有一定的质量,并且文件大小不太重要。如果情况正好相反,您希望输出为特定文件大小而质量不太重要,那么您需要使用双通道比特率模式而不是crf。您无法轻易知道crf的文件大小,但使用-b:v
的两遍编码可以让您提前选择文件大小。在此example中,所需输出为100 MB,输入持续时间为671秒(请参阅数学链接),因此命令将为:
ffmpeg -i input -c:v libx264 -preset medium -b:v 1092k -pass 1 -an -f mp4 -y NUL
ffmpeg -i input -c:v libx264 -preset medium -b:v 1092k -pass 2 -c:a libfaac -b:a 128k output.mp4
就个人而言,我很少使用双通道编码,因为我更喜欢我的视频集类似的质量(因此我更喜欢不同的文件大小)。
至于-3(当前的stackoverflow问题评级),我认为读者认为你的问题不清楚,因为你没有解释“没有成功”所以没有人知道实际问题是什么。直接,描述性,并提供所有有用的信息:特别是命令和控制台输出与您的下一个FFmpeg问题,你会得到更好,更快的答案。