1

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

我尝试使用 avconv,但出现错误。这是“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'

这给了我一个错误:“找不到输出流 #0:0 的编码器(编解码器 id 0)”

有什么帮助吗?如果这看起来像一个简单的问题,请原谅我——我对此有点陌生。

4

1 回答 1

0

avconv是原始版本的一个分支,ffmpeg并且通常具有较少的功能。

在我的 Ubuntu 13.04(稀有)上,我在终端中获得了以下信息:

$ 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),我们可以 grep 这些行:

$ 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

因此,如果您使用任何合理的 current ffmpeg,您可能会让它与您已经使用过的命令行一起使用。由于这两种工具使用相同的代码库,因此大多数命令行选项的工作方式相同。

在此处查看我的答案和ffmpeg setup段落以查看从何处下载。很容易做到,你甚至不必成为root。

于 2014-02-15T08:36:47.523 回答