ffmpeg剪视频、取音频简例

要将一个视频按照内容剪出其中几个部分,可以用 ffmpeg[1],操作参照 [2-4]。从 [1] 下载、安装、配环境变量之后,自己用播放器看视频,确定各片段的开始时间、结束时间,然后:

@echo off

echo part 1: paper introduction
ffmpeg -ss 00:19:16 -to 00:57:59 -i PaSS-3.mp4 -vcodec copy -acodec copy p1-paper-intro.mp4

echo part 2: story
ffmpeg -ss 00:58:00 -to 01:47:14 -i PaSS-3.mp4 -vcodec copy -acodec copy p2-story.mp4

echo part 3: Q^&A
ffmpeg -ss 01:47:15 -to 02:04:24 -i PaSS-3.mp4 -vcodec copy -acodec copy p3-QnA.mp4

其中:

  • -ss <HH>:<MM>:<SS> 指定开始时间;
  • -to <HH>:<MM>:<SS> 指定结束时间;
  • -i <INPUT> 指定要剪的视频文件(输入);
  • 最后一个参数是剪出来的视频片段文件名(输出)。

Multiple Segments

如果要从一个视频中剪多段拼在一起,参考 [4] 用 select filter,示例:

@echo off
setlocal enabledelayedexpansion

@REM 原视频
set IN=videos\test.mp4
@REM 输出视频:加个 `_cut` 后缀
for /F "delims=" %%f in ("%IN%") do set OUT=%%~dpf%%~nf_cut%%~xf
echo %IN% -^> %OUT%

@REM 要剪的片段
@REM 格式:between(t,<开始秒数>,<结束秒数>),可用 *+
@REM 多段用 `+` 连接
set CLIPS='between(t,25*60+58,55*60+7)+between(t,94*60+42,119*60+31)'
echo %CLIPS%

@REM 剪
ffmpeg -i %IN% ^
       -vf "select=%CLIPS%, setpts=N/FRAME_RATE/TB" ^
       -af "aselect=%CLIPS%, asetpts=N/SR/TB" ^
       %OUT%

Extract Audio

想从视频文件中提取音频,参考 [6]:

ffmpeg -i video.mp4 -vn -acodec copy audio.aac

想再转成 mp3 格式,给 html 用 <audio>[8,9] 标签放,参考 [7]:

ffmpeg -i audio.aac -acodec libmp3lame audio.mp3

也可以合并成一条:

ffmpeg -i video.mp4 -vn -acodec libmp3lame audio.mp3

Cropping

要截视频的某个局部,如右半边,用 crop 参数,如:

  • iwih 表示输入视频的原宽、高;
  • crop 参数格式:crop=<w>:<h>:<x>:<y>,即要截的 bounding box 是 (x, y) 到 (x + w, y + h)。
@REM 截时间用 select
set CLIPS='between(t,25*60+58,55*60+7)+between(t,94*60+42,119*60+31)'
@REM 截空间用 crop
ffmpeg -i input.mp4 ^
       -vf "select=%CLIPS%, setpts=N/FRAME_RATE/TB, crop=iw/2:ih:iw/2:0" ^
       -af "aselect=%CLIPS%, asetpts=N/SR/TB" ^
       output.mp4

References

  1. ffmpeg
  2. ffmpeg视频剪切与合并
  3. ffmpeg视频精准剪切
  4. Cutting the videos based on start and end time using ffmpeg
  5. Cut multiple parts of a video with ffmpeg
  6. How can I extract audio from video with ffmpeg? [closed]
  7. Convert audio files to mp3 using ffmpeg [closed]
  8. HTML Audio
  9. HTML <audio> Tag
  10. How can I crop a video with ffmpeg?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值