我正在编写一个脚本,将MKV或AVI等视频文件转换成MP4,然后从web流媒体中准备它们。我希望我的输出使用H.264和AAC编解码器。
到目前为止,我的命令如下所示:
ffmpeg -i input.mkv -vcodec h264 -acodec aac -ab 128k -ac 2 -strict -2 output.mp4
然而,当编解码器已经是H.264时,它仍然对其进行多路复用,它表示:(H264->libx264)。
如果我将'-vcodec h264'替换为'-vcodec copy',当编解码器是H.264时,它的速度会快得多,但如果输入文件中有不同的编解码器,当然不会更改编解码器。
有没有一种方法让FFmpeg识别出编解码器几乎是相同的,从而不对视频流进行多路复用,但如果源不是H.264,仍然改变视频编解码器?
否。FFmpeg只能复制比特流或重新编码。如果你想保留某个编解码器,它无法猜测。您必须解析文件信息,然后决定是否要复制。
下面列出了一些如何做到这一点的示例:MKV到MP4代码转换脚本问题
基本上,你可以这样做(来自@evilsoup那里的无耻插头):
ffprobe input.mkv 2>&1 | sed -n '/Video:/s/.*: \([a-zA-Z0-9]*\).*/\1/p' | sed 1q'
小提示:尝试习惯指定所需的准确编码器。H264
实际上不是FFmpeg的编码器-它默认为libx264
。因此,最好使用-c:v libx264
。
还有一点:AAC
是FFMPEG内置的AAC编码器。像libfdk_aac
或libfaac
这样的第三方编码器提供VBR编码模式,质量通常优于aac
。
我是android编程的新手,这是一种抽象,我对ndk不太了解,但如果我是对的,有很多带有java包装的ffmpeg库可以直接使用。我可以将它们导入到我的项目中,但不知道如何使用它们通过它们执行ffmpeg命令。您能给我推荐任何特定的库,以及如何使用它们来执行ffmpeg命令吗?
我大致了解了TensorFlow图在评估它包含的之一时是如何评估的:该张量的或的执行将触发图中所需的所有级联计算计算该张量的值,因此,图中“导致它”的任何张量也将被计算,并且连接它们的任何操作都将被运行。 因此,如果我有一个包含张量out\u a的图,其计算涉及(可能在许多其他事情中)使用int\u b的操作,这反过来(最终)需要执行本身(最终)使用in的操作 将只评估、和一次:和的计算都使用的相
目标是从mkv生成与HLS兼容的MPEGTS片段,用复制视频,但转码音频。 但是,由于在输入查找()ffmpeg查找关键帧(对我来说,这似乎是最近的前一个关键帧),所以从关键帧开始,在大多数片段之前,我得到了N秒没有音频的视频。 可能的解决办法有: > 定义段偏移量/持续时间,以便它实际上与关键帧匹配;问题是我不知道如何快速提取关键帧及其偏移量列表 强制ffmpeg以某种方式搜索到适当的时间,并在
我这里有一段ffmpeg命令,第一张图片是gif,设置时长是4.29秒,我的音频文件是4.29秒,然后设置了动画,帧数是129帧,因为我后面设置帧率是30,30乘以4.29=129。但是最后生成的视频,第一个gif时间超过了1分钟,应该怎么改这个命令。 我的gif是2秒,一秒8帧的gif。
在调用Java run和C main方法之后,如何停止/取消一些FFmpeg的执行?
null ->-> 关于,我有以下一对: 实际上,对方法应用了相同的方法。因此,在执行方法之前,将执行其他或建议,再次调用方法。如果实体已经存在,则必须抛出异常,比如异常B,它必须在中处理 请注意,我有3点/3advices使用方法。它用来检查实体是否存在。 例如: 我需要更改pointcut声明以指示如下内容: 其中为: 为的方法执行before/around建议,但如果它的调用是从 类的其他建