Você pode usar as ferramentas ffprobe
e ffmpeg
. Primeiro, descubra os números do vídeo correspondente e os fluxos de áudio usando a ferramenta ffprobe
:
$ ffprobe video.avi
ffprobe version 3.2.10-1~deb9u1 Copyright (c) 2007-2018 the FFmpeg developers
built with gcc 6.3.0 (Debian 6.3.0-18) 20170516
...
Input #0, avi,webm, from 'video.avi':
Stream #0:0(eng): Video: mpeg4 (DX50 / 0x30355844), yuv420p, 704x480 [SAR 1:1 DAR 22:15], SAR 10:11 DAR 4:3, 23.98 fps, 23.98 tbr, 1k tbn, 30k tbc (default)
Stream #0:1(jpn): Audio: aac (HE-AAC), 44100 Hz, 5.1, fltp (default)
Metadata:
title : 5.1 HE-AAC
Stream #0:2(eng): Audio: vorbis, 48000 Hz, stereo, fltp
Metadata:
title : 2.0 Ogg Vorbis
Nesse caso, queremos reter o fluxo de vídeo 0: 0 e misturar os fluxos de áudio em inglês e japonês 0: 1 e 0: 2 em um único fluxo de áudio. Para isso, usaremos a ferramenta ffmpeg
com o filtro de áudio amerge
:
$ ffmpeg -fflags +genpts -i video.avi \
> -filter_complex '[0:1][0:2] amerge=inputs=2' \
> -c:v copy -c:a aac -ac 2 -q:a 128 video-converted.avi
Explicação das opções:
-
-fflags +genpts
- Não recodificaremos o fluxo de vídeo. No entanto, se o vídeo não contiver filestamps , o muxer pode recusar isso com uma mensagem de erro. Regenerar apenas os timestamps corrige isso sem ter que recodificar todo o fluxo de vídeo, o que seria lento e desnecessário. -
-i video.avi
- Especifica nosso arquivo de vídeo de entrada. -
-filter_complex '[0:1][0:2] amerge=inputs=2'
- diz ao filtroamerge
para misturar fluxos de áudio 0: 1 e 0: 2 em um único fluxo de áudio. -
-c:v copy
- Manteremos o fluxo de vídeo original sem recodificar. -
-c:a aac -ac 2 -q:a 128
- Codificaremos o áudio usando o codec AAC com dois canais e uma taxa de bits de 128 kbps. -
video-converted.avi
- Isso especifica nosso arquivo de vídeo de saída.