ffmpeg 编码的视频 - 在 VLC 中搜索是“量化的”

ffmpeg 编码的视频 - 在 VLC 中搜索是“量化的”

我正在运行以下命令将 mp4 视频转换为 VP8/Webm 格式:

ffmpeg -y -i lists.mp4 -f webm -vcodec libvpx -vb 600k -r 20 -acodec libvorbis -ab 64k -ac 1 lists.webm

当我在 VLC 中打开它并尝试搜索视频中的不同点时,搜索是“量化的”。我的意思是,视频中有 3 或 4 个点是搜索器“捕捉到的”,例如,如果我点击其中的任何东西,06:30 to 10:30它都会搜索到06:30

我确信问题与 ffmpeg 的编译方式有关。Windows 下随 ffmpeg 一起提供的 Miro Video Converter 使用以下命令:

ffmpeg -y -i lists.mp4 -f webm -vcodec libvpx -acodec libvorbis -crf lists.webm

Miro 的输出在 VLC 中没有量化,但在我的 Linux 安装中,同样的命令可以量化。因此,这肯定与 ffmpeg 版本或编译方式有关。

有人知道这个吗?调试输出如下


Linux ffmpeg 的调试信息:

ffmpeg version N-35110-g0b9a69f, Copyright (c) 2000-2011 the FFmpeg developers
  built on Nov 23 2011 12:51:56 with gcc 4.6.2


configuration: --prefix=/usr --enable-libmp3lame --enable-libvorbis --enable-libxvid --enable-libx264 --enable-libvpx
--enable-libtheora --enable-libgsm --enable-libspeex --enable-postproc --enable-shared --enable-x11grab
--enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libschroedinger --enable-libopenjpeg --enable-librtmp
--enable-gpl --enable-version3 --enable-runtime-cpudetect --disable-debug --disable-static

  libavutil    51. 26. 0 / 51. 26. 0
  libavcodec   53. 37. 0 / 53. 37. 0
  libavformat  53. 21. 0 / 53. 21. 0
  libavdevice  53.  4. 0 / 53.  4. 0
  libavfilter   2. 49. 0 /  2. 49. 0
  libswscale    2.  1. 0 /  2.  1. 0    
  libpostproc  51.  2. 0 / 51.  2. 0

对于 Windows(Miro 视频转换器):

    FFmpeg version SVN-r25762, Copyright (c) 2000-2010 the FFmpeg developers
      built on Nov 18 2010 04:07:17 with gcc 4.4.2
      configuration: --enable-gpl --enable-version3 --enable-libgsm
--enable-pthreads --enable-libvorbis --enable-libtheora --enable-libspeex 
--enable-libmp3lame --enable-libopenjpeg --enable-libschroedinger
--enable-libopencore_amrwb --enable-libopencore_amrnb --enable-libvpx
--disable-decoder=libvpx --arch=x86 --enable-runtime-cpudetect --enable-libxvid
--enable-libx264 --extra-libs='-lx264 -lpthread' --enable-librtmp
--extra-libs='-lrtmp -lpolarssl -lws2_32 -lwinmm' --target-os=mingw32
--enable-avisynth --cross-prefix=i686-mingw32- --cc='ccache i686-mingw32-gcc'
--enable-memalign-hack
      libavutil     50.33. 0 / 50.33. 0
      libavcore      0.13. 0 /  0.13. 0
      libavcodec    52.96. 0 / 52.96. 0
      libavformat   52.84. 0 / 52.84. 0
      libavdevice   52. 2. 2 / 52. 2. 2
      libavfilter    1.62. 0 /  1.62. 0
      libswscale     0.12. 0 /  0.12. 0

答案1

我对 VP8 编码不太了解,但一般来说,ffmpeg它是指“图片组”大小的关键帧。

传递-g一个数字作为帧中图片组的最大尺寸;这将是关键帧之间的最大帧数(包括关键帧)。

不同的 ffmpeg / codec 版本可能有不同的默认值;不过,您可以将其覆盖为您想要的任何值。

背景:

压缩视频格式通常不会存储视频的每一帧的完整数据,而是将大多数帧存储为如何从过去帧的片段(在更现代的系统中,则是未来帧的片段)构建帧的描述。为了能够快速查找并开始播放,视频播放器软件通常只允许您跳转到存储了完整数据的帧,这些帧称为“关键帧”或 I 帧。

通常,您可以告诉编码器您希望它多久放入一次关键帧。更多关键帧为查找和编辑提供了更大的灵活性,但会使视频压缩效率降低。

相关内容