ffmpeg 无法剪切文件:无法定位错误

ffmpeg 无法剪切文件:无法定位错误

我在 Windows 上使用 ffmpeg 0.8(无法使用更高版本,因为我的服务提供商在服务器上只安装了这个版本,实际上甚至是 0.7.8)

尝试剪切媒体文件(10 秒长)

ffmpeg -ss 00:00:05.00  -i i.ogg o.ogg

结果文件实际上不是想要的,得到的输出:

ffmpeg version 0.8, Copyright (c) 2000-2011 the FFmpeg developers
  built on Jun 23 2011 14:21:12 with gcc 4.5.3
  configuration: --enable-gpl --enable-version3 --enable-memalign-hack --enable-
runtime-cpudetect --enable-avisynth --enable-bzlib --enable-frei0r --enable-libo
pencore-amrnb --enable-libopencore-amrwb --enable-libfreetype --enable-libgsm --
enable-libmp3lame --enable-libopenjpeg --enable-librtmp --enable-libschroedinger
 --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libvpx --enabl
e-libx264 --enable-libxavs --enable-libxvid --enable-zlib
  libavutil    51.  9. 1 / 51.  9. 1
  libavcodec   53.  7. 0 / 53.  7. 0
  libavformat  53.  4. 0 / 53.  4. 0
  libavdevice  53.  1. 1 / 53.  1. 1
  libavfilter   2. 23. 0 /  2. 23. 0
  libswscale    2.  0. 0 /  2.  0. 0
  libpostproc  51.  2. 0 / 51.  2. 0
i.ogg: could not seek to position 5.000
Input #0, ogg, from 'i.ogg':
  Duration: 00:00:10.02, start: 0.000000, bitrate: 57 kb/s
    Stream #0.0: Video: theora, yuv420p, 505x404 [PAR 1:1 DAR 5:4], 25 tbr, 25 t
bn, 25 tbc
    Stream #0.1: Audio: vorbis, 44100 Hz, stereo, s16, 64 kb/s
    Metadata:
      ENCODER         : Lavf53.4.0
File 'o.ogg' already exists. Overwrite ? [y/N] y
[buffer @ 0000000000329060] w:505 h:404 pixfmt:yuv420p tb:1/1000000 sar:1/1 sws_
param:
Output #0, ogg, to 'o.ogg':
  Metadata:
    encoder         : Lavf53.4.0
    Stream #0.0: Video: libtheora, yuv420p, 505x404 [PAR 1:1 DAR 5:4], q=2-31, 2
00 kb/s, 25 tbn, 25 tbc
    Stream #0.1: Audio: flac, 44100 Hz, stereo, s16, 64 kb/s
    Metadata:
      ENCODER         : Lavf53.4.0
Stream mapping:
  Stream #0.0 -> #0.0
  Stream #0.1 -> #0.1
Press [q] to stop, [?] for help
frame=    0 fps=  0 q=0.0 Lsize=      84kB time=00:00:00.00 bitrate=   0.0kbits/
s
video:0kB audio:80kB global headers:3kB muxing overhead 0.673916%

它与最新版本的 ffmpeg 配合良好。可能存在什么问题?

答案1

这看起来像是 ffmpeg 的一个错误或功能缺失。我会尝试通过以不同方式指定 -ss 选项来解决这个问题。最明显的做法是尝试使用“-ss 5”而不是 HH:MM:SS 语法。

从 0.11 版的手册页来看,这个功能也看起来很有希望。可能在旧版本中可用,也可能不可用。

-ss 位置(输入/输出)

当用作输入选项(在“-i”之前)时,在此输入文件中搜索位置。当用作输出选项(在输出文件名之前)时,解码但丢弃输入,直到时间戳到达位置。这较慢,但更准确。

位置可以以秒为单位,也可以采用“hh:mm:ss[.xxx]”格式。

假设您确实只想剪切,而不是重新编码,您还应该添加编解码器选项来复制(-acodec copy-vcodec copy)。 -copyts也很有用(复制时间戳)。 因此,尝试以下操作:

ffmpeg -i foo.ogg -acodec copy -vcodec copy -copyts -ss 5 foominus5.ogg

相关内容