ffmpeg 调整音视频播放速度

1. 调整视频速率

1.1 原理

调整视频速率的原理为:修改视频的pts,dts
此过程由于不用进行解码编码,所以费时很少

1.2 setpts修改视频速率

ffmpeg -i input.mkv -an -filter:v "setpts=0.5*PTS" output.mkv

注意:

  • 调整速度倍率范围[0.25, 4]
  • 如果只调整视频的话最好把音频禁掉
  • 对视频进行加速时,如果不想丢帧,可以用-r 参数指定输出视频FPS
ffmpeg -i input.mkv -an -r 60 -filter:v "setpts=2.0*PTS" output
### 如何使用 FFmpeg 批量调整多个视频文件的播放速度 #### 调整单个视频播放速度 要改变单一视频文件的速度,可以利用 `setpts` (用于时间戳设置) 和 `atempo` (用于音频节奏控制) 这两个滤镜。对于加速或减速操作来说: - 对于视频部分,采用 `setpts=1/ Playback_Speed` 的方式来加快或减慢显示速率; - 音频方面,则通过 `atempo=Playback_Speed` 来同步调节。 例如,如果想要把一个名为 input.mp4 的文件以两倍速输出为 output.mp4 可执行如下命令[^1]: ```bash ffmpeg -i input.mp4 -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2[a]" -map "[v]" -map "[a]" output.mp4 ``` 此处需要注意的是 `atempo` 支持的最大值为 99.0 ,最小值为 0.01 。当需要超过此范围时可多次应用该效果或将数值限定在此区间内。 #### 实现批量处理脚本 为了能够一次性处理多份素材,建议编写简单的批处理脚本来循环读取指定目录下的所有目标格式文件并依次施加上述变换。下面给出一段 Python 编写的简单例子作为参考[^2]: ```python import os from pathlib import Path input_dir = 'path/to/input/videos' output_dir = 'path/to/output/videos' if not os.path.exists(output_dir): os.makedirs(output_dir) for video_path in Path(input_dir).glob('*.mp4'): base_name = os.path.basename(video_path) out_video_path = os.path.join(output_dir, f'fast_{base_name}') cmd = ( f'ffmpeg -i "{video_path}" ' '-filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2[a]" ' f'-map "[v]" -map "[a]" "{out_video_path}"' ) os.system(cmd) ``` 这段代码将会遍历给定路径中的每一个 .mp4 文件,并将其转换后的版本存储到另一个位置中去。可以根据实际需求更改具体的参数配置以及输入输出的位置信息。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值