-map <inputNo>:<streamNo> diz ao ffmpeg para fazer stream streamNo da entrada inputNo e adicioná-lo à saída, onde <inputNo> começa com 0.
Às vezes, você pode querer usar o mesmo fluxo de entrada duas vezes (como -map 0:1 -map 0:1 no exemplo) porque você pode codificar cada um com codecs / parâmetros diferentes. No exemplo, a saída contém o mesmo fluxo de áudio duas vezes, um em MP3 e outro em AAC.
Por padrão (isto é, sem o comando -map ), um vídeo, um áudio e um fluxo de legenda das entradas são obtidos. Se você quiser mapear todos os fluxos de uma entrada, use -map <inputNo> .
O fato de você não obter vídeo com seu comando pode significar apenas uma coisa: sua trilha de vídeo é codificada com um codec que pode ser alterado em MKV, mas não em MP4. Por isso, é descartado automaticamente. Você pode postar um log de ffmpeg -i input.mkv para que possamos verificar com quais codecs as faixas estão codificadas?
Por fim, -c:s é usado para o codec de legendas (enquanto -c:a é para áudio e -c:v para vídeo)