无质量损失的ffmpeg转换
当文件类型不是flv/mp4/webm时,我需要将所有视频转换为我的视频播放器(在网站中) 使用时:无质量损失的ffmpeg转换,ffmpeg,loss,Ffmpeg,Loss,当文件类型不是flv/mp4/webm时,我需要将所有视频转换为我的视频播放器(在网站中) 使用时:ffmpeg-I filename.mkv-sameq-ar 22050 filename.mp4: [h264@0x645ee0]解码MB 22 1时出错,字节流(8786) 我的观点是,当我需要将文件类型:.mkv和其他(jwplayer不支持)转换为flv/mp4而不丢失质量时,我应该做什么。不要使用 此选项不久前已从FFmpeg中删除。这意味着您使用的是过时的版本 使用libx264编码时
ffmpeg-I filename.mkv-sameq-ar 22050 filename.mp4
:
[h264@0x645ee0]解码MB 22 1时出错,字节流(8786)
我的观点是,当我需要将文件类型:.mkv和其他(jwplayer不支持)转换为flv/mp4而不丢失质量时,我应该做什么。不要使用
此选项不久前已从FFmpeg中删除。这意味着您使用的是过时的版本
使用libx264编码时,请使用-crf
选项。这是ffmepg使用的H.264视频编码器,如果可用,是MP4输出的默认编码器。有关这方面的更多信息,请参阅
获取最近的ffmpeg
转到页面并在那里获得一个构建。Linux、OS X和Windows都有选项。或者,您可以按照其中一种方法进行操作。由于FFmpeg开发非常活跃,因此始终建议您使用实用的最新版本
你将不得不接受一些质量损失
您可以使用libx264生成无损输出,但这可能会创建绝对巨大的文件,并且浏览器可能无法解码和/或JW Player支持(我从未尝试过)
好消息是,您可以创建一个大致在视觉上无损的视频。同样,文件可能有点大,但您需要在质量和文件大小之间做出选择
使用-crf
选择一个介于18到29之间的值。选择仍能提供可接受质量的最高数字。在视频中使用该值
其他事情
- 添加
。这将把moov原子从文件的末尾重新定位到开头。这将允许视频在下载过程中开始播放。否则,必须完全下载整个视频才能开始播放-movflags+faststart
- 添加
。这将确保色度子采样对所有玩家兼容。否则,-pix_fmt yuv420p
,默认情况下,根据几个因素,将尝试最小化或避免色度子采样,结果通常无法由非基于ffmpeg的播放器播放ffmpeg
使用
-qscale 0而不是-sameq(由FFMpeg删除):文件大小会增加,但会保持质量。对我来说,这是转换文件的最佳方式
ffmpeg -i {input} -vcodec copy {output}
我正在用python编写一个脚本,将多个.webm文件附加到一个.mp4文件中。我花了10到20秒的时间来转换一个5秒的块,使用:
ffmpeg -i {input} -qscale 0 copy {output}
有些文件夹的块数超过500个
现在,每个块只需不到一秒钟的时间。转换一段1:20:00长的视频花了我5分钟。回答解释如何在不重新编码的情况下复制(ffmpeg-i input.mkv-c copy-map 0 output.mp4)@mpromonet如果您想保留编解码器,-c copy
可以,但要转换编解码器并保持相同的质量,我必须使用-qscale 0
,就像我在回答中读到的那样。对我来说,一个简单的ffmpeg-I input_file.mkv output_file.mp4
完成了这个技巧。@ThiagoNegri将重新编码所有内容;使用“复制”可以潜在地避免这样做-qscale
,或者更准确地说-qscale:v
,应该只用于传统的MPEG系列:mjpeg、mpeg1video、mpeg2video、mpeg4等。它被使用-crf
的libx264和libx265忽略。@LordNeckbeard等等,如果您正在从mpeg4转换呢(例如mp4v)到H.264,两者都涉及?@Michael输入格式不重要:只有用于输出的编码器才重要。这是因为ffmpeg将把输入分解成原始格式,而不管输入格式如何。然后编码器将原始格式处理成输出。(当然,除非您使用-c copy
进行流复制,否则不会重新编码)。ffmpeg 4.2.1抛出黄色“请使用-q:a或-q:v,-qscale不明确”消息当使用-qscale 0
时,最好澄清CRF是什么,它做什么以及如何使用此参数。CRF代表恒定速率系数。引用ffmpeg文档:“CRF等级的范围是0到51,其中0是无损的,23是默认的,51是最差的质量。较低的值通常会导致更高的质量,主观理智范围是17到28。考虑17或18是视觉上的无损或几乎是这样。”有用的链接:@ AlexanderMosov有一个链接到wiki,你在我的答案中引用。
ffmpeg -i {input} -qscale 0 copy {output}