Copie várias faixas de legendas PGS com FFmpeg

Copie várias faixas de legendas PGS com FFmpeg

Estou usando Debian 9. Tenho um arquivo com diversas faixas de áudio e legendas em PGS. Gostaria de passar o vídeo para h265 e manter todas as faixas de áudio e legendas como estão em um contêiner .mkv, pois pelo que entendi o mp4 não suporta legendas baseadas em imagens.

O comando que eu uso é:

ffmpeg -i entrada.264.mkv -c:v libx265 -f matroska -map 0 salida.265.mkv

mas recebo este erro no ffmpeg:

[matroska,webm @ 0x55ec1759fee0] Could not find codec parameters for stream 6 (Subtitle: hdmv_pgs_subtitle (pgssub)): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[matroska,webm @ 0x55ec1759fee0] Could not find codec parameters for stream 7 (Subtitle: hdmv_pgs_subtitle (pgssub)): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[matroska,webm @ 0x55ec1759fee0] Could not find codec parameters for stream 8 (Subtitle: hdmv_pgs_subtitle (pgssub)): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[matroska,webm @ 0x55ec1759fee0] Could not find codec parameters for stream 9 (Subtitle: hdmv_pgs_subtitle (pgssub)): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[matroska,webm @ 0x55ec1759fee0] Could not find codec parameters for stream 10 (Subtitle: hdmv_pgs_subtitle (pgssub)): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[matroska,webm @ 0x55ec1759fee0] Could not find codec parameters for stream 11 (Subtitle: hdmv_pgs_subtitle (pgssub)): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
Only SUBTITLE_ASS type supported.
Subtitle encoding failed

E, querendo copiá-los um de cada vez, basta gravar o primeiro.

Aquisão os dados do arquivo em questão:

Resumindo:

Resultado esperado: Recodificar um arquivo de vídeo para h265 e copiar todo o áudio e legendas sem modificá-los ou gravá-los no vídeo para poder escolher qual usar.

Resultado obtido: Erro por falta de parâmetros para as legendas.

Existe uma maneira de fazer isso diretamente do ffmpeg sem precisar extrair as legendas uma por uma e depois adicioná-las ao vídeo através de algum programa como o mkvmerge?

Responder1

Cópia de fluxo(re-mux) tudo menos o vídeo:

ffmpeg -i entrada.264.mkv -map 0 -c copy -c:v libx265 salida.265.mkv

-map 0inclui todos os fluxos da entrada até a saída, em vez de depender docomportamento de seleção de fluxo padrãoque inclui apenas um fluxo por tipo de fluxo.

Responder2

Isso não é um erro. É uma mensagem de aviso. O -loglevel warningretorna a mensagem:

ffmpeg -i entrada.264.mkv -loglevel warning -c:v libx265 -f matroska -map 0 salida.265.mkv

E o -loglevel errorsuprime:

ffmpeg -i entrada.264.mkv -loglevel error -c:v libx265 -f matroska -map 0 salida.265.mkv

Testei todas as legendas do meu próprio arquivo mkv de saída atravésEdição de legendae eles estão todos intactos. Acho que este aviso é exibido apenas para avisá-lo, caso você decida recodificar essas legendas posteriormente.

informação relacionada