Hay un hilo en el foro de GoToMeeting donde los videos de g2m se transcodifican a MP4 en una dimensión fija de 1920x1080. Entonces, si la transmisión es de 1290x1104, su MP4 termina con un borde negro alrededor para que sea de 1920x1080. Vea la captura de pantalla a continuación.
Hice una prueba ffprobe en el archivo de salida creado por GoToMeeting. Si tuviera que usar ffmpeg, ¿cuáles serían las configuraciones para imitar la salida sin los bordes negros?
El g2m original tiene la siguiente información de códec:
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
El MP4 de salida del convertidor GoToMeeting es:
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
Veo una mención sobre h264 (Baseline) y aac (LC), pero no estoy seguro de cómo configurarlo en ffmpeg para crear el MP4 con esas configuraciones.
Respuesta1
Para que coincida principalmente con el MP4 creado por GTM, pero sin relleno, usaría
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
Algunas notas:
El MP4 producido por GTM tiene una velocidad de cuadros variable, lo que FFmpeg no hace para la salida MP4. La velocidad de cuadros teórica reportada por el GTM MP4 es de ~30 fps, así que eso es lo que he usado. Tenga en cuenta que la -r
opción debería estar presente, ya que .g2m informa una velocidad de cuadros de 1000!, lo cual es una bandera falsa, y FFmpeg intentará generar esa velocidad si no lo anula-r 30
Si las dimensiones del .g2m tienen valores impares, entonces deberán ser pares. Para hacer eso, inserte -vf scale=2*trunc(iw/2):-2
después de la -i meeting.g2m
opción.
Es extraño que una pista de audio de 44100 Hz se reduzca a 16K. Deberías mantenerlo a la velocidad de origen, así que omítelo.-ar 16k