Como converter avi (xvid) para mkv ou mp4 (h264)

19

Muito noob quando se trata de vídeo. Estou tentando entender o que estou encontrando via Google ... mas é principalmente grego para mim.

Eu tenho vários arquivos Avi que não são reproduzidos na minha caixa WD TV Play. Mediainfo me diz que eles são xvid. As especificações da caixa mostram que isso deve ser bom ... mas pesquisar nos fóruns diz que é um sucesso. Então, eu gostaria de tentar convertê-los em arquivos MKV ou mp4 codificados em h264.

Acho que o avconv é a ferramenta, mas a leitura do manual me deixa realmente confusa.

Eu tentei o exemplo muito básico de:

avconv -i file.avi -c copy file.mp4

demorou menos de 4 segundos. E funcionou ... mais ou menos. É "tocado" que algo apareceu na tela ... mas havia artefatos horríveis e as cenas meio que se fundiam. Quero preservar a qualidade, se possível.

Não estou preocupado com o tamanho do arquivo. Também não estou muito preocupado com o tempo que leva, desde que eu possa fazê-lo em lote.

Alguém familiarizado com o processo pode me dar um comando com as opções?

Obrigado pela ajuda.

Estou publicando as informações de mídia, caso isso ajude:

General
Complete name                            : \\SERVER\Video\Public\test.avi
Format                                   : AVI
Format/Info                              : Audio Video Interleave
File size                                : 189 MiB
Duration                                 : 11mn 18s
Overall bit rate                         : 2 335 Kbps
Writing application                      : Lavf52.32.0

Video
ID                                       : 0
Format                                   : MPEG-4 Visual
Format profile                           : Advanced Simple@L5
Format settings, BVOP                    : 2
Format settings, QPel                    : No
Format settings, GMC                     : No warppoints
Format settings, Matrix                  : Default (H.263)
Muxing mode                              : Packed bitstream
Codec ID                                 : XVID
Codec ID/Hint                            : XviD
Duration                                 : 11mn 18s
Bit rate                                 : 2 129 Kbps
Width                                    : 720 pixels
Height                                   : 480 pixels
Display aspect ratio                     : 16:9
Frame rate                               : 29.970 fps
Standard                                 : NTSC
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Scan type                                : Progressive
Compression mode                         : Lossy
Bits/(Pixel*Frame)                       : 0.206
Stream size                              : 172 MiB (91%)
Writing library                          : XviD 1.2.1 (UTC 2008-12-04)

Audio
ID                                       : 1
Format                                   : MPEG Audio
Format version                           : Version 1
Format profile                           : Layer 3
Mode                                     : Joint stereo
Mode extension                           : MS Stereo
Codec ID                                 : 55
Codec ID/Hint                            : MP3
Duration                                 : 11mn 18s
Bit rate mode                            : Constant
Bit rate                                 : 192 Kbps
Channel(s)                               : 2 channels
Sampling rate                            : 48.0 KHz
Compression mode                         : Lossy
Stream size                              : 15.5 MiB (8%)
Alignment                                : Aligned on interleaves
Interleave, duration                     : 24 ms (0.72 video frame)
bcsteeve
fonte
Você deve considerar não recodificar de um codec com perda para outro. No caso em que seu vídeo está no codec Xvid, basta remuxá-lo para o contêiner Matroska.
v010dya

Respostas:

44

O comando padrão de http://manpages.ubuntu.com/manpages/precise/man1/avconv.1.html mostra isso:

avconv -i test.avi -c:v libx264 -c:a copy outputfile.mp4

Isso codificará novamente o vídeo para h264 (= AVC) e manterá o som inalterado, o que é mp3 e completamente legal para o padrão.

Algumas outras opções a serem consideradas com esta linha de comando são:

  • Ajuste a qualidade do vídeo de saída usando o -bparâmetro (taxa de bits) ou use o CRF (Constant Rate Factor) com algo como-crf 22
  • Use uma predefinição libx264, como -preset veryslowpara vídeo aprimorado

Se você usá-las, as opções devem ser colocadas após a -c:v libx264opção ...

Você também pode olhar para os programas da GUI winffe o avidemuxque tornará as coisas menos complicadas. (também handbrakeé bom, mas nunca cheguei a um acordo)

thom
fonte
Ha! Não sei como você olha para aquele devorador de páginas de manual e puxa essa linha como um óbvio "comando padrão" ... mas estou agradecido por você ter feito! Funcionou. Eu agradeço.
precisa saber é o seguinte
Obrigado por mencionar o Handbrake - eu o tinha e esqueci completamente. Acabei abrindo, procurando minha pasta de filmes, inserindo todos os vídeos, enfileirando-os e pressionando "Encode"!
Scorpiodawg
Para o som AAC, muitos dispositivos podem ter um decodificador de hardware, portanto, mantê-lo como MP3 não é necessariamente melhor.
Ccpizza #
4

Caso esteja procurando algo gráfico, considere usar o pacote mkvtoolnix-gui. Na verdade, depende do utilitário de linha de comando, mas executará o comando com todas as opções necessárias para você.

mkvmerge gui 1

A primeira coisa que você precisa fazer é adicionar os arquivos que contêm todos os fluxos necessários. Você faz isso (obviamente) pressionando o botão Adicionar e selecionando o arquivo ou arrastando seus arquivos para a área "Arquivos de entrada". Você não deve usar o botão anexar, a menos que sua intenção seja colocar o conteúdo de um arquivo após o conteúdo de outro (tornando a duração do arquivo final a soma de todos os anexos).

Como você está dizendo que planeja apenas converter .aviarquivos, basta adicionar um arquivo de cada vez. Observe que o primeiro arquivo que você adicionará definirá automaticamente o nome do arquivo de saída, corresponderá ao nome da entrada, mas a extensão será alterada para .mkv. É claro que você pode mudar isso, se desejar.

Depois de adicionar algo, você poderá alterar os parâmetros dos fluxos (como o idioma atribuído, se a faixa está "ativada" por padrão e se um usuário pode optar por desativar esse fluxo todos juntos, se desejar.

Você pode dar o título para o fluxo. Sugiro que, se você tiver um vídeo com vários áudio, use-o junto com o idioma. Por exemplo, você pode ter "original" ou "dub de voz única" ou "comentário do diretor" para os nomes das faixas. Muitos jogadores mostrarão isso quando você selecionar o fluxo para jogar, e é muito útil. Tente não repetir as informações lá, no entanto. Não há motivo para escrever "idioma inglês" quando você pode apenas definir o código do idioma da faixa.

Há também algumas opções específicas, que dependerão de qual fluxo você está trabalhando.

mkvmerge gui 2

Às vezes, você pode querer adicionar alguns anexos ao seu arquivo. Se você adicionar uma imagem, muitos gerenciadores de arquivos exibirão esta imagem como o ícone do arquivo de vídeo final. Se você estiver copiando algum tipo de filme e tiver a capa para ele, pode ser uma boa opção colocá-lo como anexo.

mkvmerge gui 3

Finalmente, na guia Global, você pode definir os metadados para o arquivo inteiro. O mais comum é definir o título. Será pré-preenchido pelos dados obtidos do primeiro arquivo que você adicionou aos "Arquivos de entrada".

Você também pode adicionar informações do capítulo. O Mkvmerge é capaz de ler o arquivo de capítulos ogm e capítulos xml. Ele também permite editar arquivos de capítulos, mas lembre-se de que essa guia funciona como um aplicativo separado; portanto, você não editará capítulos adicionados ao seu arquivo de saída; será necessário salvá-los nessa guia e, em seguida, adicione-os como entrada para o arquivo que você está usando agora.

O recurso interessante do mkvmerge gui é o "Copiar para a área de transferência", que copia o comando exato do terminal que o aplicativo está planejando executar. Se você deseja misturar muitos arquivos, pode configurá-los da maneira que desejar, copie o comando para a área de transferência e faça um script bash que faça todos os arquivos que você deseja de uma só vez.

v010dya
fonte
Como você começa?
uvasal 12/02
11
MMG é a resposta
uvasal
2

O Avidemux é um editor de vídeo gratuito projetado para tarefas simples de corte, filtragem e codificação. Ele suporta muitos tipos de arquivos, incluindo AVI, arquivos MPEG compatíveis com DVD, MP4 e ASF, usando uma variedade de codecs. As tarefas podem ser automatizadas usando projetos, fila de trabalhos e recursos poderosos de script. O Avidemux está disponível para o Ubuntu.

sudo apt-get update
sudo apt-get install avidemux
kyodake
fonte
0

Usei os dois comandos a seguir para converter meus arquivos AVI em arquivos MP4 que seriam transmitidos corretamente do meu WD My Cloud Mirror:

ffmpeg -i infile.AVI -strict -2 -profile:v baseline -pix_fmt yuv420p temp.mp4
MP4Box -mpeg4 -brand mp42:0 -add temp.mp4#video:name= -add temp.mp4#audio:name= -new outfile.mp4

ffmpegconverte o arquivo AVI em MP4, alterando o perfil de vídeo e o formato de pixel para se adequar aos valores amplamente aceitos. MP4Boxreembalar os fluxos no MP4 final e adicionar metadados padrão.

Patrick Ring
fonte
-strict -2não é necessário codificar o áudio AAC, a menos que ffmpegseja muito antigo. Você poderá pular MP4Boxse adicionar a -movflags +faststartopção de saída em ffmpeg.
Llogan