Conversão FFMPEG mkv para mp4 perde legendas

11

Atualmente tentando converter minha biblioteca mkv para mp4 (Iphone 6 plus)

Consegui acessar a conversão de mkv para mp4 corretamente, mas estou perdendo a parte de legendas (SRT)

Aqui está o meu código:

dir/b/s *.mkv >mkvlist.txt   ///////// this gets a list of all the mkv files on the directory

for /F "delims=;" %%F in (mkvlist.txt) do ffmpeg.exe  -i "%%F" -format mp4 -vcodec copy -acodec aac -strict -2 -sn "%%~dF%%~pF%%~nF.mp4"   ///////////// this makes the conversion

del mkvlist.txt     ////// this deletes the txt file

Gostaria de incluir legendas no script, mas estou tendo problemas para inserir o nome correto para as legendas no script (já que este é um lote de várias conversões).

dpkmon
fonte
Os arquivos .mkv são um formato de contêiner. É muito provável que o arquivo mkv contenha um arquivo .srt que você possa extrair. Verifique se ele tem o mesmo nome que o arquivo .mp4 e deve funcionar. Na verdade, o arquivo mkv também pode conter um arquivo mp4, mas também pode ter um .divx, .avi ou qualquer outro formato de vídeo.
LPChip

Respostas:

17

MP4 não suporta SRT. Você pode usar softsubs ou hardsubs.

softsubs

Legendas que consistem como um fluxo separado no arquivo. Eles podem ser ativados / desativados pelo player e não exigem que a transmissão de vídeo seja recodificada.

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

O suporte do player para softsubs de texto programado no MP4 pode ser bastante ruim. Você só precisa tentar.

hardsubs

Hardsubs são "gravados" no vídeo, para que ele seja recodificado.

ffmpeg -i input.mkv -vf subtitles=input.mkv output.mp4

Consulte a documentação do filtro de legendas para obter mais informações, como selecionar um fluxo de legenda específico, se houver mais de um.

llogan
fonte
Você poderia me ajudar a entender melhor meu código? Onde e por que você adicionaria a recodificação para os subs? (E se você puder pensar em uma solução ou maneira de converter em lote todos os arquivos nas subpastas com suas respectivas subpastas?) (Se não houver legendas, será necessário pular o arquivo completamente e passar para o próximo.
dpkmon 27/06
2

Eu tive um problema semelhante passando de MP4 para MKV a partir de alguns arquivos mp4 que rasguei com o Handbrake. Consultei https://en.wikibooks.org/wiki/FFMPEG_An_Intermediate_Guide/subtitle_options , que implicava formatos de legenda específicos para mkv vs mp4. Depois de brincar com as conversões ass e mov_text que não funcionaram, testei alguns arquivos e notei o formato dvd_subtitle aparecendo. Depois de muita brincadeira, o seguinte funcionou.

ffmpeg -i "\\server\directory\Sourcefile.mp4" -c:v copy -c:a copy -c:s dvd_subtitle "\\server\directory\Outputfile.mkv"

Espero que ajude.

Von Rugen
fonte