Meu pai só pode usar um editor de vídeo antigo (Pinnacle Studio 12) que seja muito exigente em quais arquivos de vídeo ele importa. Aqui está a saída do avprobe de um dos vídeos que ele consegue importar:
encoder: Lavf53.24.2 bitrate: 9884 kb/s
Stream #0.0: Video: mpeg4 (Simple Profile), yuv420p,
1920x1080 [PAR 9:16 DAR 1:1], 25 tbn, 25 tbc
Eu quero usar um utilitário Linux como o avconv / ffmpeg para converter todos os arquivos de vídeo do meu pai para o formato acima. Depois de algumas horas de leitura e testes, consegui igualar todas as propriedades do stream de vídeo, exceto tbn, tbc e bitrate (veja a nota # 1 com o comando que eu uso). Aqui está o que o avprob reporta para os vídeos que eu crio:
bitrate: 36617 kb/s
Stream #0.0: Video: mpeg4 (Simple Profile), yuv420p,
1920x1080 [PAR 9:16 DAR 1:1], 25 fps, 25 tbr, 90k tbn, 65535 tbc
E aqui está um diff para evitar o problema de verificar novamente as duas saídas:
ORIG: bitrate: 9884 kb/s 25 tbn, 25 tbc
MINE: bitrate: 36617 kb/s 25 fps, 25 tbr, 90k tbn, 65535 tbc
Neste momento, estou preso. Eu tenho dificuldade em encontrar e entender o que é a Terra, a Terra e a Terra. Eu também me pergunto por que o avconv ignora o parâmetro -b: v 9756, mas acredito que vou descobrir isso com um pouco mais de googling e testes.
UPDATE
Eu tentei o mesmo comando no meu laptop que está executando o Ubuntu 12.04 e avconv 0.8.16-4: 0.8.16 e produz um vídeo que tem exatamente as mesmas propriedades! Veja a nota # 2. É claro que é muito difícil rebaixar o PC do meu pai do Ubuntu 14.04 para o 12.04, então ainda estou procurando uma solução que funcione lá. [para ser franco, há uma diferença no codec de áudio no comando que é executado no meu PC. Eu tive que substituir mp3
com libmp3lame
porque, por algum motivo, o primeiro não funciona.]
Note # 1 Aqui está o comando que eu uso (no ubuntu 14.04):
avconv -i GOPR0392.MP4 \
-codec:a mp3 -b:a 128k -ar:a 44100 \
-codec:v libxvid -aspect:v 1 -b:v 9756k \
test.avi
E esta é a saída:
avconv version 9.16-6:9.16-0ubuntu0.14.04.1, Copyright (c) 2000-2014 the Libav developers
built on Aug 10 2014 18:16:02 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x11f8060] Non-increasing DTS in stream 3: packet 2 with DTS 0, packet 3 with DTS 0
...
...
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x11f8060] Non-increasing DTS in stream 3: packet 54 with DTS 0, packet 55 with DTS 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x11f8060] Non-increasing DTS in stream 3: packet 55 with DTS 0, packet 56 with DTS 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x11f8060] Non-increasing DTS in stream 3: packet 56 with DTS 0, packet 57 with DTS 0
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'GOPR0392.MP4':
Metadata:
major_brand : mp41
minor_version : 538120216
compatible_brands: mp41
creation_time : 2015-02-08 01:30:55
Duration: 00:03:02.33, start: 0.000000, bitrate: 45149 kb/s
Stream #0.0(eng): Video: h264 (High), yuvj420p, 1920x1080 [PAR 1:1 DAR 16:9], 45007 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc
Metadata:
creation_time : 2015-02-08 01:30:55
Stream #0.1(eng): Audio: aac, 48000 Hz, stereo, fltp, 128 kb/s
Metadata:
creation_time : 2015-02-08 01:30:55
Stream #0.2(eng): Data: tmcd / 0x64636D74
Metadata:
creation_time : 2015-02-08 01:30:55
Stream #0.3(eng): Data: fdsc / 0x63736466, 9 kb/s
Metadata:
creation_time : 2015-02-08 01:30:55
File 'test.avi' already exists. Overwrite ? [y/N] y
Output #0, avi, to 'test.avi':
Metadata:
major_brand : mp41
minor_version : 538120216
compatible_brands: mp41
creation_time : 2015-02-08 01:30:55
ISFT : Lavf54.20.4
Stream #0.0(eng): Video: libxvid, yuv420p, 1920x1080 [PAR 9:16 DAR 1:1], q=2-31, 9756 kb/s, 90k tbn, 90k tbc
Metadata:
creation_time : 2015-02-08 01:30:55
Stream #0.1(eng): Audio: libmp3lame, 44100 Hz, stereo, fltp, 128 kb/s
Metadata:
creation_time : 2015-02-08 01:30:55
Stream mapping:
Stream #0:0 -> #0:0 (h264 -> libxvid)
Stream #0:1 -> #0:1 (aac -> libmp3lame)
Press ctrl-c to stop encoding
^Cframe= 1531 fps= 11 q=2.0 Lsize= 261134kB time=61.18 bitrate=34966.6kbits/s
video:131019kB audio:955kB global headers:0kB muxing overhead 97.868984%
Received signal 2: terminating.
Note # 2 O mesmo comando do meu latop (Ubuntu 12.04):
avconv -i GOPR0399.MP4 -codec:a libmp3lame -b:a 128k -ar:a 44100 -codec:v libxvid -aspect:v 1 -b:v 9756k test.avi
avconv version 0.8.16-4:0.8.16-0ubuntu0.12.04.1, Copyright (c) 2000-2014 the Libav developers
built on Sep 16 2014 18:35:14 with gcc 4.6.3
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'GOPR0399.MP4':
Metadata:
major_brand : mp41
minor_version : 538120216
compatible_brands: mp41
creation_time : 2015-02-11 17:53:34
Duration: 00:00:29.48, start: 0.000000, bitrate: 45176 kb/s
Stream #0.0(eng): Video: h264 (High), yuvj420p, 1920x1080 [PAR 1:1 DAR 16:9], 45028 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc
Metadata:
creation_time : 2015-02-11 17:53:34
Stream #0.1(eng): Audio: aac, 48000 Hz, stereo, s16, 128 kb/s
Metadata:
creation_time : 2015-02-11 17:53:34
Stream #0.2(eng): Data: tmcd / 0x64636D74, 0 kb/s
Metadata:
creation_time : 2015-02-11 17:53:34
Stream #0.3(eng): Data: fdsc / 0x63736466, 9 kb/s
Metadata:
creation_time : 2015-02-11 17:53:34
File 'test.avi' already exists. Overwrite ? [y/N] y
Incompatible pixel format 'yuvj420p' for codec 'libxvid', auto-selecting format 'yuv420p'
[buffer @ 0x9bd81a0] w:1920 h:1080 pixfmt:yuvj420p
[avsink @ 0x9bc89c0] auto-inserting filter 'auto-inserted scaler 0' between the filter 'src' and the filter 'out'
[scale @ 0x9bc8520] w:1920 h:1080 fmt:yuvj420p -> w:1920 h:1080 fmt:yuv420p flags:0x4
Output #0, avi, to 'test.avi':
Metadata:
major_brand : mp41
minor_version : 538120216
compatible_brands: mp41
creation_time : 2015-02-11 17:53:34
ISFT : Lavf53.21.1
Stream #0.0(eng): Video: mpeg4, yuv420p, 1920x1080 [PAR 9:16 DAR 1:1], q=2-31, 9756 kb/s, 25 tbn, 25 tbc
Metadata:
creation_time : 2015-02-11 17:53:34
Stream #0.1(eng): Audio: libmp3lame, 44100 Hz, stereo, s16, 128 kb/s
Metadata:
creation_time : 2015-02-11 17:53:34
Stream mapping:
Stream #0:0 -> #0:0 (h264 -> libxvid)
Stream #0:1 -> #0:1 (aac -> libmp3lame)
Press ctrl-c to stop encoding
frame= 737 fps= 14 q=3.0 Lsize= 36119kB time=29.48 bitrate=10037.0kbits/s
video:35605kB audio:461kB global headers:0kB muxing overhead 0.149473%
E agora o avprobe reporta exatamente as mesmas propriedades de vídeo (bem, a taxa de bits é um pouco diferente, mas eu acho que isso é esperado):
avprobe test.avi
avprobe version 0.8.16-4:0.8.16-0ubuntu0.12.04.1, Copyright (c) 2007-2014 the Libav developers
built on Sep 16 2014 18:35:14 with gcc 4.6.3
Input #0, avi, from 'test.avi':
Metadata:
encoder : Lavf53.21.1
Duration: 00:00:29.49, start: 0.000000, bitrate: 10032 kb/s
Stream #0.0: Video: mpeg4 (Simple Profile), yuv420p, 1920x1080 [PAR 9:16 DAR 1:1], 25 tbr, 25 tbn, 25 tbc
Stream #0.1: Audio: mp3, 44100 Hz, stereo, s16, 128 kb/s