- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有音频文件(想想~2h),我想从中切出很多片段(500+)和一个像这样的ffmpeg命令:
['ffmpeg', '-i', 'pipe:', '-filter_complex',
'[0]atrim=end=30.69:start=0.0[s0];
[0]atrim=end=34.31:start=31.18[s1];
[0]atrim=end=38.65:start=34.43[s2];
(... hundreds more)
[s37][s38][s39][s40][s41]concat=a=1:n=42:v=0[s42]', '-map', '[s42]']
使用 ffmpeg-python 构建的流映射:
Stream #0:0 (mp3float) -> atrim
(... hundreds more)
Stream #0:0 (mp3float) -> atrim
concat -> Stream #0:0 (libmp3lame)
现在这按预期工作了,但是我在本地需要大约 10 分钟的时间来处理我拥有的文件,而当我将它部署到云中的某个服务器时,大约需要一个小时。显然这绝对取决于机器,我肯定会在那里扩展速度,但我也想知道是否有办法用 ffmpeg 本身加快处理速度。
谢谢指点!
最佳答案
为什么要将文件提供给 ffmpeg
通过管道?如果您按路径提供输入,ffmpeg
将能够在文件内搜索并快速跳过必须丢弃的片段,而对于管道输入,它别无选择,只能按顺序扫描整个输入。
此外,当使用文件输入时,您可以利用 concat
demuxer使用流复制,显着节省解码和重新编码。
对于您的示例,concat 分离器的输入应如下所示(请注意,相同的文件名用于不同的片段):
cut.ffconcat
ffconcat version 1.0
file input.mp3
inpoint 0.0
outpoint 30.69
file input.mp3
inpoint 31.18
outpoint 34.31
...
ffmpeg
命令行:
ffmpeg -i cut.ffconcat -codec copy cut.mp3
在我的实验中(从一个 42 分钟长的 mp3 文件中剪切出 250 个 5 秒片段)运行时差异超过 3 倍:concat demuxer + 流复制方法花费了 36 秒,而你的 atrim
花费了 110 秒。 + concat
过滤解决方案。
但是请注意,使用 concat demuxer 方法时切割精度可能会更差(我怀疑它只会在音频帧边界处切割)。
关于python - 具有数百个削减的 ffmpeg 性能 (atrim),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67558608/
我像这样使用 ffmpeg 命令行: ffmpeg -i test.mp3 -filter_complex "atrim=2:duration=6;afade=t=in:st=0:d=2" -y -v
我有音频文件(想想~2h),我想从中切出很多片段(500+)和一个像这样的ffmpeg命令: ['ffmpeg', '-i', 'pipe:', '-filter_complex', '[0]atri
在 FFMPEG 中,我实际上是在修剪和连接 24 FPS 视频。当我应用复杂的过滤器时 ffmpeg -i sample.mp4 -filter_complex \ "[0:v]setpts =
我正在使用 ffmpeg filtergraphs 来提取和连接视频 block 。作为一个简单的例子,考虑这个,它接受一个包含视频流和音频流的输入文件,并产生一个 20 秒的输出,其中包括输入的时间
我开始学习 ffmpeg 并且存在未知问题,因此当您想要修剪音频时,请使用 atrim=a:b 或 aselect='between(t, a,b)' 。 它们之间有什么区别? 最佳答案 atrim=
我是一名优秀的程序员,十分优秀!