Нашёл решение проблемы (несколько потоков склеить в один). Но предупреждаю сразу - решение НЕ идеальное, но, скорее всего, лучшее на сегодняшний день.
Имеем:
1 файл с 3-мя логическими потокамиПолучить:
1 файл с 1-им логическим потоком.
Напомню, логический поток файла OGG отображается в foobar2000 (например) как отдельный трек. Удобно для хранения альбома из нескольких треков в 1-ом файле, но крайне не удобно, если 1 трек разбит на несколько потоков невпопад (с чем и будем бороться).Нам пригодятся 2 утилиты:
oggsplit.exe и
ovpbind.exe.
OGGSPLIT – поделит файл с N-потоков на N-файлов (каждый поток = отдельный файл).
OVPBIND – пошагово объединим N-файлов в один результирующий файл.
Приступаем:
- Код: Выделить всё
oggsplit.exe test2.ogg
Получили 3 файла:
test2.c01.g01.ogg
test2.c02.g01.ogg
test2.c03.g01.oggДалее:
- Код: Выделить всё
ovpbind.exe “test2.c01.g01.ogg” “test2.c02.g01.ogg” 1+2.ogg
Получили файл:
1+2.ogg – данные с двух файлов
Далее:
- Код: Выделить всё
ovpbind.exe “1+2.ogg” “test2.c03.g01.ogg” 1+2+3.ogg
Получили файл:
1+2+3.ogg – данные с трёх файлов
Собственно это всё.
Для теста я порезал файл Dido - My Lover's Gone.wav «на глаз» в SoundForge 8 на 3 фрагмента. Далее в foobar2000 конвертировал 3 фрагмента в файл-образ (3 потока) использовав кодек oggenc283_sse3mt_lancer20061110. Файл назвал, как Вы догадались,
test2.ogg. :)
После состыковки я перекодировал файлы
1+2+3.ogg и
test2.ogg в
1+2+3.wav и
test2.wav соответственно. Проверить качество эксперимента можно в SoundForge 8 функцией «вычитания»
1+2+3.wav из
test2.wav (копируем содержимое первого и производим MIX во второй, где в свойствах MIX ставим INVERT DATA для источника CLIPBOARD). Я получил файл, где остались только места стыковки, остальное место пусто – что гарантирует нам полное совпадение данных.
Места стыковки ничтожно малы (менее половины секунды каждое) для общего файла. Что интересно, в местах стыка, данные есть – музыка играет, но видимо отличается от оригинала.
Но в целом мы получили файл с 1 логическим потоком без повторного кодирования и без потери качества (но не забываем
о местах стыковки).
Все манипуляции с
oggsplit и
ovpbind проводятся в консоли и очень быстро (бинарное разрезание и копирование).