我有很多 MPEG-TS 文件(.TS 容器但 H.264 视频),播放正常,但当你跳过前进/后退或快进时,它会非常缓慢并且变得像素化等。
我一直在尝试进行研究,我猜测他们使用很少的参考块进行编码(即从 DVB-S 卫星流中捕获)。
当我使用 Handbrake(.MP4 容器)重新编码它们时,它们播放得非常非常好,并且在视频中搜索是即时的,等等。
是否可以对我的 MPEG-TS 文件进行转码/重新编码,同时将质量损失降到最低?如果可以,我的最佳选择是什么?每个文件的速度约为 2 Mbps(即每小时 2 GB),但如果“最低质量损失”要求每个文件 10+ GB,我不想对它们进行重新编码。我希望保持视频大小相同。
有人能给我一些建议吗?
答案1
这可能是容器问题,将其复制到新的容器格式
avconv -i input.ts -c copy output.mp4
可能会解决您的问题。这将是 100% 无损的。如果这不起作用,crf 为 18 通常被认为是“视觉无损”;您可以在 HandBrake(在“视频”选项卡下)或使用 avconv 进行设置:
avconv -i input.ts -c:a copy -c:v libx264 -crf 18 -preset veryfast output.mp4
预设值为超快、超快、非常快、更快、快、中、慢、慢、非常慢。预设值越慢,文件越小(但编码时间会增加)。在我的个人实验中,我发现文件大小的最大下降是在超快和非常快之间,之后似乎增量更大。
注意:如果您愿意,ffmpeg 可以完成 avconv 可以做的所有事情,并且语法相同(只需用 ffmpeg 替换 avconv 的所有实例)。
脚注:您可能会发现这ffmpeg x264 编码指南有助于提供更多信息。
答案2
无需深入探讨视频编码的细节:当您的限制是特定的视频编解码器 (h.264) 或特定的比特率时,不存在“最低质量损失”之类的事情。限制因素始终存在 - 如果有办法保留更多质量,那么可以说,这将是视频编码的圣杯。
像 x264 这样的编码器能做的事情非常有限 – 您主要的“控制”旋钮将是“恒定速率因子”设置,它在某种程度上充当了“恒定质量”因子。除此之外,在使用一个特定编码器重新编码并保持相同的视觉/体验质量时,可以节省多少比特率存在技术限制。
当然,对于 XviD(一个简单的 MPEG 4 Part II 编码器)和当今最先进的 h.264 编码器 x264,您会得到不同的结果。然后您也可以尝试购买 Mainconcept h.264 编码器,看看使用它是否能在相同的平均比特率下获得更好的质量。
在视频编码中,你无论如何都要进行一些试验,因为它也取决于源材料。一场足球比赛的编码要比一轮斯诺克比赛更难。x264 中有一些选项允许针对某些类型(例如电影)进行调整,例如-tune film
FFmpeg 中的选项,但差异可能很小。
有关示例和更多信息,请参阅FFmpeg:终极视频和音频处理工具。
答案3
对于我的蓝光,如果我对 MPEG-TS 文件进行编码,我会使用 Handbrake High Profile,并使用具有以下设置的高级选项卡:RF 20
b-adapt=2:rc-lookahead=60:bframes=8:direct=auto:trellis=2:ref=16:subq=10:me=umh:merange=24:analyse=all
编码需要一段时间,但质量很难与蓝光区分。
如果你的目标相同尺寸这不会发生,因为这是不同的编解码器/压缩。文件大小和质量不是一回事。