Como 'gravar' uma faixa de legenda em um arquivo de vídeo mp4

10

Gostaria de fazer com que um arquivo de legenda fizesse parte de um arquivo de vídeo mp4, para que eu não tenha que lidar com dois arquivos separados.

Eu imagino duas maneiras:

  • Faça da legenda uma parte intrínseca do vídeo. Isso exigirá recodificação de vídeo.
  • Transforme a legenda em um fluxo separado, mas ainda incorporado no mesmo arquivo de vídeo. Isso é muito mais preferível, especialmente porque eu posso desativá-lo (diferente da outra abordagem) ou até mesmo brincar com o tipo / tamanho da fonte.

Como faço as coisas da segunda maneira? Também seria bom saber como a primeira abordagem funciona.

tshepang
fonte
1
Ainda não o resolvi, mas estou muito interessado ... Parece que o contêiner mp4 (MPEG-4) pode lidar com fluxos de legendas em separado separados .. então (para mim) esse seria o caminho a seguir. Se você grava as legendas no vídeo em si, precisa recodificar o vídeo e elas são incorporadas para sempre ... A única vantagem das legendas codificadas é que o reprodutor de vídeo não precisa esteja ciente de mp4-subtitle-stream ... É bastante fácil codificar um AVI, mas ainda não tive a necessidade de usar fluxos de sutilemas (ainda :). Onde está o formato das suas legendas?
Peter.O
@fred Meu arquivo de legenda termina com .srt, e o Nautilus me diz que o formato é legendas SubRip (application / x-subrip).
tshepang

Respostas:

9

O formato do contêiner Matroska (mkv) suporta legendas baseadas em texto incorporadas como um fluxo separado no arquivo.

Você pode usar o mkvmerge para remuxar o arquivo para .mkv e incluir as legendas na saída, que podem ser ativadas / desativadas ao reproduzir o vídeo. Observe que esse método NÃO recodifica o vídeo ou o áudio, apenas coloca os mesmos dados em um formato de contêiner diferente, para não diminuir a qualidade do vídeo.

mkvmerge -o output.mkv video.mp4 subtitles.srt
axel_c
fonte
Funcionou como um encanto, e tão rápido que pensei que caiu no começo!
Tomislav Nakic-Alfirevic
3

Em um pacote chamado gpac, existe um utilitário CLI chamadoMP4Box

Aqui está um exemplo do que funcionou para mim ..

MP4Box  -add ~/file.noaudio.mp4 \
        -add ~/file.mp3 \
        -add ~/file.srt \
             ~/file.MP4Box.mp4   

Eu usei apenas vídeo e apenas áudio, mas certamente (?) Funcionará com um "filme" normal de áudio + vídeo .... É muito tarde, então deixarei por isso mesmo ...

Nota: As legendas funcionam no Totem, mas não no SMPlayer ...

Peter.O
fonte
1

Tente algo como:

mencoder -oac copy -ovc copy -sub subs.srt video.mp4 -o new_video.mp4
gelraen
fonte
Isso não funciona. Isso resulta em áudio e vídeo mutilado, e o vídeo é truncado (o arquivo inicial tem ~ 1,6 GB e o arquivo resultante é ~ 200 MB). Eu uso o mencoder 1.0-rc3.
tshepang
Eu tenho um arquivo mp4 e um srt. Mas com esses argumentos, a legenda não aparece no arquivo resultante. :(
TrueY
Parecia exatamente o que eu estava procurando. Tentei com um vídeo WebM (faixa de vídeo VP8, faixa de áudio VORBIS) e, como resultado, tive um vídeo quebrado. Vergonha. : \
Tomislav Nakic-Alfirevic