我有一个带有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'
这给了我一个错误:'找不到输出流的编码器(编解码器ID 0)0:0'
有任何帮助吗?如果这看起来像一个简单的问题,请原谅我 - 我对此有点新鲜。
答案 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。