从视频中剪切一部分并使用 ffmpeg 保存的命令是什么?

Jam*_*mes 8 terminal ffmpeg

我试过了

ffmpeg -t in_movie.avi -ss 00:26:20 -t 00:28:24 out_movie.avi
Run Code Online (Sandbox Code Playgroud)

但这给了我:

Invalid duration specification for t: in_movie.avi
Run Code Online (Sandbox Code Playgroud)

请指教。

更新: 莫莉,该命令给出:

FFmpeg version SVN-r19352-4:0.5+svn20090706-2ubuntu2, Copyright (c) 2000-2009 Fabrice Bellard, et al.
  configuration: --extra-version=4:0.5+svn20090706-2ubuntu2 --prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --disable-stripping --disable-vhook --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdc1394 --extra-cflags=-I/build/buildd/ffmpeg-0.5+svn20090706/debian/include --enable-shared --disable-static
  libavutil     49.15. 0 / 49.15. 0
  libavcodec    52.20. 0 / 52.20. 0
  libavformat   52.31. 0 / 52.31. 0
  libavdevice   52. 1. 0 / 52. 1. 0
  libavfilter    0. 4. 0 /  0. 4. 0
  libswscale     0. 7. 1 /  0. 7. 1
  libpostproc   51. 2. 0 / 51. 2. 0
  built on Oct 13 2009 22:15:16, gcc: 4.4.1
Input #0, avi, from 'extras.s01.e01.ws.dvdrip.xvid-m00tv.avi':
  Duration: 00:29:04.04, start: 0.000000, bitrate: 1120 kb/s
    Stream #0.0: Video: mpeg4, yuv420p, 640x368 [PAR 1:1 DAR 40:23], 25 tbr, 25 tbn, 25 tbc
    Stream #0.1: Audio: mp3, 48000 Hz, stereo, s16, 32 kb/s
Output #0, avi, to 'out_movie.avi':
    Stream #0.0: Video: mpeg4, yuv420p, 640x368 [PAR 1:1 DAR 40:23], q=2-31, 200 kb/s, 90k tbn, 25 tbc
    Stream #0.1: Audio: mp2, 48000 Hz, stereo, s16, 64 kb/s
Stream mapping:
  Stream #0.0 -> #0.0
  Stream #0.1 -> #0.1
Press [q] to stop encoding
frame=    0 fps=  0 q=0.0 size=      10kB time=10000000000.00 bitrate=   0.0kbitframe=    0 fps=  0 q=0.0 size=      10kB time=10000000000.00 bitrate=   0.0kbitframe=    0 fps=  0 q=0.0 size=      10kB time=10000000000.00 bitrate=   0.0kbit
Run Code Online (Sandbox Code Playgroud)

然后它似乎冻结了。我很感激任何帮助。

小智 11

你很接近:)

正确的语法是 ffmpeg -i InputFile -ss StartTime -t Duration Outputfile

所以尝试:

ffmpeg -i in_movie.avi -ss 00:26:20 -t 00:28:24 out_movie.avi
Run Code Online (Sandbox Code Playgroud)

更新

本集时长约 40:23。-t 指定持续时间,而不是结束时间。您的命令将开始在26:20记录28分24秒,这将是直到54:44。如果要从 26:20 录制到 28:24,请改用开关 -t 00:02:04。

ffmpeg -i in_movie.avi -ss 00:26:20 -t 00:02:04 out_movie.avi
Run Code Online (Sandbox Code Playgroud)

现在这将为您提供 2 分 4 秒长的 AVI 剪辑,从 26:20 到 28:24 捕获

  • 使用新版本的 ffmpeg,您可以使用“-to”指定结束时间,因此“ffmpeg -i in_movie.avi -ss 00:26:20 -to 00:28:24 out_movie.avi”将是正确的。 (2认同)