【发布时间】:2011-10-17 07:28:27
【问题描述】:
如何限制给定视频的视频时长?例如,如果我们要上传一个不超过 5 分钟的视频,我需要一个 FFMPEG 中的命令。
【问题讨论】:
标签: ffmpeg
如何限制给定视频的视频时长?例如,如果我们要上传一个不超过 5 分钟的视频,我需要一个 FFMPEG 中的命令。
【问题讨论】:
标签: ffmpeg
只是为了更详细的使用和示例进一步阐述。
如FFMpeg Docs中指定的那样
-t duration(输入/输出)
ffmpeg -t 5 -i input.mp3 testAsInput.mp3
ffmpeg -i input.mp3 -t 5 testAsOutput.mp3
-to position(输入/输出)
to 而不是 t
duration 或 position 必须是持续时间规范,如 ffmpeg-utils(1) manual. 中指定的那样
[-][HH:]MM:SS[.m...] 或 [-]S+[.m...][s|ms|us]
-to 和 -t互斥,-t 具有优先级。
注意:-f pulse -i 1 是我的系统音频,-f pulse -i 2 是我的麦克风输入
假设我想同时录制麦克风和扬声器。(直到我用 Ctrl+C 强制停止) em>
ffmpeg \
-f pulse -i 1 \
-f pulse -i 2 \
-filter_complex "amix=inputs=2" \
testmix.mp3
ffmpeg \
-t 5 -f pulse -i 1 \
-f pulse -i 2 \
-filter_complex "amix=inputs=2:duration=longest" \
testmix.mp3
注意::duration=longest amix 选项无论如何都是默认选项,因此不需要明确指定
ffmpeg \
-t 5 -f pulse -i 1 \
-t 10 -f pulse -i 2 \
-filter_complex "amix=inputs=2:duration=longest" \
testmix.mp3
ffmpeg \
-t 5 -f pulse -i 1 \
-f pulse -i 2 \
-filter_complex "amix=inputs=2:duration=longest" \
-t 10 testmix.mp3
注意:关于开始position 搜索/寻找this answer,我做了一些调查,可能也很感兴趣。
【讨论】:
一个例子;
ffmpeg -f lavfi -i color=s=1920x1080 -loop 1 -i "input.png" -filter_complex "[1:v]scale=1920:-2[fg]; [0:v][fg]overlay=y=-'t*h*0.02'[v]" -map "[v]" -t 00:00:03 output.mp4
这会将最长时间设置为 3 秒。请注意,-t 必须在输出文件之前,如果您在此命令的开头设置它,即ffmpeg -t ....,它将不起作用。
【讨论】:
-t 可以是输入或输出选项,具体取决于放置位置。如果您将-t 作为输入选项(在-i 之前),那么它将仅适用于它之前的特定输入。所以你的情况只适用于-i color=s=1920x1080,除非你在-i "input.png"之前添加另一个-t。同时,你无限循环 input.png 并覆盖它。覆盖过滤器不会以最短的输入结束,除非您告诉它这样做,例如overlay=y=-'t*h*0.02':shortest=1。
使用 -t 选项指定时间限制:
`-t duration'
Restrict the transcoded/captured video sequence to the duration specified in seconds. hh:mm:ss[.xxx] syntax is also supported.
【讨论】:
ffmpeg -i input.mp3 -t 00:05:00 output.mp3