¿Existe aplicación para trocear un archivo FLAC en varios? (kubuntu)

Hola a todos, tengo el siguiente problema.
En su día ripeé un CD de audio en extensión FLAC, pero no me di cuenta que lo hacía en un único archivo y no un archivo por cada pista. La cuestión es que he perdido el CD y ahora quiero tener todo el disco en una carpeta, pero con los archivos divididos en pistas. Una opción que se me ocurre es grabar el archivo FLAC en un CD y luego ripear este pista a pista, aunque imagino que se perderá calidad de sonido por el camino. ¿Existe alguna opción que me permita coger el archivo FLAC en el que está todo el disco y que lo divida en sus correspondientes pistas automáticamente?, todo esto lo haría bajo Kubuntu 14.04 64bits.
Gracias de antemano por la ayuda. Salu2.[bye]
1º Instalate el ffmpeg
2º Descargate este script:
#!/bin/bash

if [ "$#" -ne 2 ];
then
   echo "Hay que pasar el nombre del archivo original y el nombre del archivo destino"
   exit 0
fi

for i in {0..30}
do
    ffmpeg -i $1 -map 0:$i -loglevel quiet -c:a copy $2$i.flac
done


3º Proporciona permisos de ejecución:
chmod +x script.sh


4º Ejecutalo, el primer parametro es el nombre del fichero original. El segundo es el nombre que tendrán los ficheros de salida:

Un ejemplo de ejecución:
./script.sh disco.flac salida
Gracias, una duda. ¿Sabe el programa qué tamaño o duración de pista tiene que darles a los diferentes archivos, o lo tengo que hacer yo a mano?. Gracias de antemano.
Creo que se basa en el silencio entre pistas para cortar.
Darumo escribió:Creo que se basa en el silencio entre pistas para cortar.


Yo diria que no, cada pista esta identificada.

man ffmpeg
$ man ffmpeg
       -map [-]input_file_id[:stream_specifier][,sync_file_id[:stream_specifier]] | [linklabel] (output)
           Designate one or more input streams as a source for the output file. Each input stream is identified by the input file index input_file_id and the input stream
           index input_stream_id within the input file. Both indices start at 0. If specified, sync_file_id:stream_specifier sets which input stream is used as a presentation
           sync reference.

           The first "-map" option on the command line specifies the source for output stream 0, the second "-map" option specifies the source for output stream 1, etc.

           A "-" character before the stream identifier creates a "negative" mapping.  It disables matching streams from already created mappings.

           An alternative [linklabel] form will map outputs from complex filter graphs (see the -filter_complex option) to the output file.  linklabel must correspond to a
           defined output link label in the graph.

           For example, to map ALL streams from the first input file to output

                   ffmpeg -i INPUT -map 0 output

           For example, if you have two audio streams in the first input file, these streams are identified by "0:0" and "0:1". You can use "-map" to select which streams to
           place in an output file. For example:

                   ffmpeg -i INPUT -map 0:1 out.wav

           will map the input stream in INPUT identified by "0:1" to the (single) output stream in out.wav.

           For example, to select the stream with index 2 from input file a.mov (specified by the identifier "0:2"), and stream with index 6 from input b.mov (specified by
           the identifier "1:6"), and copy them to the output file out.mov:

                   ffmpeg -i a.mov -i b.mov -c copy -map 0:2 -map 1:6 out.mov

           To select all video and the third audio stream from an input file:

                   ffmpeg -i INPUT -map 0:v -map 0:a:2 OUTPUT

           To map all the streams except the second audio, use negative mappings

                   ffmpeg -i INPUT -map 0 -map -0:a:1 OUTPUT

           To pick the English audio stream:

                   ffmpeg -i INPUT -map 0:m:language:eng OUTPUT

           Note that using this option disables the default mappings for this output file.
Entonces los Flac pueden tener identificadas secciones/partes, no lo sabía. (como los videos MKV que puede tener "capítulos") Entonces igualmente podrá separar sin intervención por su parte si el Flac está bien hecho.
Para realizar lo quedeseas, primero tienes que crear un archivo de texto plano con la extensión .cue con el siguiente formato de ejemplo:

TITLE "Live in Berlin"
PERFORMER "Faithless"
FILE "Faithless - live in berlin.flac" WAVE
TRACK 01 AUDIO
   TITLE "Reverence"
   INDEX 01 00:00:00
TRACK 02 AUDIO
   TITLE "She's My Baby"
   INDEX 01 06:42:00
TRACK 03 AUDIO
   TITLE "Take The Long Way Home"
   INDEX 01 10:54:00
TRACK 04 AUDIO
   TITLE "Insomnia"
   INDEX 01 17:04:00
TRACK 05 AUDIO
   TITLE "Bring The Family Back"
   INDEX 01 25:44:00
TRACK 06 AUDIO
   TITLE "Salva Mea"
   INDEX 01 30:50:00
TRACK 07 AUDIO
   TITLE "Dirty Old Man"
   INDEX 01 38:24:00
TRACK 08 AUDIO
   TITLE "God Is A DJ"
   INDEX 01 42:35:00

En este ejemplo tienes que cambiar la parte donde dice FILE "Faithless - live in berlin.flac" WAVE por el nombre del audio que tienes actualmente, luego en el primer TITLE debes de colocar el nombre del disco, en los siguientes debe de ir el nombre de la canción, en PERFORMER debe de ir el nombre del artista, por ultimo y lo mas importante de para poder separar el audio, en los INDEX debe de ir el principio del cada pista en tiempo.

Cuando ya tienes listo todo el cue, ahora debes de instalar los siguientes programas desde la terminal o de la manera que mas te guste (a mi se me hace mas sencillo de esta manera):

# apt-get install flac cuetools shntool

Para finalizar, ahora solo necesitas ejecutar esto en la terminal (cambiar archivo.cue y archivo.flac por los nombres de tus archivos):

$ cuebreakpoints archivo.cue | shnsplit -o flac archivo.flac -f archivo.cue -t '%n - %t' && cuetag archivo.cue *.flac

Cuando termine de ejecutarse, veras que se crearon varios archivos flac que son las pistas ya separadas.

Saludos.
Volk escribió:Gracias, una duda. ¿Sabe el programa qué tamaño o duración de pista tiene que darles a los diferentes archivos, o lo tengo que hacer yo a mano?. Gracias de antemano.

He supuesto que el flac tiene una pista distinta para cada canción (el ffmpeg simboliza las pistas con map).
Gracias por las respuestas, pruebo durante la semana y os comento. Salu2.[bye]
Gracias por vuestros aportes. No sé por qué no me deja instalar ffmpeg, pero ya he encontrado una solución con el k3b. He hecho doble clic sobre el archivo .cue y me ha mostrado todas las pistas del CD, luego he escogido la opción "convertir pistas" en el menú "proyecto". Me pregunta por el formato de salida, escojo .flac y me extrae todas las pistas por separado sin tener que grabarlo previamente en un CD ¡por fin!. Gracias de nuevo por vuestra ayuda. Salu2.[bye]
9 respuestas