Encontré algo para videos, que se ve así.
ffmpeg -i * -c:v libx264 -crf 22 -map 0 -segment_time 1 -g 1 -sc_threshold 0 -force_key_frames "expr:gte(t,n_forced*9)" -f segment output%03d.mp4
Traté de usar eso para un archivo de audio, pero solo el primer archivo de audio contenía audio real, los otros estaban en silencio, aparte de eso era bueno, creaba un nuevo archivo de audio por cada segundo. ¿Alguien sabe qué modificar para que esto funcione con archivos de audio u otro comando que pueda hacer lo mismo?
Respuestas:
Esto funcionó para mí cuando lo probé en un archivo mp3.
¿Dónde
-segment_time
está la cantidad de tiempo que desea por cada archivo (en segundos)?Referencias
fuente
mp3
conm4a
Para dividir un gran archivo de audio en un conjunto de pistas con diferentes longitudes, puede usar el siguiente comando:
Por ejemplo, dividí un solo archivo .opus de la banda sonora original de inicio en subarchivos usando este archivo de texto que contiene inicio, fin y nombre:
Escribí este breve
awk
programa para leer el archivo de texto y crearffmpeg
comandos desde cada línea:Aquí hay una
python
versión más detallada del programa llamadosplit.py
, donde ahora tanto el archivo de pista original como el archivo de texto que especifica subpistas se leen desde la línea de comandos:Puede crear fácilmente
ffmpeg
llamadas cada vez más complicadas modificando la plantilla de comando y / o agregando más campos a cada línea del archivo track_list.fuente
subprocess.call(command)
es elpython
análogo asystem(command)
inawk
, los cuales le permiten enviarffmpeg
comandos al shell. Edité mi publicación para incluir unapython
implementación flexible que ilustrara una forma en que podría hacerlo .echo
para ejecutar los comandos.source="source audio file.m4a"; i=0; t1=0:00; for end_time in 1:24 5:40 14:48 19:33 35:11 40:00 46:08 51:58 ''; do i=$((i+1)); t0=$t1 t1=$end_time; echo ffmpeg -i "$source" -acodec copy -ss $t0 ${t1:+-to} $t1 $(printf "track%02d.%s" $i ${source##*.}); done
La siguiente línea dividirá un archivo de audio en varios archivos, cada uno con una duración de 30 segundos.
Cambie 30 (que es el número de segundos) a cualquier número que desee.
fuente
respuesta de slm :
no funcionaría para mí sin el
-map 0
agregado:fuente
La solución dada no funcionó para mí. Creo que esto se debe a una versión anterior de
ffmpeg
mi sistema.En cualquier caso, quería proporcionar una solución que funcionó para mí. También puede personalizar los temporizadores para permitir la superposición de audio si lo desea.
Output file #0 does not contain any stream
ffmpeg -i your_audio_file.mp3 -acodec copy -t 00:00:30 -ss 00:00:00 split_audio_file.mp3
divide tus archivos de audio en incrementos de 30 segundos
fuente