Então baixei o arquivo gratuito criado por fãsJornada nas Estrelas ContinuaISO Blue-Ray paraEpisódios 1-3e estou tentando converter o FHD 1920x1080 para SD 960x540 para poder assistir no meu celular:
ffmpeg -canvas_size 960x540 \
-i /media/STC_VOL1_BR/BDMV/STREAM/00000.m2ts \
-map_metadata -1 \
-c:v libx264 -map 0:0 -strict -2 -r 24 -s 960x540 \
-c:a libmp3lame -map 0:1 -b:a 384K \
-metadata:s:s:0 language=EN -c:s dvdsub -map 0:2 \
/media/Videos/Star\ Trek\ Continues/S01E01\ Pilgrim\ Of\ Eternity.mkv
mas depois de alguns segundos assistindo ao mkv convertido, as legendas se tornam:
- ilegível devido à sobreposição
- são um pouco grandes (sem problema)
- deslocado para a direita e parte inferior da tela
O que estou fazendo de errado?
Nota 1:Eu só lidei com srt
legendas e sei que dvdsubs são imagens, por isso pensei que o canvas_size
parâmetro poderia ajudar, mas não faz diferença.
Nota 2:Sim, não é realmente uma questão pura do sistema operacional Ubuntu, mas mais adiantevídeo.senão conseguindoqualquer atenção, mesmo com uma recompensaentão estou tentando aqui se alguém fizer alguma conversão de vídeo e se encontrar na mesma situação.
Responder1
Tecnicamente omais limpoolhar com essas legendas seria:
- Extraia as legendas
- Transforme-os em texto usando seu aplicativo OCR favorito
- Revise e edite cuidadosamente o texto
- Grave-os de volta no fluxo de mídia no tamanho, cor, orientação e formato de sua escolha
Este é um trabalho grande e demorado queEu pessoalmente empreendi no passadomas provavelmente éexageronesse caso.
Omelhoraropção é simplesmente adicionar a opção FFmpeg -fix_sub_duration
(colocadaanteso arquivo de entrada) e isso corrigirá as legendas duplicadas conforme ilustro abaixo e tornará as legendas facilmente legíveis:
Os detalhes da -fix_sub_duration
opção podem ser encontrados nas páginas de manual do FFmpeg-all, mas tomei a liberdade de citar esses detalhes aqui:
-fix_sub_duration
Corrija a duração das legendas. Para cada legenda, aguarde o próximo pacote no mesmo fluxo e ajuste a duração do primeiro para evitar sobreposição. Isto é necessário com alguns codecs de legendas, especialmente legendas DVB, porque a duração do pacote original é apenas uma estimativa aproximada e o final é na verdade marcado por um quadro de legenda vazio. Deixar de usar esta opção quando necessário pode resultar em durações exageradas ou falhas de muxing devido a carimbos de data/hora não monotônicos.
Observe que esta opção atrasará a saída de todos os dados até que o próximo pacote de legenda seja decodificado: pode aumentar muito o consumo de memória e a latência.
Você notará que este é oprimeirodas opções de legenda avançada, osegundosendo aquele -canvas_size
que você já usou...