bdu*_*a74 17 audio video ffmpeg
有没有一种相对简单的方法来加速视频(mp4,带有 aac 编码的音频),比如“x1.25”或“x1.3”,同时保持原始音视频同步,但也保留原始音高声音的 ?
我已经阅读了一些关于将音轨提取到单独的文件中的讨论,然后用于rubberband将音调降低所需的值,然后使用 ffmpeg 加速合并音频视频轨道,这将音频的音调再次提高回原始. 然而,这似乎有点命中注定,因为rubberband似乎使用八度音程数作为参数来提高或降低音高,并且这可能并不总是与视频完美匹配,因为音符/八度音程具有特定的比率。而且,这很麻烦。
那么,有没有单独使用 ffmpeg 的更简单的方法?
Wei*_*nde 26
它可以通过使用复杂过滤器的 ffmpgeg 来完成:
ffmpeg -i input.mkv -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" output.mkv
Run Code Online (Sandbox Code Playgroud)
Doku:https ://trac.ffmpeg.org/wiki/How%20to%20speed%20up%20/%20slow%20down%20a%20video
如果您想将速度乘以 2,则上述命令有效。如果你想乘以 any ,参数变为:
ffmpeg -i input.mkv -filter_complex "[0:v]setpts=<1/x>*PTS[v];[0:a]atempo=<x>[a]" -map "[v]" -map "[a]" output.mkv
Run Code Online (Sandbox Code Playgroud)
例如,如果你想乘以 1.15,命令是
ffmpeg -i input.mkv -filter_complex "[0:v]setpts=0.87*PTS[v];[0:a]atempo=1.15[a]" -map "[v]" -map "[a]" output.mkv
Run Code Online (Sandbox Code Playgroud)
例如,您可以通过执行以下操作将视频速度加快 2.5 倍:
ffmpeg -i "input_video.mp4" -vf "setpts=(PTS-STARTPTS)/2.5" -af atempo=2.5 "input_video_2.5X.mp4"
Run Code Online (Sandbox Code Playgroud)
为了方便起见,您可以使用以下 bash 脚本(例如convert_video.sh):
ffmpeg -i "input_video.mp4" -vf "setpts=(PTS-STARTPTS)/2.5" -af atempo=2.5 "input_video_2.5X.mp4"
Run Code Online (Sandbox Code Playgroud)
注意:使脚本可执行:chmod +x convert_video.sh
用法(输出文件<PATH_TO_INPUT_VIDEO>_<OPTIONAL_SPEED>X.mp4:)
. <PATH_TO_THIS_SCRIPT>/convert_video.sh <PATH_TO_INPUT_VIDEO> <OPTIONAL_SPEED>
Run Code Online (Sandbox Code Playgroud)
示例 1:将视频速度加快至 2.5 倍(输出:~/Videos/input_video_2.5X.mp4)
. ~/convert_video.sh ~/Videos/input_video.mp4 2.5
Run Code Online (Sandbox Code Playgroud)
示例 2:将视频速度减慢至 0.5 倍(输出:~/Videos/input_video_0.5X.mp4)
. ~/convert_video.sh ~/Videos/input_video.mp4 0.5
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你。
| 归档时间: |
|
| 查看次数: |
7417 次 |
| 最近记录: |