Que extensões de arquivo o ffmpeg suporta?

2

Estou tentando extrair uma legenda de um disco Blu-ray e é um hdmv_pgs_subtitle . Então eu tento

ffmpeg -i file.m2ts -map 0:3 -scodec copy rip3/test.sub 

e obtenha

Could not write header for output file #0 (incorrect codec parameters ?): 
Operation not permitted

Então eu faço

ffmpeg -i file.m2ts -map 0:3 -scodec copy rip3/test.sup 
ffmpeg -i file.m2ts -map 0:3 -scodec copy rip3/test.srt

e um monte de outras extensões diferentes, até eu dar .mkv de um tiro, o que funciona.

Como posso encontrar quais extensões o ffmpeg permite? Eu não encontrei um lugar que, por exemplo nomes .mkv como uma extensão

ffmpeg -formats menciona matroska , mas não diz que .mkv é a extensão. Então, existe uma maneira de encontrar todas as extensões de arquivo suportadas para o ffmpeg?

EDIT: Depois de ler a resposta do slhck, encontrei as extensões fazendo este comando na pasta de origem.

find . -type f -iname "*.c" -exec egrep -H ".extensions" {} \;

O nome do arquivo fornecerá algumas informações sobre o tipo de formato que ele é.

    
por plitter 23.09.2013 / 21:50

1 resposta

4

Primeiramente, você pode ver todos os formatos (containers) chamando ffmpeg -formats . O fato de eles não mencionarem extensões é provavelmente porque uma extensão por si só é insignificante, e você pode substituir o formato de saída usando a opção -f .

Você pode ver quais são as extensões comuns para um determinado (des) muxer. Por exemplo:

$ ffmpeg -v 1 -h demuxer=matroska
  Demuxer matroska,webm [Matroska / WebM]:
  Common extensions: mkv,mk3d,mka,mks

Os formatos de saída e suas extensões são registrados nos codificadores. Então, você encontraria isso para Matroska, ao olhar para o código fonte do ffmpeg:

AVOutputFormat ff_matroska_muxer = {
    .name              = "matroska",
    .long_name         = NULL_IF_CONFIG_SMALL("Matroska"),
    .mime_type         = "video/x-matroska",
    .extensions        = "mkv",
    ....

Os formatos de entrada geralmente não são analisados pela extensão, mas pelos dados reais contidos.

Veja também:

O problema é que apenas dois de todos os formatos ffmpeg podem manipular legendas de suporte a HDMV PGS:

  • MPEG-TS
  • MKV (Matroska)

Você não pode usar um contêiner SRT porque é um conceito diferente. As legendas SRT são baseadas em texto, enquanto as legendas HDMV PGS são bitmaps reais.

Então, isso deve funcionar se tudo o que você precisa fazer é armazenar as legendas em algum lugar:

ffmpeg -i input.mkv -c:s:0 copy -map 0:s:0 output.mks
    
por 23.09.2013 / 22:18