从AVI中提取字幕流

时间:2013-09-06 03:40:09

标签: ubuntu extract avi subtitle avconv

我有一个带有3个字幕流的AVI文件(mpeg4视频)。我需要将第二个流提取到SRT / txt,以便对翻译进行一些修正。我目前正在使用Ubuntu机器。

我尝试使用av​​conv,但是我遇到了错误。这是'avconv -i'的结果:

Stream #0.0: Video: mpeg4 (Advanced Simple Profile), yuv420p ...
Stream #0.1: Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s
Stream #0.2: Subtitle: srt
Stream #0.3: Subtitle: srt
Stream #0.4: Subtitle: srt

这是我最初尝试的命令:'avconv -i video.avi -map 0:3 subs.srt'

这给了我一个错误:'找不到输出流的编码器(编解码器ID 0)0:0'

有任何帮助吗?如果这看起来像一个简单的问题,请原谅我 - 我对此有点新鲜。

1 个答案:

答案 0 :(得分:0)

avconv是原始ffmpeg的分支,通常功能较少。

在我的Ubuntu 13.04(raring)上,我在终端获取此信息:

$ avconv -version
avconv version 0.8.9-6:0.8.9-0ubuntu0.13.04.1, Copyright (c) 2000-2013 the Libav developers
  built on Nov  9 2013 19:09:48 with gcc 4.7.3
avconv 0.8.9-6:0.8.9-0ubuntu0.13.04.1

您可以将编码的任何数据编解码器列为avconv知道到avconv -codecs的输出文件。这是一个很长的清单。要对其进行过滤以进行编码(E)和字幕(S),我们可以将这些行格式化:

$ avconv -codecs |grep ES
avconv version 0.8.9-6:0.8.9-0ubuntu0.13.04.1, Copyright (c) 2000-2013 the Libav developers
  built on Nov  9 2013 19:09:48 with gcc 4.7.3
 DES    ass             Advanced SubStation Alpha subtitle
 DES    dvbsub          DVB subtitles
 DES    dvdsub          DVD subtitles
 DES    xsub            DivX subtitles (XSUB)

正如您所看到的,srt没有条目。长号。

最新ffmpeg有它:

$ ~/bin/ffmpeg -codecs |grep ES
ffmpeg version N-60596-gabe3f79 Copyright (c) 2000-2014 the FFmpeg developers
  built on Feb 14 2014 05:31:07 with gcc 4.6 (Debian 4.6.3-1)
  configuration: --prefix=/root/ffmpeg-static/64bit --extra-cflags='-I/root/ffmpeg-static/64bit/include -static' --extra-ldflags='-L/root/ffmpeg-static/64bit/lib -static' --extra-libs='-lxml2 -lexpat -lfreetype' --enable-static --disable-shared --disable-ffserver --disable-doc --enable-bzlib --enable-zlib --enable-postproc --enable-runtime-cpudetect --enable-libx264 --enable-gpl --enable-libtheora --enable-libvorbis --enable-libmp3lame --enable-gray --enable-libass --enable-libfreetype --enable-libopenjpeg --enable-libspeex --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-version3 --enable-libvpx
  libavutil      52. 63.101 / 52. 63.101
  libavcodec     55. 52.101 / 55. 52.101
  libavformat    55. 32.101 / 55. 32.101
  libavdevice    55.  9.100 / 55.  9.100
  libavfilter     4.  1.102 /  4.  1.102
  libswscale      2.  5.101 /  2.  5.101
  libswresample   0. 17.104 /  0. 17.104
  libpostproc    52.  3.100 / 52.  3.100
 DES... ass                  ASS (Advanced SSA) subtitle
 DES... dvb_subtitle         DVB subtitles (decoders: dvbsub ) (encoders: dvbsub )
 DES... dvd_subtitle         DVD subtitles (decoders: dvdsub ) (encoders: dvdsub )
 DES... mov_text             MOV text
 DES... srt                  SubRip subtitle with embedded timing
 DES... ssa                  SSA (SubStation Alpha) subtitle
 DES... subrip               SubRip subtitle
 DES... xsub                 XSUB

因此,如果您使用任何合理的当前ffmpeg,您可能会使用已使用的命令行。由于这两个工具使用相同的代码库,因此大多数命令行选项的工作方式相同。

查看my answer here和段落 ffmpeg setup 以查看从何处下载。很容易做到,你甚至不必成为root。