【发布时间】:2016-03-30 06:30:03
【问题描述】:
有没有办法告诉 ffmpeg 和/或 avconv 使用与输入编码的编解码器相同的编解码器进行输出,但进行转码?
我正在寻找类似的东西:
ffmpeg -i input.mp4 -vcodec same_as_input output.mp4
请注意,我不是在寻找 -vcodec copy,因为这会复制流而不进行转码。我希望它进行转码,但使用与输入文件编码相同的编解码器。
另外,如果可能的话,我希望每个可能的参数都相同,即:使用相同的比特率、帧大小等,从一个给定的输入文件中获取每个可能参数的值,而不是使用任何其他默认值。
上面的例子可能看起来很愚蠢,因为它过于简单(结果与复制相同),但想象一下我添加了一些处理,例如开始时间和长度,甚至更复杂的东西,例如添加叠加图像,但我想确保它使用与输入文件相同的编码器(可能还有相同的参数)进行编码。
【问题讨论】:
-
ffprobe 返回有关视频文件的信息,包括编解码器。您可以让程序或脚本解析其输出以检测原始编解码器并有条件地使用相同的编解码器进行转码。
-
见票#5081: A wish for ffmpeg to be able to reference input properties。你怎么知道比特率和其他选项不是次优的?你怎么知道制作文件的人知道他们在做什么或者正在使用一个健全的编码器实现?
-
@LordNeckbeard 您可能出于多种原因想要重现输入属性,无论它们是最佳还是好的。一个用例:我有一个视频文件在某些软件中触发了问题,我想提供示例文件,但它太长或包含私人内容,因此我无法按原样共享它,因此我需要制作一个具有相同属性的修改版本(因为我不知道哪个是产生问题的相关版本)
-
和另一个用例:您想对视频文件进行一些简单的修改(例如修剪)并且您知道它的属性“足够好”(因为质量看起来不错并且文件不是很大),因此您知道,通过保持相同的属性,即使不是最优的,它也会很好,并且您不必为所有事物找出最佳参数。
-
@cantelope 如果您可以共享一个示例脚本(它可以是单行吗?)用于对单个文件进行转码,例如,使用与输入相同的编解码器和比特率,我会接受作为答案:)
标签: ffmpeg