Há um tópico no fórum GoToMeeting onde vídeos g2m são transcodificados para MP4 em uma dimensão fixa de 1920x1080. Então, se sua transmissão for 1290x1104, seu MP4 acabará com uma borda preta ao redor para torná-lo 1920x1080. Veja a captura de tela abaixo.
Fiz um ffprobe no arquivo de saída criado pelo GoToMeeting. Se eu usasse o ffmpeg, quais seriam as configurações para imitar a saída sem as bordas pretas?
O g2m original possui as seguintes informações de codec:
Input #0, asf, from 'c:\meeting.g2m':
Metadata:
DeviceConformanceTemplate: L2
WMFSDKNeeded : 0.0.0.0000
WMFSDKVersion : 12.0.9600.17415
IsVBR : 1
WM/ToolVersion : 7.16.0 Build 4800
WM/ToolName : GoToMeeting
BitRateFrom the writer: 173566
Audio samples : 18871
Video samples : 6977
recording time : Fri, 29 Apr 2016 12:12:57 Mountain Daylight Time
Duration: 00:31:30.99, start: 0.000000, bitrate: 176 kb/s
Stream #0:0: Audio: wmav2 (a[1][0][0] / 0x0161), 44100 Hz, 1 channels, fltp, 48 kb/s
Stream #0:1: Data: none, 2 kb/s
Stream #0:2: Video: g2m (G2M5 / 0x354D3247), rgb24, 1290x1104, 125 kb/s, 1k tbr, 1k tbn, 1k tbc
Unsupported codec with id 0 for input stream 1
A saída MP4 do conversor GoToMeeting é:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'c:\meeting.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: mp42isomavc1
creation_time : 2016-05-12 20:00:32
Duration: 00:31:30.94, start: 0.000000, bitrate: 163 kb/s
Stream #0:0(eng): Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p, 1920x1080, 98 kb/s, 6.13 fps, 29.85 tbr, 90k tbn, 180k tbc (default)
Metadata:
handler_name : Citrix h264 stream handler
encoder : AVC Coding
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 16000 Hz, mono, fltp, 64 kb/s (default)
Metadata:
handler_name : AAC stream handler
Vejo menção sobre h264 (Baseline) e aac (LC), mas não tenho certeza de como você configura isso no ffmpeg para criar o MP4 com essas configurações.
Responder1
Para corresponder principalmente ao MP4 criado pelo GTM, mas sem preenchimento, eu usaria
ffmpeg -i meeting.g2m -profile:v baseline -c:v libx264 -crf 23 -r 30 -pix_fmt yuv420p
-c:a aac -b:a 64k -ar 16k -ac 1 output.mp4
Algumas notas:
O MP4 produzido pelo GTM tem taxa de quadros variável, o que o FFmpeg não faz para saída MP4. A taxa de quadros nocional relatada pelo GTM MP4 é de aproximadamente 30fps, então foi isso que usei. Observe que a -r
opção deve estar presente, pois o .g2m está relatando uma taxa de quadros de 1000!, que é um sinalizador falso, e o FFmpeg tentará produzir nessa taxa se não for substituído por-r 30
Se as dimensões do .g2m tiverem valores ímpares, elas deverão ser tornadas pares. Para fazer isso, insira -vf scale=2*trunc(iw/2):-2
após a -i meeting.g2m
opção.
É estranho que uma faixa de áudio de 44.100 Hz esteja sendo reduzida para 16K. Você deve mantê-lo na taxa original, então pule-ar 16k