Combinando arquivos de vídeo e legenda como um vídeo?

14

Eu tenho um arquivo de vídeo (no formato .mp4, .mkv, .avi ou o que for) e um arquivo de legenda (.srt). Desejo incorporar o arquivo de legenda ao arquivo de vídeo, para que eu tenha apenas um arquivo - o arquivo de vídeo, em contraste com o arquivo de vídeo e legenda.

É possível? Quão?


fonte
1
Subs incorporados suaves que podem ser desativados são o caminho a percorrer (embora não seja possível com o AVI); submarinos rígidos são realmente irritantes e não só adicioná-los causa perda de qualidade, mas removê-los não é possível sem mais perdas significativas.
quer

Respostas:

8

O MKVtoolnix é outra opção fácil de usar, já que você já possui os arquivos que deseja. Você pode combiná-los em um contêiner MKV sem alterar os originais de qualquer maneira. Ele tem uma boa interface gráfica para guiá-lo através do processo de combinação também.

Vejo que user1301428 mencionou o Handbrake, que também é uma ferramenta muito comum / popular. Eu não estou tão familiarizado com isso, mas se não recodificar o AVI de origem, deve ser ótimo.

Melikoth
fonte
22

Uma solução gratuita de plataforma cruzada com FFmpeg , que copia bitstream e, portanto, não leva mais que alguns segundos, mesmo para arquivos grandes:

ffmpeg -i input.mp4 -i subtitles.srt -c:s mov_text -c:v copy -c:a copy output.mp4

Isso funciona para MP4. Esteja ciente de que alguns formatos de legenda podem não ser automaticamente compatíveis com os formatos de saída escolhidos; portanto, você deve alterar o codec depois de -c:s:

  • MP4: use o mov_textcodec de legenda (como no exemplo acima), que implementa o MPEG-4 Parte 17 .

  • MKV: Use srt, subrip, ssaou ass. MKV não suporta mov_text.

  • AVI: Muito problemático com legendas incorporadas. Em teoria, eles suportam legendas SubRip e SSA / ASS, mas apenas através de software de terceiros.

Consulte a Wikipedia para obter uma lista de contêineres e seus formatos de legenda suportados .

O uso de programas dedicados de codificação de vídeo, como o Handbrake, recodificará o vídeo, o que reduz sua qualidade e pode levar horas para codificar - é por isso que você deve verificar se as ferramentas suportam a cópia dos fluxos de bits de vídeo e áudio.

slhck
fonte
1
Eu achei -f srtnecessário algumas vezes, caso contrário, ótimo!
Steven Penny
1
Caso o seu arquivo de legenda esteja no *.vttformato, use a seguinte -c:s webvttopção:ffmpeg -i input.webm -i input.vtt -c:s webvtt -c:v copy -c:a copy output.webm
user3405291
0

Você pode usar o Handbrake . Na guia "Legendas", basta selecionar o arquivo de legendas e iniciar a codificação.

user1301428
fonte
2
Isso irá recodificar o vídeo, o que: a) leva muito tempo eb) deteriora a qualidade.
slhck
-1
ffmpeg -i video.avi -vf subtitles=subtitle.srt out.avi
SivaPhani
fonte