Como adiciono e / ou mantenho legendas ao converter vídeo?

11

Eu tenho um vídeo mkv que eu quero converter para mp4, mas de todas as maneiras eu tento e converso (Handbrake, WinFF, ffmpeg, mencoder, ... eu perco as legendas do vídeo. Como posso converter o vídeo, mantendo as legendas ou adicionar legendas.srt?

Eu também gostaria de passar 2 codificação com uma taxa de bits de vídeo de 4054 e bitrate de áudio de 160.

Obrigado.

Fui convidado para o ffmpeg -i:

joe@joe-Leopard-Extreme:/media/Elements/Home Folder/Videos$ ffmpeg -i iron.mkv
ffmpeg version 0.8.3-4:0.8.3-0ubuntu0.12.04.1, Copyright (c) 2000-2012 the Libav     developers
built on Jun 12 2012 16:52:09 with gcc 4.6.3
*** THIS PROGRAM IS DEPRECATED ***
This program is only provided for compatibility and will be removed in a future release. Please use avconv instead.
[matroska,webm @ 0x1a319a0] Estimating duration from bitrate, this may be inaccurate
Input #0, matroska,webm, from 'iron.mkv':
Metadata:
title           : Iron 
Duration: 02:06:01.67, start: 0.000000, bitrate: 1280 kb/s
Chapter #0.0: start 0.000000, end 546.170622
Metadata:
  title           : Chapter 00
Chapter #0.1: start 546.170622, end 1080.579489
Metadata:
  title           : Chapter 01
Chapter #0.2: start 1080.579489, end 1609.941667
Metadata:
  title           : Chapter 02
Chapter #0.3: start 1609.941667, end 2101.849733
Metadata:
  title           : Chapter 03
Chapter #0.4: start 2101.849733, end 2595.259333
Metadata:
  title           : Chapter 04
Chapter #0.5: start 2595.259333, end 3158.488667
Metadata:
  title           : Chapter 05
Chapter #0.6: start 3158.488667, end 3564.644400
Metadata:
  title           : Chapter 06
Chapter #0.7: start 3564.644400, end 4052.423356
Metadata:
  title           : Chapter 07
Chapter #0.8: start 4052.423356, end 4304.300000
Metadata:
  title           : Chapter 08
Chapter #0.9: start 4304.300000, end 4711.206489
Metadata:
  title           : Chapter 09
Chapter #0.10: start 4711.206489, end 5080.575489
Metadata:
  title           : Chapter 10
Chapter #0.11: start 5080.575489, end 5700.111067
Metadata:
  title           : Chapter 11
Chapter #0.12: start 5700.111067, end 6269.346400
Metadata:
  title           : Chapter 12
Chapter #0.13: start 6269.346400, end 6811.471333
Metadata:
  title           : Chapter 13
Chapter #0.14: start 6811.471333, end 7561.679000
Metadata:
  title           : Chapter 14
Stream #0.0(eng): Video: h264 (High), yuv420p, 1920x1080 [PAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc
Stream #0.1(eng): Audio: ac3, 48000 Hz, 5.1, s16, 640 kb/s (default)
Metadata:
  title           : 3/2+1
Stream #0.2(ita): Audio: ac3, 48000 Hz, 5.1, s16, 640 kb/s
Metadata:
  title           : 3/2+1
Stream #0.3(eng): Subtitle: pgssub (default)
Stream #0.4(eng): Subtitle: pgssub
Stream #0.5(eng): Subtitle: pgssub
Stream #0.6(eng): Subtitle: pgssub
At least one output file must be specified
joe@joe-Leopard-Extreme:/media/Elements/Home Folder/Videos
    
por JoeSteiger 07.11.2012 / 18:06

4 respostas

0

Bem, eu encontrei uma maneira de fazê-lo funcionar, não ideal, mas funciona. Eu posso adicionar um srt a um vídeo com o mkvmerge. Única queda é o que torna o vídeo mkv, não o mp4.

    
por JoeSteiger 11.11.2012 / 23:31
11

Com o ffmpeg, adicione: -c:s copy para a sintaxe recente ou -scodec copy para a sintaxe antiga para copiar o fluxo de legendas. Infelizmente, o MP4 não possui um ótimo suporte a legendas. Você pode tentar usar o texto cronometrado 3GPP e o ffmpeg pode converter para este formato com -c:s mov_text , mas eu nunca tentei. Você pode testar assim:

ffmpeg -i input.mkv -vcodec copy -acodec copy -scodec mov_text output.mp4

Se isso não funcionar, o MP4Box do pacote gpac pode converter de SRT para texto temporizado.

Por que duas passagens? Passagem única usando -crf quando a codificação com libx264 é geralmente recomendada, a menos que você esteja direcionando um tamanho de arquivo de saída específico. Consulte o Guia de codificação FFmpeg e x264 .

    
por LordNeckbeard 08.11.2012 / 00:10
7

você pode usar o -map 0 para garantir que todos os fluxos sejam copiados. Se não for possível com o formato, o ffmpeg deve então errar.

-map 0 diz ao ffmpeg / libav para incluir todos os fluxos, não apenas aqueles para os quais você definiu regras de convenção.

Normalmente, -map é usado para definir o mapeamento de fluxo - ou seja, o fluxo 1 na entrada deve se tornar o fluxo 0 na saída. Com apenas -map 0 você diz ao ffmpeg / libav para pegar todos os streams sem fazer shuffles.

    
por Arne Babenhauserheide 23.09.2014 / 23:18
1

Se você quer apenas fazer uma conversão simples para o mp4, você pode usar o VLC. O VLC aceitará um arquivo de legendas e o renderizará na saída.

Para conversões mais complicadas, incluindo o estilo das legendas, você pode usar o OpenShot.

    
por user191688 08.11.2012 / 00:55