
Quiero agregar un audio M4A de 5 segundos de duración a un archivo de video MP4. Ya probé el -itsoffset
comando de ffmpeg
.
ffmpeg -i a.mp4 -itsoffset 00:00:10 -i b.m4a -map 0:0 -map 1:0 -preset ultrafast o.mp4
Salida de línea de comando
ffmpeg -i psy.mp4 -itsoffset 00:00:10 -i cut.m4a -map 0:0 -map 1:0 -c:v copy -preset ultrafast -y out.mp4
ffmpeg version N-50911-g9efcfbe Copyright (c) 2000-2013 the FFmpeg developers
built on Mar 13 2013 21:26:48 with gcc 4.7.2 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-av
isynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enab
le-libass --enable-libbluray --enable-libcaca --enable-libfreetype --enable-libg
sm --enable-libilbc --enable-libmp3lame --enable-libopencore-amrnb --enable-libo
pencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-li
bschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-lib
twolame --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enabl
e-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib
libavutil 52. 19.100 / 52. 19.100
libavcodec 55. 0.100 / 55. 0.100
libavformat 55. 0.100 / 55. 0.100
libavdevice 54. 4.100 / 54. 4.100
libavfilter 3. 45.103 / 3. 45.103
libswscale 2. 2.100 / 2. 2.100
libswresample 0. 17.102 / 0. 17.102
libpostproc 52. 2.100 / 52. 2.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'psy.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: isommp42
creation_time : 2013-12-03 03:22:01
Duration: 00:04:12.17, start: 0.000000, bitrate: 723 kb/s
Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yu
v420p, 640x360, 624 kb/s, 23.98 fps, 23.98 tbr, 48k tbn, 47.95 tbc
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 96
kb/s
Metadata:
creation_time : 2013-12-03 03:22:02
handler_name : IsoMedia File Produced by Google, 5-11-2011
Input #1, mov,mp4,m4a,3gp,3g2,mj2, from 'cut.m4a':
Metadata:
major_brand : M4A
minor_version : 512
compatible_brands: isomiso2
encoder : Lavf55.0.100
Duration: 00:00:05.24, start: 0.237460, bitrate: 99 kb/s
Stream #1:0(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 96
kb/s
Metadata:
handler_name : SoundHandler
Codec AVOption preset (Set the encoding preset (cf. x264 --fullhelp)) specified
for output file #0 (out.mp4) has not been used for any stream. The most likely r
eason is either wrong type (e.g. a video option with no video streams) or that i
t is a private option of some encoder which was not actually used for any stream
.
Output #0, mp4, to 'out.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: isommp42
encoder : Lavf55.0.100
Stream #0:0(und): Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 640x360, q=
2-31, 624 kb/s, 23.98 fps, 48k tbn, 48k tbc
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac ([64][0][0][0] / 0x0040), 44100 Hz, stereo, s16
, 128 kb/s
Metadata:
handler_name : SoundHandler
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Stream #1:0 -> #0:1 (aac -> libvo_aacenc)
Press [q] to stop, [?] for help
frame= 916 fps=0.0 q=-1.0 size= 865kB time=00:00:38.16 bitrate= 185.7kbits/
frame= 1758 fps=1749 q=-1.0 size= 865kB time=00:01:13.28 bitrate= 96.7kbits
frame= 2477 fps=1645 q=-1.0 size= 865kB time=00:01:43.26 bitrate= 68.6kbits
frame= 3182 fps=1586 q=-1.0 size= 865kB time=00:02:12.67 bitrate= 53.4kbits
frame= 3961 fps=1580 q=-1.0 size= 865kB time=00:02:45.16 bitrate= 42.9kbits
frame= 4904 fps=1631 q=-1.0 size= 865kB time=00:03:24.49 bitrate= 34.7kbits
frame= 5667 fps=1615 q=-1.0 size= 865kB time=00:03:56.31 bitrate= 30.0kbits
frame= 6046 fps=1549 q=-1.0 Lsize= 19345kB time=00:04:12.12 bitrate= 628.6kbit
s/s
video:19234kB audio:83kB subtitle:0 global headers:0kB muxing overhead 0.146119%
El problema es: comienza a las 00:00:10 pero se repite cada 10 segundos. (Puedes notar esto solo cuando reproduces el video completo sin tocar la barra de búsqueda).
Cuando reproduzco este video en Android, el audio comienza desde el principio. Funciona bien con VLC.
Resultado Esperado:Silencio en el video hasta el tiempo especificado, luego mi audio y nuevamente silencio después del audio.
Respuesta1
Finalmente resolví el problema agregando solo 1 opción.-async
ffmpeg -y -i a.mp4 -itsoffset 00:00:30 -i sng.m4a -map 0:0 -map 1:0 -c:v copy -preset ultrafast -async 1 out.mp4
De forma predeterminada, las marcas de tiempo de audio/vídeo se amplían para que coincidan entre sí; cuál fue mi problema de audio a partir del inicial incluso después de dar la opción "itsoffset".
segúnDocumento Ffmpeg, el uso -async 1
corrige solo la marca de tiempo inicial del audio. Sé que esta opción está en desuso; pero de todos modos resolvió mi caso.