У меня есть несколько файлов Mp3:

0001.mp3
0002.mp3
........
9999.mp3

Каждый файл имеет свой собственный размер / длину, который отличается от других.

Я хочу объединить их в один файл Mp3. В то же время ведется индексный файл (txt, xml ...), в котором содержится место запуска каждого файла в выходном файле (BigOutput.mp3).

Например:

0001.mp3 starts at the 0        Byte of BigOutput.mp3
0002.mp3 starts at the 65874th  Byte of BigOutput.mp3
0003.mp3 starts at the 987485th Byte of BigOutput.mp3
and so on..

Есть ли какое-либо известное решение / программа для этой цели, или я должен написать свое собственное?

1 ответ1

0

Это решение Bash. Я на самом деле не проверял это на реальных файлах, но это должно работать. Вы просто считываете размер файла с помощью стандартных инструментов и складываете их вместе, чтобы получить текущий индекс. Первый файл обрабатывается как особый случай.

Вы бы назвали это скриптом со всеми именами файлов, предоставленными в качестве аргументов в порядке конкатенации.

#!/bin/bash

idx=0
idx_txt="idx.txt"

echo "$1 starts at 0" >$idx_txt
shift

for file in "$@" ; do
  idx=$(( idx + $(ls -l|grep "$file"|awk '{print $5}') ))
  echo "$file starts at $idx" >>$idx_txt
done

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .