Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Sergey_03
20 / 8 / 4
Регистрация: 15.12.2014
Сообщений: 594
1

Не работает mciSendString

01.11.2015, 11:28. Просмотров 663. Ответов 13
Метки нет (Все метки)

Добрый день. Нагуглил mciSendString. Хочу по кнопке mp3 проиграть
C++
1
2
mciSendString("open C:\\test.mp3", NULL, 0, 0);
  mciSendString("play C:\\test.mp3", NULL, 0, 0);
Не работает. Почему?
Сейчас пользуюсь MediaPlayer, он начинает тормозить, когда что то происходит в проге. Опять потоки?
И можно ли воспроизводить несколько звуков одновременно?
Озвучку нажатия кнопок сделал с PlaySound. Тут все ОК, но звуки очень короткие.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.11.2015, 11:28
Ответы с готовыми решениями:

Проигрывание файла, mciSendString
Здравствуйте. открываю файл AnsiString Line = "open " + fname + " type...

Циклическое выполнение вызова MciSendString()
Как зациклить mciSendString()? Фишка из делфи mciSendString("play 1.wav...

А есть ли функция паузы у mciSendString ???
Хочу попробовать реализовать что-то подобие плеера с помощью mciSendString, и...

Записать аудио и сохранить в файл при помощи mciSendString()
Подскажите пожалуйста как правильно это записывать (хочу сохранить в аудиофайл)...

mciSendString() необходимо чтобы воспроизведение звука постоянно повторялась
в общем нужно необходимо чтобы воспроизведение звука постоянно повторялось ...

13
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
26330 / 17662 / 6996
Регистрация: 22.10.2011
Сообщений: 31,077
Записей в блоге: 6
01.11.2015, 12:23 2
Цитата Сообщение от Sergey_03 Посмотреть сообщение
Не работает
Не самая информативная диагностика. mciSendString возвращает код ошибки, проверь, чему он равен
1
Sergey_03
20 / 8 / 4
Регистрация: 15.12.2014
Сообщений: 594
01.11.2015, 14:40  [ТС] 3
написал
C++
1
2
3
WORD result = mciSendString("play C:\\test.mp3 wait", NULL, 0, NULL);
    if (result)
        printf("Ошибка");
ничего не происходит.
Ставлю в событие Image1MouseDown
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
26330 / 17662 / 6996
Регистрация: 22.10.2011
Сообщений: 31,077
Записей в блоге: 6
01.11.2015, 16:03 4
Не знаю, у меня нормально отыгрывает mp3-файл такой вызов.
1
Sergey_03
20 / 8 / 4
Регистрация: 15.12.2014
Сообщений: 594
01.11.2015, 20:52  [ТС] 5
Заработало. С путями накосячил. Но когда начинается воспроизведение - воспроизводит, но программа виснет..

Добавлено через 2 часа 6 минут
Нашел на форуме http://www.cyberforum.ru/post3329517.html
Все работает и не виснет. Но пара вопросов есть
Если писать путь
C++
1
SendMCICommand(L"play C:\\test.mp3");
- все работает, а если путь длинный -
C++
1
SendMCICommand(L"play C:\\Program Files\\MTECH\\VisualMonitoring\\test.mp3");
не хочет. Выскакивает окно с кучей вопросов, видимо путь не нравится. Почему так?
И можно ли сделать,чтобы было циклическое воспроизведение? В медиа плеере в таймере писал
C++
1
2
    if (MediaPlayer1->Mode == mpStopped)
   MediaPlayer1->Play();
а с SendMCICommand как то можно по аналогии или по другому тут?
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
26330 / 17662 / 6996
Регистрация: 22.10.2011
Сообщений: 31,077
Записей в блоге: 6
01.11.2015, 21:03 6
Цитата Сообщение от Sergey_03 Посмотреть сообщение
а если путь длинный
Проблема не в длине, а в пробеле. Такие пути (а еще лучше - все пути) надо заключать в кавычки.
1
Sergey_03
20 / 8 / 4
Регистрация: 15.12.2014
Сообщений: 594
01.11.2015, 21:49  [ТС] 7
Цитата Сообщение от volvo Посмотреть сообщение
надо заключать в кавычки
так вроде в ковычках..как его написать?

Добавлено через 29 минут
Написал путь так -
C++
1
SendMCICommand("play C:\\progra~1\\MTECH\\VisualMonitoring\\test.mp3");
заработало...А как с кавычками надо? И зациклить не получается. Это вообще возможно?
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
26330 / 17662 / 6996
Регистрация: 22.10.2011
Сообщений: 31,077
Записей в блоге: 6
01.11.2015, 23:57 8
Лучший ответ Сообщение было отмечено Sergey_03 как решение

Решение

Цитата Сообщение от Sergey_03 Посмотреть сообщение
А как с кавычками надо?
Не, с кавычками не работает. Вот так:
C++
1
2
    MCIERROR result = mciSendString(String().sprintf(L"play %s repeat",
        ExtractShortPathName("D:\\Program Files\\test\\phone.mp3")).t_str(), NULL, 0, NULL);
прекрасно проигрывает файл, причем еще и зацикливает его.
1
Sergey_03
20 / 8 / 4
Регистрация: 15.12.2014
Сообщений: 594
02.11.2015, 00:04  [ТС] 9
Спасибо большое. А что его зацикливает? repeat?
А остановить как? вместо "play %s repeat" просто написать "stop" ? Я сейчас просто систему ставлю - не попробовать.
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
26330 / 17662 / 6996
Регистрация: 22.10.2011
Сообщений: 31,077
Записей в блоге: 6
02.11.2015, 00:16 10
Написать "stop имя_файла", просто stop не сработает
0
Sergey_03
20 / 8 / 4
Регистрация: 15.12.2014
Сообщений: 594
02.11.2015, 00:37  [ТС] 11
то есть "stop "

Добавлено через 1 минуту
Все понял! Спасибо!

Добавлено через 18 минут
Попробовал - воспроизвести работает на ура, остановить никак.
Пишу
C++
1
2
MCIERROR result = mciSendString(String().sprintf(L"stop test.mp3"",
        ExtractShortPathName("C:\\Program Files\\MTECH\\VisualMonitoring\\test.mp3")).t_str(), NULL, 0, NULL);
понятно, что не правильно..по разному попробовал - никак..
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
26330 / 17662 / 6996
Регистрация: 22.10.2011
Сообщений: 31,077
Записей в блоге: 6
02.11.2015, 00:45 12
Лучший ответ Сообщение было отмечено Sergey_03 как решение

Решение

C++
1
2
MCIERROR result = mciSendString(String().sprintf(L"stop %s",
        ExtractShortPathName("C:\\Program Files\\MTECH\\VisualMonitoring\\test.mp3")).t_str(), NULL, 0, NULL);
1
Sergey_03
20 / 8 / 4
Регистрация: 15.12.2014
Сообщений: 594
02.11.2015, 00:55  [ТС] 13
Спасибо!
0
Sergey_03
20 / 8 / 4
Регистрация: 15.12.2014
Сообщений: 594
07.11.2015, 11:20  [ТС] 14
А возможно в случае с MediaPlayer сделать некую проверку no mci device open на тот случай, если на компьютере клиента нет звуковых устройств? А то на таких компах ошибку выдает.
0
07.11.2015, 11:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.11.2015, 11:20

mciSendString
господа при помощи этой функции воспроизважу файл avi,есть варианты напрример-...

mcisendstring
Привет! Есть такая тема. Начинаю разбираться с функциями windows, дошел до...

Ресурсы и mciSendString
Господа допустим имеем в ресурсах файл .mp3 можно ли его как то воспроизвести...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru