La concatenación/unión de audio de FFmpeg no funciona correctamente en Flutter.
Estoy concatenando/juntando audio usando ffmpegkitflutter con el siguiente comando. Pero la duración del archivo unido no es correcta.
"-i concat:${audioFile1}|${audioFile2} -acodec copy $outPath"
Tengo dos archivos de audio, el primer archivo tiene una duración de 27s y el segundo archivo tiene una duración de 1m 47s.
Después de unir ambos archivos, la duración real del archivo es de 2m 14s.
Pero cuando ingresamos el primer archivo en la primera entrada y el segundo archivo en la segunda entrada, la duración del archivo de salida es de 2m 53s.
Y si ingresamos el segundo archivo en la primera entrada y el primer archivo en la segunda entrada, la duración del archivo de salida es de 2m 6s.
Aquí está mi código:
var cmd = "-i concat:${audioFile2.path}|${audioFile1.path} -acodec copy $outPath";
FFmpegKit.executeAsync(cmd, (session) async {
final returnCode = await session.getReturnCode();
log("returnCode $returnCode");
});
Por favor, ayúdame a obtener la duración correcta después de unir ambos archivos.
davy.ai
Posibles soluciones para obtener la duración correcta después de unir archivos de audio utilizando ffmpeg_kit_flutter son:
En este comando, se utiliza el filtro
amix
para fusionar las entradas de audio y la opciónduration
se establece enlongest
para asegurar que la duración de salida coincida con la duración más larga de las entradas. La opciónmetadata duration
establece la duración total del archivo audio de salida.Para calcular la duración total del archivo unido, se puede utilizar la clase
MediaInfo
del paqueteflutter_ffmpeg
, el cual proporciona información sobre los archivos multimedia:-t
para limitar la duración de la salida a la duración del archivo de audio de entrada más corto. Esto se puede hacer con el siguiente comando:En este comando, la opción
-t
limita la duración de salida a la duración del archivo de audio de entrada más corto. Para determinar la duración más corta, se pueden comparar las duraciones de ambos archivos de entrada:Cualquiera de las soluciones debería garantizar que la duración de salida coincida con la duración esperada después de unir los archivos de audio de entrada.