Nano Hash - криптовалюты, майнинг, программирование

Формат аудиофайла, который можно записать без поиска

Я хочу записать аудиоданные в стандартный вывод, предпочтительно используя libsndfile. Когда я вывожу WAV в /dev/stdout, мне удается написать заголовок, но потом я получаю сообщение об ошибке

Error : could not open file : /dev/stdout
System error : Illegal seek.

Я предполагаю, что это связано с http://www.mega-nerd.com/libsndfile/FAQ.html#Q017, некоторые форматы файлов не могут быть записаны без поиска. Однако, когда я пытаюсь вывести SF_FORMAT_AU | Вместо этого SF_FORMAT_PCM_16 я все равно получаю ту же ошибку «Недопустимый поиск».

Существуют ли какие-либо форматы аудиофайлов, которые можно записать полностью без перебора?

Я использую Линукс.

РЕДАКТИРОВАТЬ: Это может быть очевидно, но формат RAW работает (без поиска). К сожалению, мне нужен формат с метаинформацией, такой как частота дискретизации.


  • Я думаю, вам придется показать нам код, который вы написали. 03.12.2011

Ответы:


1

Вы должны закончить чтение этого FAQ ... ссылка, которую вы нам даете, содержит все ответы.

Однако существует по крайней мере один формат файлов (AU), специально предназначенный для записи в канал.

Так что используйте AU вместо WAV.

Также убедитесь, что вы открываете объект SNDFILE с помощью sf_open_fd, а не sf_open_virtual (или sf_open):

SNDFILE* sf_open_fd      (int fd, int mode, SF_INFO *sfinfo, int close_desc) ;
SNDFILE* sf_open_virtual (SF_VIRTUAL_IO *sfvirtual, int mode, SF_INFO *sfinfo,
                          void *user_data) ;

Если вы используете sf_open_fd, то libsndfile будет использовать fstat, чтобы определить, является ли файловый дескриптор каналом или обычным файлом. Если вы используете sf_open_virtual или sf_open, предполагается, что файл доступен для поиска. Похоже, это ошибка в libsndfile, но вы все равно должны использовать sf_open_fd.

Сноска. Не открывайте /dev/stdout для получения стандартного вывода; он уже открыт и нет необходимости открывать его снова. Используйте файловый дескриптор STDOUT_FILENO.

03.12.2011
  • Как вы открываете SNDFILE? 04.12.2011

  • 2

    Завершен вывод «бесконечного» заголовка wav, а затем запись необработанных данных PCM до тех пор, пока длится звук. Не совсем правильно, но большинство игроков все равно понимают.

    Заголовок wav находится здесь, если кому-то понадобится: https://gist.github.com/1428176

    03.12.2011
  • Мне все еще интересно, как вы открыли файл с помощью libsndfile, потому что при моей проверке исходного кода libsndfile эта ошибка никогда не должна была возвращаться, если вы использовали sf_open_fd с AU... 04.12.2011
  • Я использовал sf_open(/dev/stdout, SFM_WRITE, SF_FORMAT_AU | SF_FORMAT_PCM_16) 04.12.2011
  • Это не сработает. Используйте 1_. Libsndfile проверяет каналы только с файловыми дескрипторами, а не с путями. 04.12.2011

  • 3

    Вы можете записать во временный файл (возможно, в /tmp), позволить libsnd попытаться изменить заголовок .wav(RIFF) временного файла, а затем, после того как libsnd закроет файл, передать временный файл в поток stdout.

    03.12.2011
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..