Как использовать параметр смещения StreamCreateFile в библиотеке BASS?

Я пытаюсь использовать библиотеку BASS для редактирования аудио, поэтому, если кто-то знаком с библиотекой, надеюсь, Помоги мне.

Функция, которую я использую,

Bass.BASS_StreamCreateFile(filename, offset, length, flags);

Для небольшого фона я использую оболочку Bass.net, работаю со всеми mp3-файлами. Фактический код, с которым я использую эту функцию:

int baseStream = Bass.BASS_StreamCreateFile(filename, startTimeBytes, durationBaseBytes, BASSFlag.BASS_STREAM_PRESCAN | BASSFlag.BASS_STREAM_DECODE | BASSFlag.BASS_SAMPLE_FLOAT);

Всякий раз, когда смещение (startTimeBytes) равно 0, поток создается просто отлично, но всякий раз, когда смещение не равно нулю, метод возвращает 0 и выдается код ошибки BASS_ERROR_FILEFORM. Однако используемые файлы прекрасно работают без смещения (смещение = 0).

Может быть, что-то не так с флагами, которые я использую, или что-то в этом роде?


person Tevis    schedule 21.05.2013    source источник
comment
Мне кажется, что это позволяет вам указать смещение в составном файле для извлечения вашего медиафайла. Удобно для файлов-контейнеров, которые хранят несколько файлов в последовательном формате. Вероятно, он не предназначен для того, что вы пытаетесь с ним сделать. Или, перефразируя Феззика: I don't think it does what you think it does.   -  person Corey    schedule 21.05.2013


Ответы (1)


Ваши mp3-файлы содержат кадры без смещения. Поэтому используйте смещение 0.
Чтобы установить позицию воспроизведения потока, используйте BASS_ChannelSetPosition().

  1. Создать поток со смещением = 0;
  2. Преобразование позиции времени (секунд) в байты на основе формата канала с помощью BASS_ChannelSeconds2Bytes ();
  3. Установите положение с помощью BASS_ChannelSetPosition() и режима BASS_POS_BYTE.
person Andrey Volk    schedule 28.05.2013