Como posso dizer ao ffmpeg para transcodificar para um codec de vídeo suportado pelo Windows Media Player?

6

O comando abaixo foi executado sem erro.

ffmpeg -i thevideo.mkv outvideo.avi

Tentativas subseqüentes de reproduzir outvideo.avi no Windows Media Player geraram esse erro

You may need an additional video decoder to play this file.

This file contains a track in an unknown format (code "ARGB") format. You may need to     
install a DirectShow decoder for this video format in order to play this file.

Detalhes do erro fornecidos pelo Windows Media Player indicam que o codec mpg2 é necessário para reproduzir o vídeo. Como posso dizer ao ffmpeg para transcodificar para um codec de vídeo suportado pelo Windows Media Player?

    
por Everyone 25.07.2011 / 10:28

2 respostas

5

Você não pode, pois ffmpeg por si só não sabe quais codecs estão instalados em seu sistema e acessíveis para o Windows Media Player. Isso ocorre porque ffmpeg usa suas próprias bibliotecas libavcodec e libavformat para codificar e decodificar. Portanto, um vídeo gerado por ffmpeg não deve necessariamente ser reproduzido no Windows Media Player ..

Solução 1: instalar codecs adicionais

You may need to install a DirectShow decoder for this video format in order to play this file.

Isso é o que você eventualmente precisa fazer, pois o Windows não é fornecido com todos os codecs possíveis. Na verdade, as versões do Windows até 7 não possuem quase nenhum codec adicional, exigindo que o usuário instale um pacote de codecs como o K-Lite ou CCCP . No entanto, você não pode presumir que cada PC tenha aqueles instalados, e você pode querer enviar seus vídeos com um media player como o VLC, que fornece seus próprios codecs e não depende do Windows

Instalar codecs multimídia adicionais é algo que você provavelmente deveria fazer em todas as novas máquinas Windows.

Solução 2: converter para um codec que o WMP reproduz

De acordo com as informações sobre os tipos de arquivos multimídia que o Windows Media Player oferece suporte , há alguns formatos suportados nativamente, mas eles não são muito específicos sobre isso. Se você quer estar no lado seguro, provavelmente deveria converter em Windows Media Video (wmv). Para tudo mais, bem, aqui está o que a Microsoft diz:

Audio content or video content that is compressed with a wide variety of codecs can be stored in an .avi file and played in Windows Media Player, if the appropriate codecs are installed on the computer. Video codecs that are frequently used in .avi files include the following codecs [...]

A FAQ do ffmpeg é um pouco mais específica. Eles dizem:

Which codecs are supported by Windows?

The following list of video codecs should work on most Windows systems:

  • msmpeg4v2, .avi/.asf
  • msmpeg4, .asf only
  • wmv1, .asf only
  • wmv2 .asf only
  • mpeg4, Only if you have some MPEG-4 codec like ffdshow or Xvid installed.
  • mpeg1video, .mpg only

Note, ASF files often have .wmv or .wma extensions in Windows. It should also be mentioned that Microsoft claims a patent on the ASF format, and may sue or threaten users who create ASF files with non-Microsoft software. It is strongly advised to avoid ASF where possible.

The following list of audio codecs should work on most Windows systems:

  • adpcm_ima_wav
  • adpcm_ms
  • pcm_s16le, always
  • libmp3lame, If some MP3 codec like LAME is installed.

Portanto, ao converter, você pode especificar o codec que deseja usar usando as opções -vcodec e -acodec para vídeo e áudio, respectivamente.

Por exemplo:

ffmpeg -i input.mp4 -vcodec msmpeg4v2 -acodec pcm_s16le output.avi

Observe que isso está usando áudio não compactado, pois você não pode ter certeza sobre qual codec de áudio será suportado pelo Windows. Se tiver sorte, você pode experimentar o MP3 (e ele deve funcionar com a maioria das novas máquinas) e usar a opção libmp3lame .

    
por 25.07.2011 / 10:49
2

Tente isso

C:\>ffmpeg -i yourvideofile.xyz -acodec mp2 -vcodec mpeg1video h.mpg

em seguida, reproduza o arquivo de saída, h.mpg no WMP, esperamos que funcione!

Isso é convertê-lo em um formato de contêiner MPEG, com codec de áudio MP2 e codec de vídeo MPEG1.

Essa combinação deve ser suportada pelo WMP.

Nenhuma razão para misturar essas 3 coisas. E você pode baixar mediainfo para descobrir esse tipo de informação de qualquer arquivo de vídeo. A versão CLI do mediainfo é muito clara no link

    
por 25.07.2011 / 18:00