
Tenho trabalhado com o ambiente abaixo.
Ubuntu 16.04.3
FFmpeg: 3.4.2
-- configuration: --prefix=/usr/local/ffmpeg_new/ --enable-cuda --enable-cuvid --enable-nvenc --enable-nonfree --enable-libnpp --extra-cflags=-I/usr/local/cuda/include --extra-ldflags=-L/usr/local/cuda/lib64 --enable-libvpx --enable-libvorbis --enable-libfreetype
Cuda 9.1.85
GPU: GeForce GTX 1080ti
Tenho dois arquivos de mídia: caller_video.webm (80 MB) e callee_video.webm (120 MB)
Então estou desmultiplicando os áudios desses vídeos por meio do comando abaixo:
time ffmpeg -y -i caller.webm -vn -ab 256 caller.wav
Caller.wav
= 260MB
Então, mixando caller.wav
o arquivo comcallee_video.webm
time ffmpeg -y -i callee_video.webm -i caller.wav -filter_complex '[0:a]aformat=sample_fmts=fltp:sample_rates=44100:channel_layouts=stereo,volume=0.5[a1]; [1:a]aformat=sample_fmts=fltp:sample_rates=44100:channel_layouts=stereo,volume=0.5[a2]; [a1][a2]amerge,pan=stereo|c0<c0+c2|c1<c1+c3[out]' -map 0:v -map '[out]' -c:v copy tempfile.mkv
Tamanho do arquivo temporário: 87 MB
Então, estou codificando o arquivo temporário por meio do comando abaixo:
time ffmpeg -y -i temp_file.mkv -pixel_format yuv444p -preset default -vf drawtext=fontfile=/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf:x=8:y=8:fontsize=16:fontcolor=yellow@1:expansion=strftime:basetime=1518172680000000:text='%Y-%m-%d %H-%M-%S' -acodec libvorbis -c:v h264_nvenc final_video.mkv
Tamanho do vídeo final: 270 MB
O que estou tentando entender é que quando codifico o orig webm
arquivo de 80 MB, o tamanho do arquivo mkv de saída codificado é ~20MB.
No entanto, quando executei a mesma operação no arquivo de mídia temporário muxado ( callee_video.webm
+ caller.wav
), cujo tamanho era 87 MB antes da codificação, passou a ser 270 MB.
O que estou perdendo ou fazendo de errado?
Responder1
Você não especificou nenhuma configuração de qualidade ou taxa de bits para seu comando de codificação, portanto cabe ao codificador escolhê-la. Isso pode resultar em uma taxa de bits maior.
Você pode especificar -b:v 1M
o uso de uma codificação de taxa de bits média de passagem única a 1 Mbit/s. A taxa de bits dependerá do tamanho do vídeo e dos seus requisitos de qualidade.
Você também pode usar -qp 23
para executar uma codificação de qualidade fixa com taxa de bits variável em QP 23. QP mais alto significa qualidade mais baixa e vice-versa.
Consulte ffmpeg -h encoder=h264_nvenc
as opções possíveis para o codificador.