с6.3 abc Как воспроизвести в кларион звук.файл
Добавлено: 18 Июль 2017, 23:47
Давай свой текст и заодно файл звуковой.
Место общения программистов, форум разработчиков БД на Clarion
https://forum.clarionlife.net/
Код: Выделить всё
PROGRAM
MAP
MODULE('Windows API')
mciGetErrorString(ULONG,*CSTRING,USHORT),SHORT,PASCAL,RAW,PROC,NAME('mciGetErrorStringA')
mciSendString(*CSTRING,*CSTRING,USHORT,USHORT),ULONG,PASCAL,RAW,PROC,NAME('mciSendStringA')
END
END
MCICommand CSTRING(256)
MCIReturn CSTRING(128)
CODE
MCICommand='capability waveaudio can play'
Err# = MCISendString(MCICommand,MCIReturn,128,0)
IF Err#
MESSAGE('Ошибка при выполнении команды: '&Err#)
END
IF UPPER(MCIReturn) <> 'TRUE'
MESSAGE('Ваш компьютер не поддерживает вывод звука!')
RETURN
END
! WAVE
MCICommand='OPEN "Alarm01.wav" TYPE MpegVideo ALIAS MP3'
! MP3
!MCICommand='OPEN "Redalert.mp3" TYPE MpegVideo ALIAS MP3'
Err# = MCISendString(MCICommand, MCIReturn, 128, 0{Prop:Handle})
IF Err#
MESSAGE('Ошибка при открытии: '&Err#)
END
! не ждать
MCICommand='PLAY MP3'
! ждать окончания проигрывания
!MCICommand='PLAY MP3 WAIT'
Err# = MCISendString(MCICommand, MCIReturn, 128, 0{Prop:Handle})
IF Err#
MESSAGE('Ошибка при проигрывании: '&Err#)
END
!ВНИМАНИЕ: если убрать MESSAGE звук даже не успеет начать проигрываться!
MESSAGE('Звук проигрывается!','Внимание',ICON:Asterisk)
MCICommand='stop MP3'
Err# = MCISendString(MCICommand,MCIReturn,128,0{prop:handle})
IF Err#
MESSAGE('Ошибка при остановке проигрывания: '&Err#)
END
MCICommand='close all'
Err# = MCISendString(MCICommand,MCIReturn,128,0{prop:handle})
IF Err#
MESSAGE('Ошибка при закрытии: '&Err#)
END
Честно попытался. Но вы сильнее!
Попробуйте еще этот вариант (Самый простой для проигрывания WAV файла):
Код: Выделить всё
PROGRAM
MAP
MODULE('Windows API')
sndPlaySound(*CSTRING,USHORT),SHORT,PASCAL,RAW,PROC,NAME('sndPlaySoundA')
END
END
SND_SYNC EQUATE(00h)
SND_ASYNC EQUATE(01h)
FileName CSTRING(256)
CODE
FileName='Alarm01.wav'
IF sndPlaySound(FileName, SND_ASYNC) = 0
MESSAGE('Ошибка при проигрывании файла')
END
MESSAGE('Конец!')
SndPlaySound проигрывает только Wav, ограниченного размера и не упакованные (Riff Wave, например, не играет). Пришлось в конце прошлого тысячелетия срочно искать альтернативу...Admin писал(а): 19 Июль 2017, 7:25Попробуйте еще этот вариант (Самый простой для проигрывания WAV файла):Код: Выделить всё
PROGRAM FileName='Alarm01.wav' IF sndPlaySound(FileName, SND_ASYNC) = 0 MESSAGE('Ошибка при проигрывании файла') END
Возможно, кодеки нужны. Типа K-lite Kodec Pack. Сейчас все плееры содержат кодеки внутре, а Windows не снабжается...talgat55 писал(а): 19 Июль 2017, 7:09на другом компе все работает и мой безумный проект тоже... Че то с виндой и встроенным плеером у меня похоже
Всем спасибо и мои извинения
Код: Выделить всё
Ext=UPPER(Sub(Loc:File,Len(Clip(Loc:File))-2,3))
CASE EXT
OF 'WAV' OROF 'MP3' OROF 'OGG' OROF 'MP4' OROF 'M4A' OROF 'WMA'
MCICommand='open "'&soundname&'" alias sound'
MCISendString(MCICommand,MCIReturn,128,0)
MCICommand='play sound'
Код: Выделить всё
MCICommand='capability waveaudio can play'
MCISendString(MCICommand,MCIReturn,128,0)
If Upper(MCIReturn)<>'TRUE'
Return('0')
End