Como faço para adicionar e / ou manter legendas ao converter vídeo? -- video campo com ffmpeg campo com subtitle camp askubuntu Relacionado O problema

How do I add and/or keep subtitles when converting video?


24
vote

problema

português

Eu tenho um vídeo MKV Eu quero converter para MP4, mas de todos os quais eu tento e convertê-lo (handbrake, winff, ffmpeg, mencoder, ... eu perco as legendas do vídeo. Como posso converter o vídeo, mantendo o vídeo. as legendas ou adicionam uma subtítulo.srt?

Eu também gostaria de 2 passe codificando com uma taxa de bits de vídeo de 4054 e bits de áudio de 160.

obrigado.

me pediram 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    
english

I have a mkv video I want to convert to mp4, but every which way I try and convert it (Handbrake, WinFF, ffmpeg, mencoder,...I lose the video's subtitles. How can I convert the video,keeping the subtitles, or add a subtitles.srt?

I also would like 2 pass encoding with a video bitrate of 4054 and audio bitrate of 160.

Thanks.

I was asked for the 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 
        

Lista de respostas

27
 
vote

softsubs

MP4 suporta legendas de formato de texto de streaming, mas o suporte de reprodução para isso entre jogadores e dispositivos não é universal.

Exemplo básico usando o padrão seleção de fluxo comportamento enquanto Copiar o fluxo O áudio:

  ffmpeg -i input.mkv -c copy -c:s mov_text output.mp4    

Exemplo para transmitir cópia Todos dos fluxos de vídeo e áudio, converter os fluxos de entrada de legendas baseados em texto (SRT, burro, VTT, etc) para o formato de texto de streaming, e definir o idioma para os dois primeiros fluxos de legendas.

  ffmpeg -i input.mkv -map 0 -c copy -c:s mov_text -metadata:s:s:0 language=eng -metadata:s:s:1 language=ipk output.mp4    

mesmo que acima, mas re-codificar o vídeo e áudio para formatos compatíveis com o contêiner MP4 (H.264 VIDEO:

  ffmpeg -i input.mkv -map 0 -c:v libx264 -c:a aac -c:s mov_text -metadata:s:s:0 language=eng -metadata:s:s:1 language=ipk output.mp4    

O mesmo que acima, mas use o -map opção para Escolha o primeiro fluxo de vídeo, segundo fluxo de áudio e terceiro fluxo de legendas:

  ffmpeg -i input.mkv -map 0:v:0 -map 0:a:1 -map 0:s:2 -c:v libx264 -c:a aac -c:s mov_text -metadata:s:s:0 language=eng output.mp4    

hardsubs

Entradas de formato de legendas baseadas em texto

Use o Filtro de legendas Para "Burn-in" formatos de legendas baseados em texto (SRT , Bunda, vtt, etc). Note que isso requer re-codificação, por isso ele será muito mais lento do que usar softsubs.

Exemplo básico usando o padrão seleção de fluxo comportamento enquanto Copiar o fluxo O áudio:

  ffmpeg -i input.mkv -filter_complex "subtitles=input.mkv" -c:a copy output.mp4    

Exemplo para usar o terceiro fluxo de vídeo, quinto fluxo de subtítulo e primeiro fluxo de áudio:

  ffmpeg -i input.mkv -filter_complex "[0:v:2]subtitles=input.mkv:si=4[v]" -map "[v]" -map 0:a:0 -c:a copy output.mp4    

Exemplo para um arquivo de entrada de subtítulo separado ( your-subtitles-file.srt ):

  ffmpeg -i input.mp4 -filter_complex "subtitles=your-subtitles-file.srt" -c:a copy output.mp4    

Entradas de formato de legendas baseadas em imagens

Use o Filtro de sobreposição . Este exemplo se sobreporá ao quarto fluxo de subtítulo ao longo do segundo fluxo de vídeo e transmitirá o sétimo fluxo de áudio:

  ffmpeg -i input.mkv -filter_complex "[0:v:2][0:s:3]overlay[v]" -map "[v]" -map 0:a:6 -c:a copy output.mp4    

também veja

  • FFMPEG Wiki: legendas
  • como usar o ffmpeg -i input.mkv -map 0 -c copy -c:s mov_text -metadata:s:s:0 language=eng -metadata:s:s:1 language=ipk output.mp4 0 opção para escolher fluxos
 

Softsubs

MP4 supports streaming text format subtitles, but playback support for this among players and devices is not universal.

Basic example using default stream selection behavior while stream copying the audio:

ffmpeg -i input.mkv -c copy -c:s mov_text output.mp4 

Example to stream copy all of the video and audio streams, convert the all text based subtitle input streams (SRT, ASS, VTT, etc) to the streaming text format, and set the language for the first two subtitle streams.

ffmpeg -i input.mkv -map 0 -c copy -c:s mov_text -metadata:s:s:0 language=eng -metadata:s:s:1 language=ipk output.mp4 

Same as above but re-encode the video and audio to formats compatible with the MP4 container (H.264 video:

ffmpeg -i input.mkv -map 0 -c:v libx264 -c:a aac -c:s mov_text -metadata:s:s:0 language=eng -metadata:s:s:1 language=ipk output.mp4 

Same as above but use the -map option to choose the first video stream, second audio stream, and third subtitle stream:

ffmpeg -i input.mkv -map 0:v:0 -map 0:a:1 -map 0:s:2 -c:v libx264 -c:a aac -c:s mov_text -metadata:s:s:0 language=eng output.mp4 

Hardsubs

Text based subtitle format inputs

Use the subtitles filter to "burn-in" text based subtitle formats (SRT, ASS, VTT, etc). Note that this requires re-encoding, so it will by much slower than using softsubs.

Basic example using default stream selection behavior while stream copying the audio:

ffmpeg -i input.mkv -filter_complex "subtitles=input.mkv" -c:a copy output.mp4 

Example to use the third video stream, fifth subtitle stream, and first audio stream:

ffmpeg -i input.mkv -filter_complex "[0:v:2]subtitles=input.mkv:si=4[v]" -map "[v]" -map 0:a:0 -c:a copy output.mp4 

Example for a separate subtitle input file (your-subtitles-file.srt):

ffmpeg -i input.mp4 -filter_complex "subtitles=your-subtitles-file.srt" -c:a copy output.mp4 

Image based subtitle format inputs

Use the overlay filter. This example will overlay the fourth subtitle stream over the second video stream, and stream copy the seventh audio stream:

ffmpeg -i input.mkv -filter_complex "[0:v:2][0:s:3]overlay[v]" -map "[v]" -map 0:a:6 -c:a copy output.mp4 

Also see

  • FFmpeg Wiki: Subtitles
  • How to use the -map option to choose streams
 
 
 
 
15
 
vote

Você pode usar -Map 0 para garantir que todos os fluxos sejam copiados. Se não for possível com o formato, o FFMPEG deve então sair.

-map 0 informa ffmpeg / libav para incluir todos os fluxos, não apenas aqueles para os quais você definiu regras de convecência.

normalmente -map é usado para definir o mapeamento de fluxo - i.e. stream 1 na entrada deve se tornar fluxo 0 na saída. Com apenas -map 0 você diz ffmpeg / libav para levar todos os fluxos sem embaralhar.

 

you can use -map 0 to ensure that all streams are copied. If it is not possible with the format, ffmpeg should then error out.

-map 0 tells ffmpeg/libav to include all streams, not just those for which you defined convecsion rules.

Normally -map is used to define stream mapping - i.e. stream 1 in the input should become stream 0 in the output. With just -map 0 you tell ffmpeg/libav to take all streams without shuffling.

 
 
1
 
vote

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

Para conversões mais complicadas, incluindo styling as legendas, você pode usar o Openshot.

 

If you just want to do a simple conversion to mp4 you can use VLC. VLC will accept a subtitles file and render it onto the output.

For more complicated conversions, including styling the subtitles, you can use OpenShot.

 
 
-1
 
vote
vote
Melhor resposta
 

Bem, encontrei uma maneira de fazer isso funcionar, não é ideal, mas funciona. Eu posso adicionar um SRT a um vídeo com mkvmerge. Apenas a queda é que faz o vídeo MKV, não MP4.

 

Well I found a way to make it work, not ideal, but it works. I can add a srt to a video with mkvmerge. Only downfall is it makes the video mkv, not mp4.

 
 

Perguntas relacionadas

0  Alterando a pasta do Downloder do Totem Subtitle  ( Changing totem subtitle downloder folder ) 
Totem Subtitle Downloader Plugin é incrível. Existe alguma maneira em que eu possa alterar a pasta padrão ~/.cache/totem/subtitles para desejado? Eu que...

31  Quais aplicativos para Sincronizar legendas de filmes estão disponíveis facilmente para o Ubuntu?  ( What apps to sync movie subtitles easily are available for ubuntu ) 
Eu tenho um arquivo de legendas que é cerca de 3 a 4 segundos atrás. Quais ferramentas posso usar para mover automaticamente todos os horários no arquivo de l...

8  Como jogar legendas búlgaras / cirílicas  ( How to play bulgarian cyrillic subtitles ) 
Olá membros Eu estou executando o Ubuntu 12.04.1 lts 32 bit meu único problema é que eu sou da Bulgária e quando um filme de download com subsulador Búlgaro V...

3  Erro do Subdownloader: Não é possível fazer o download de legendas  ( Subdownloader error unable to download subtitle ) 
(blablabla = um nome de um filme) O subdownloader me dá este erro: Unable to download subtitle blablabla.srt . Se alguém sabe, por favor responda com o inglê...

2  Usando OCR na subtítulo Editar  ( Using ocr in subtitle edit ) 
Eu uso a subtítulo Editar no Windows ao converter .pgs subs em formato .srt usando o utilitário OCR interno na versão do Windows da legenda Editar, mas parece...

5  Onde conseguir Aegisub?  ( Where to get aegisub ) 
Onde posso obter o novo Aegisub? O Ubuntu Reps tem apenas 2.1,9, que é muito buggy (não suporta minúsculas cirílicas, é desconectável para mim). Eu encontrei ...

3  Problema Bangla Subtitle (conectado letra) em VLC e Gnome-Mplayer  ( Bangla subtitleconnected letter problem in vlc and gnome mplayer ) 
Eu estou tentando executar um arquivo srt escrito em Unicode Bangla. Eu alterei as configurações de codificação para UTF-8 e selecione uma fonte Unicode B...

23  Como posso incorporar legendas em um arquivo de filme?  ( How can i embed subtitles into a movie file ) 
Minha TV só pode reproduzir legendas se forem incorporadas no arquivo (por exemplo, um MKV ou hardcoded sobre o vídeo). Então, dado um filme em um formato (...

10  Exibindo duas faixas de legendas simultaneamente  ( Displaying two subtitle tracks simultaneously ) 
Existe uma maneira de exibir várias legendas ao mesmo tempo? Ajudaria muito enquanto aprendeu uma nova língua. Eu tenho algum filme * .mkv com duas legendas e...

3  Video Player com boa renderização de subtítulos  ( Video player with good subtitle rendering ) 
Existe alguma maneira de melhorar as capacidades de renderização de subtítulos do totem? O posicionamento das legendas parece ser codificado em tê-lo e, mesmo...




© 2022 pergunte.org All Rights Reserved. Casa de perguntas e respostas todos os direitos reservados


Licensed under cc by-sa 3.0 with attribution required.