Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.96/25: Рейтинг темы: голосов - 25, средняя оценка - 4.96
0 / 0 / 0
Регистрация: 15.07.2015
Сообщений: 37
1

[NAudio] Зациклить воспроизведение трека

17.07.2015, 21:59. Показов 4636. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В общем решил сделать кое какую программу не важно какую с использованием библиотеки NAudio
все бы ничего но никак не могу понять как зациклить или поставить на повтор трек который играет со старта программы?

Добавлено через 11 минут
так же возникает вопрос как скомпилировать программу в 1.exe файл
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.07.2015, 21:59
Ответы с готовыми решениями:

Воспроизведение Wave файла с помощью NAudio
Доброго время суток. Помогите пожалуйста. Файл прикреплён. Не могу понять как исправить данную...

WMPLib воспроизведение url, получить название текущего трека
Использую WMPLib для прослушивания радио. Как получить название текущей композиции?... (например...

Реализовать воспроизведение трека по нажатию кнопки и при повторном нажатие остановку
Каким образом можно реализовать воспроизведение трека по нажатию кнопки и при повторном нажатие...

Воспроизведение трека (OnDbClick)
В листбоксе запилил воспроизведение трека при двойном клике. Но при попытке включить другой трек...

8
3685 / 2596 / 719
Регистрация: 02.08.2011
Сообщений: 6,978
17.07.2015, 22:41 2
Смотрите тут.
Проверил - работает.

Добавлено через 1 минуту
Цитата Сообщение от Defoz Посмотреть сообщение
так же возникает вопрос как скомпилировать программу в 1.exe файл
хабр
0
0 / 0 / 0
Регистрация: 15.07.2015
Сообщений: 37
17.07.2015, 22:46  [ТС] 3
Спасибо но я читал это... и так как я новичок в этом деле то и половины не понял что там написано)) это примерно то что у меня написано в программе

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
public partial class Form1 : Form
    {
IWavePlayer waveOutDevice = new WaveOut();
        AudioFileReader audioFileReader = new AudioFileReader("track.mp3");
 
 
InitializeComponent();
 
public Form1()
        {            
           
            waveOutDevice.Init(audioFileReader);
            waveOutDevice.Play();
Добавлено через 3 минуты
и так как у меня все на русском то я не могу разобрать где папка *Solutiondir*
И куда именно нужно ввести строчку
Положить %PROGRAMFILES%\ILMerge\ILMerge.exe в папку ${SolutionDir}ILMerge\
Там же создать файл merge_all.bat
Добавить строчку в [Project->Properties->Build Events->Post-build event]:
"$(SolutionDir)\ILMerge\merge_all.bat" "$(SolutionDir)" "$(TargetPath)" $(ConfigurationName)
0
3685 / 2596 / 719
Регистрация: 02.08.2011
Сообщений: 6,978
17.07.2015, 23:02 4
Цитата Сообщение от Defoz Посмотреть сообщение
Solutiondir
Solution (англ.) - решение. dir - директория, папка. То есть папка, в которой располагается ваш Solution в Visual Stuidio. Вообщем, разбирайтесь.
Указанный пример работает с wav-файлами, mp3 - сжатый формат, но в NAudio все же есть средства для работы с ним.

Добавлено через 9 минут
Для mp3 - то же самое, просто reader другой.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
public class LoopStream : WaveStream
    {
        readonly WaveStream _sourceStream;
 
        /// <summary>
        /// Creates a new Loop stream
        /// </summary>
        /// <param name="sourceStream">The stream to read from. Note: the Read method of this stream should return 0 when it reaches the end
        /// or else we will not loop to the start again.</param>
        public LoopStream(WaveStream sourceStream)
        {
            this._sourceStream = sourceStream;
            this.EnableLooping = true;
        }
 
        /// <summary>
        /// Use this to turn looping on or off
        /// </summary>
        public bool EnableLooping { get; set; }
 
        /// <summary>
        /// Return source stream's wave format
        /// </summary>
        public override WaveFormat WaveFormat
        {
            get { return _sourceStream.WaveFormat; }
        }
 
        /// <summary>
        /// LoopStream simply returns
        /// </summary>
        public override long Length
        {
            get { return _sourceStream.Length; }
        }
 
        /// <summary>
        /// LoopStream simply passes on positioning to source stream
        /// </summary>
        public override long Position
        {
            get { return _sourceStream.Position; }
            set { _sourceStream.Position = value; }
        }
 
        public override int Read(byte[] buffer, int offset, int count)
        {
            int totalBytesRead = 0;
 
            while (totalBytesRead < count)
            {
                int bytesRead = _sourceStream.Read(buffer, offset + totalBytesRead, count - totalBytesRead);
                if (bytesRead == 0)
                {
                    if (_sourceStream.Position == 0 || !EnableLooping)
                    {
                        // something wrong with the source stream
                        break;
                    }
                    // loop
                    _sourceStream.Position = 0;
                }
                totalBytesRead += bytesRead;
            }
            return totalBytesRead;
        }
    }
Использование:
C#
1
2
3
4
5
Mp3FileReader reader = new Mp3FileReader(path);
            LoopStream loop = new LoopStream(reader);
            var waveOut = new WaveOut();
            waveOut.Init(loop);
            waveOut.Play();
0
0 / 0 / 0
Регистрация: 15.07.2015
Сообщений: 37
18.07.2015, 00:45  [ТС] 5
А можно создать таймер и привязать к треку и когда он будет заканчиваться то через 1-2 секунду сразу же включаться?
0
3685 / 2596 / 719
Регистрация: 02.08.2011
Сообщений: 6,978
18.07.2015, 00:49 6
Цитата Сообщение от Defoz Посмотреть сообщение
А можно создать таймер и привязать к треку и когда он будет заканчиваться то через 1-2 секунду сразу же включаться?
А вы проверяли работоспособность указанного выше кода? Он работает также.
0
0 / 0 / 0
Регистрация: 15.07.2015
Сообщений: 37
18.07.2015, 00:55  [ТС] 7
я же говорю я совсем новичок и то что там написано мне не понятно в какую строку или форму нужно вписывать и что именно писать . то что вы написали или написать то что с сайта но с измененным reader
0
3685 / 2596 / 719
Регистрация: 02.08.2011
Сообщений: 6,978
18.07.2015, 01:35 8
В вашем проекте WinForms, создаете папку, скажем Infrastructure, туда добавляете новый класс с именем LoopStream, его содержимое должно полностью совпадать с указанным в предыдущем посте.
И в вашем классе формы пишете:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
using Naudio.Wave;
...
public class Form1()
{
   this.Load+=(o,e)=>{
// path - путь к вашему mp3 файлу
   Mp3FileReader reader = new Mp3FileReader(path);
            LoopStream loop = new LoopStream(reader);
            var waveOut = new WaveOut();
            waveOut.Init(loop);
            waveOut.Play();
};
   InitializeComponent();
}
Еще советую почитать Литература для новичков.

Добавлено через 30 минут

Не по теме:

Что-то все еще непонятно? Не стесняйтесь, спрашивайте.

0
1 / 1 / 0
Регистрация: 14.06.2022
Сообщений: 8
25.09.2022, 23:50 9
Если что можно сделать гораздо проще, без доп.классов.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
            Task.Factory.StartNew(() =>
            {
                var files = new string[] {
                 @"C:\Users\young\Desktop\Game XO\Sound\background_sound.wav"};
 
                var player = new SoundPlayer();
 
                while (true)
                {
                    foreach (var file in files)
                    {
                        player.SoundLocation = file;
                        player.PlaySync();
                    }
                }
            }, TaskCreationOptions.LongRunning);
0
25.09.2022, 23:50
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.09.2022, 23:50
Помогаю со студенческими работами здесь

Цикличное воспроизведение трека в BASS.dll
Приветствую всех, столкнулся вот с такой вот проблемой: Мне нужно организовать цикличное...

Воспроизведение wave из потока средствами NAudio.dll
Нужно написать простенький голосовой чат. Запись звука осуществил с помощью NAudio.dll, ну а...

HTML 5 Audio Пауза Одного Трека Воспроизведение другого
Есть массив из треков - он воспроизводится при нажатии кнопки и как трек заканчивается - начинается...

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

Останавливать воспроизведение предыдущего трека при запуске следующего
Здравствуйте . Вставляю 2 аудио : &lt;h3&gt;&lt;font color=&quot;red&quot;&gt;Blue October – Say It&lt;/font&gt;&lt;/h3&gt;...

Зациклить воспроизведение видеозаписи
Всем привет...У меня простая задача, есть видео ролик, его нужно опубликовать как html код,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
В чем отличие между INNER JOIN и OUTER JOIN
bytestream 22.01.2025
В современных базах данных информация часто распределена между множеством взаимосвязанных таблиц, что делает операции объединения JOIN неотъемлемой частью работы с SQL. Эти операции позволяют. . .
Как сделать первую букву заглавной в JavaScript
bytestream 22.01.2025
JavaScript предоставляет разработчикам множество инструментов для эффективной работы с текстовыми данными. Одной из часто встречающихся задач при обработке строк является преобразование первой буквы. . .
Что такое Big O нотация и алгоритмическая сложность
bytestream 22.01.2025
Введение в алгоритмическую сложность В мире разработки программного обеспечения эффективность алгоритмов играет crucial роль в создании качественных приложений. Алгоритмическая сложность. . .
Как решать конфликты слияния (merge) в Git
bytestream 22.01.2025
Конфликты слияния в системе контроля версий Git возникают в ситуациях, когда две или более ветки разработки содержат несовместимые изменения в одних и тех же участках кода. Эти конфликты представляют. . .
Как использовать регулярные выражения
bytestream 22.01.2025
Регулярные выражения представляют собой мощный инструмент для работы с текстовыми данными, который позволяет осуществлять поиск, проверку и манипуляцию строками на основе определенных шаблонов. Этот. . .
Как выйти из Vim
bytestream 22.01.2025
Vim (Vi IMproved) представляет собой один из самых влиятельных текстовых редакторов в истории компьютерной индустрии, эволюционировавший из своего предшественника Vi, созданного Биллом Джоем в 1976. . .
NoSQL базы данных: что это такое и какие существуют
bytestream 22.01.2025
В современную эпоху цифровой трансформации объемы данных растут экспоненциально, создавая новые вызовы для традиционных систем управления базами данных. NoSQL (Not Only SQL) представляет собой. . .
Обновление исследования от команды MCM (январь 2025 г.)
Programma_Boinc 22.01.2025
Обновление исследования от команды MCM (январь 2025 г. ) Мы продолжаем изучать молекулярные сигнатуры, связанные с раком легких, с текущим фокусом на GCM1, факторе транскрипции, участвующем в. . .
Как работать с Kafka в Go (Golang)
bytestream 22.01.2025
Apache Kafka представляет собой распределенную платформу потоковой передачи данных, которая произвела революцию в области обработки событий и интеграции микросервисов. Эта система, изначально. . .
Как использовать RabbitMQ в Go (Golang)
bytestream 22.01.2025
RabbitMQ представляет собой надежный и широко используемый брокер сообщений, который играет ключевую роль в построении современных распределенных систем и микросервисной архитектуры. В основе работы. . .
Как преобразовать список списков в простой список в Python
bytestream 22.01.2025
При работе с Python разработчики часто сталкиваются с необходимостью обработки сложных структур данных, среди которых особое место занимают вложенные списки. Эти структуры представляют собой списки,. . .
Что такое GUID / UUID и как их создать
bytestream 22.01.2025
В мире разработки программного обеспечения существует постоянная потребность в уникальной идентификации объектов, записей и ресурсов. Эта задача становится особенно актуальной в распределенных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru