2013-09-06 6 views
1

У меня есть AVI-файл (mpeg4 video) с 3 потоками субтитров. Мне нужно извлечь второй поток в SRT/txt, чтобы внести некоторые поправки в перевод. Я сейчас на машине Ubuntu.Извлечь поток субтитров из AVI

Я пробовал использовать 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: 0 '

Любая помощь? Простите меня, если это кажется простой проблемой - я немного новичок в этом.

ответ

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) мы можем вычленить эти строки:

$ 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.