Tengo un problema. Grabé mis videos por separado y luego les agregué sonido. A veces, el sonido tiene una duración mayor o menor en comparación con la duración del video. Por lo general, el sonido es más largo, a veces alrededor de 20 segundos. Para mí, cuando ejecuto en mi PC a través de flv o algún reproductor de Windows Media, eso no es un problema, ya que después de que termina el video, la última captura de video permanece en pantalla (como una imagen), y el sonido aún se está ejecutando, y el video termina después del sonido. se acabó. Así que todo está bien en mi PC cuando lo ejecuto como un archivo .flv o .mp4. Pero, cuando lo cargo en Google Drive o en algún otro lugar en la web (es decir, cuando lo ejecuto en mi navegador para verlo después de cargarlo), veo que mi video se corta a la duración del video (por lo que mi sonido es cortado). Entiendo que esto se debe a los diferentes tamaños de duración de sonido y video.
Ahora necesito un comando con ffmpeg que pueda hacer que mi video se extienda a la duración de mi sonido. Me gustaría no volver a codificar mis videos con sonido (en el sentido de que necesitaría poner mi archivo mp3 en el comando ffmpeg) si no lo necesito (ya que tengo muchos videos y el sonido ya está insertado en ellos), pero solo para volver a codificar el video con algún comando ffmpeg para extender la duración del video a la duración del sonido.
He visto esto (no estoy seguro en este momento si esto me ayudaría): https://superuser.com/questions/801547/ffmpeg-add-audio-but-keep-video-length-the-same-not- más corto
Pero con este enfoque, primero debe volver a codificar el video con el archivo de sonido (mp3 o similar).
¿Se puede hacer, y cuál sería el mandato, o los mandatos para ello? (Y si la única forma es volver a codificarlo con un archivo mp3, ¿cuál sería el comando para ello?)
Editar: no quiero cortar mi sonido, necesito mantener el último cuadro hasta que termine mi sonido. Actualmente, el último cuadro se mantiene solo cuando lo veo en mi PC, cuando lo cargo, el clip se corta inmediatamente cuando se detiene el video.
Puede hackear esto usando mp4fpsmod (enlace directo a Win binary; fuente de C++ en https://github.com/nu774/mp4fpsmod ).
El primer paso es extraer las marcas de tiempo del video existente
mp4fpsmod -p vid_tc.txt vid.mp4
Esto producirá un archivo de texto como este
# timecode format v2
0
40
80
120
...
4880
4920
4960
Cada línea contiene la marca de tiempo del cuadro #N en milisegundos.
En este ejemplo, cada cuadro tiene una duración de 40 milisegundos y el último cuadro se muestra a los 4960 ms y, por lo tanto, la transmisión de video tiene una duración de 5 segundos.
Ahora suponga que su audio tiene una duración de 11,34 segundos == 11340 ms. Edite el último código de tiempo a algo justo debajo 11340
, como 11320
.
# timecode format v2
0
40
80
120
...
4880
4920
11320
y luego corre
mp4fpsmod -x -T keep -t vid_tc.txt -o vid_new.mp4 vid.mp4
Esto creará un nuevo archivo vid_new.mp4
, que puede cargar. La duración que se muestra en los reproductores o herramientas de escritorio puede ser incorrecta, pero la reproducción debe ser la deseada, excepto que el último cuadro se muestra junto con el final del audio. Esto salta la recodificación y es rápido. Puede agregar -i
y omitir -o vid_new.mp4
si desea editar el código de tiempo en el lugar en el archivo existente, es decir
mp4fpsmod -x -T keep -t vid_tc.txt -i vid.mp4
pero no lo recomiendo.
9000
que no funcionará para una transmisión de audio de 11,34 segundos.
puntapié
DaríoBB
puntapié
gian
DaríoBB