*Se você já tem o arquivo .srt ou vai produzir um, pule essa primeira parte
**Copiado do blog TI Log Book:
Extraindo legendas embutidas de vídeos utilizando FFmpeg
Este post mostra como extrair legendas embutidas em vídeos para o formato SRT utilizando o FFmpeg.
Verificando os Encoders
Precisamos de um encoder para extrair a legenda do vídeo. Utilizamos o comando ffmpeg -codecs para verificar os encoders de legenda disponíveis.
ffmpeg -codecs | grep -e '^...S...'
...
..S... = Subtitle codec
DES... ass ASS (Advanced SSA) subtitle
DES... dvb_subtitle DVB subtitles (decoders: dvbsub ) (encoders: dvbsub )
..S... dvb_teletext DVB teletext
DES... dvd_subtitle DVD subtitles (decoders: dvdsub ) (encoders: dvdsub )
..S... eia_608 EIA-608 closed captions
D.S... hdmv_pgs_subtitle HDMV Presentation Graphic Stream subtitles (decoders: pgssub )
D.S... jacosub JACOsub subtitle
D.S... microdvd MicroDVD subtitle
DES... mov_text MOV text
D.S... mpl2 MPL2 subtitle
D.S... pjs PJS (Phoenix Japanimation Society) subtitle
D.S... realtext RealText subtitle
D.S... sami SAMI subtitle
DES... srt SubRip subtitle with embedded timing
DES... ssa SSA (SubStation Alpha) subtitle
DES... subrip SubRip subtitle
D.S... subviewer SubViewer subtitle
D.S... subviewer1 SubViewer v1 subtitle
D.S... text raw UTF-8 text
D.S... vplayer VPlayer subtitle
D.S... webvtt WebVTT subtitle
DES... xsub XSUB
O resultado acima mostra que o ffmpeg tem o filtro SRT com encoder e o decoder.
Analisando o vídeo
Antes de extrairmos a legenda embutida no vídeo precisamos analisas os streams do vídeo com o comando ffmpeg.
ffmpeg -i video.mkv
...
Input #0, matroska,webm, from 'video.mkv':
Metadata:
encoder : libebml v1.0.0 + libmatroska v1.0.0
creation_time : 2012-04-05 12:36:01
Duration: 00:23:09.60, start: 0.000000, bitrate: 1906 kb/s
Stream #0:0(eng): Video: h264 (High), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 23.81 fps, 23.81 tbr, 1k tbn, 47.95 tbc (default)
Stream #0:1: Audio: aac, 44100 Hz, stereo, fltp (default)
Stream #0:2: Subtitle: ssa (default)
...
No resultado acima temos 1 stream de vídeo, 1 stream de audio e 1 stream de legenda (subtitle). Anotamos então os identificados do stream na forma 0.0, 0.1 e 0.2
Extraindo a legenda
ffmpeg -i video.mkv -vn -an -codec:s:0.2 srt video.srt
Onde
- -i video.mkv: seleciona o vídeo
- -vn: desabilita o stream de vídeo
- -an: desabilita o stream de audio
- -codec:s:0.2 srt: seleciona o stream de legenda (subtitle) com o filtro srt
- video.srt: é o arquivo de legenda que será gerado
Pronto, você deve ter agora um arquivo video.srt contendo a legenda do seu vídeo
Editando o arquivo legenda (.srt)
Se você pretende editar o arquivo de legenda por algum motivo, ou até mesmo criar sua própria legenda, eu recomendo o programa Aegisub que é bem simples de utilizar e bastante completo. Para você editar todas as legendas de uma só vez, clique em uma das linhas e aperte as teclas Ctrl+a, e assim aplicar as alterações a todas as linhas. É basicamente um editor de texto, não tem dificuldade, tem uns pequenos botões com ícones iguais aos do word, onde você coloca bold, itálico, muda a fonte, etc. Tem a opção vídeo para você abrir uma janelinha com o vídeo e checar se a legenda está ok, sincronizada com o mesmo e etc.
1. Na janela do WinFF, tenha certeza de que o botão "Opções" esteja ativado, porque é necessário ter acesso às guias(abas) de configuração.
2. Na janela do WinFF tem um botão "Adicionar", clique nele, ache o seu vídeo para adicionar e adicione.
3. Na janela do WinFF na guia(aba) "Detalhes da saída", clique logo abaixo de "Converter para", vai abrir um "menu drop-down" onde neste caso vamos escolher AVI, que é o arquivo que vamos gerar.
4. No "pré-ajuste" nesta mesma guia, clicamos e escolhemos "Xvid WideScreen", que vai gerar um vídeo próprio para telas widescreen.
5. Em "Pasta de destino", vamos marcar a caixinha "Utilizar a pasta de origem", que é para onde nosso arquivo .avi vai ser gerado, na mesma pasta do arquivo de vídeo .mkv.
6. Agora se você ativou o botão "Opções" vai ver uma guia(aba) escrito "FFmpeg" do lado da guia "Hora". Clique nesta guia. Você verá um extenso texto com parâmetros de configuração do ffmpeg. Logo acima tem um espaço em branco "Parâmetros extra da linha de comandos". Nesta linha, você vai digitar onde está o seu arqui .ass(que você gerou com o Aegisub), por exemplo, vamos supor que você é o usuário Leandro que salvou dentro da sua pasta pessoal em Downloads/video:
-vf "ass=/home/leandro/Downloads/video/legenda.ass"
O que você está fazendo é adicionando um parâmetro a mais indicando que você quer que "cole" a legenda no vídeo do arquivo .avi a ser gerado.
7. Feito isso é só Clicar no botão "Converter", lá no topo da janela. Então irá abrir uma janela de terminal e vai começar a gerar o avi com legendas a partir do mkv.