Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.137.170.183] |
|
Прикр. сообщ.
#1
,
|
|
|
Вот короткий и понятный пример с комментариями. Все оформлено в виде классов, проблем быть не должно.
Прикреплённый файлavi.rar (37.78 Кбайт, скачиваний: 27) |
Сообщ.
#1
,
|
|
|
Хочу записывать кусочек десктопа со звуком из выбранного источника.
Заранее спасибо. |
Сообщ.
#2
,
|
|
|
Что это было? Заказ?
Показывай код, что сделал, что не получилось. Расскажи об "источниках" звука. |
Сообщ.
#3
,
|
|
|
в том то и дело.
нигде нет сырцов по теме на VB. есть код записи функцией AVIStreamWrite, но нет примера записи вместе со звуком. |
Сообщ.
#4
,
|
|
|
Сообщ.
#5
,
|
|
|
АПИ
mciSendString ("record " + opt$, "", %NULL, %NULL) где opt= http://msdn2.microsoft.com/en-us/library/ms713221.aspx |
Сообщ.
#6
,
|
|
|
не нашел я записи видео со звуком. там даже примеров команд нет
помоему она не может писать видео с экрана |
Сообщ.
#7
,
|
|
|
вот сорс
Прикреплённый файлscreenrecorder.rar (29.8 Кбайт, скачиваний: 445) |
Сообщ.
#8
,
|
|
|
Наконец то. Сделал запись видео в AVI с выбранным кодеком + PCM звука без сжатия с любого источника Microphone, Line-In, Wav/Mp3 ...
Кому действительно надо обращайтесь сюда, по мылу, либо по аське. теперь вопрос: что и как сделать, чтобы звук записывался не только в формате PCM, но и в любом выбранном формате (через выбранный кодек). Как я понял между вызовами этих функций надо что-то еще делать. AVIFileCreateStream AVIStreamSetFormat |
Сообщ.
#9
,
|
|
|
примерно так:
где wfx исходный формат звука а pwFXout - требуемый lngInLen - размер кодируемого буфера lngInUsed - входной буфер lngOutUsed - выходной буфер Public Function Convert(ByVal lngInLen As Long, lngInUsed() As Byte) As Byte() Dim hStream&, lngRet& Dim udtHdr As ACMSTREAMHEADER Dim whdr As WAVEHDR Dim lngOutUsed() As Byte, lngOutLen& pwFXout.wFormatTag = WAVE_FORMAT_PCM pwFXout.nSamplesPerSec = wfx.nSamplesPerSec pwFXout.wBitsPerSample = 16 pwFXout.nChannels = 1 If (acmFormatSuggest(0, wfx, pwFXout, Len(pwFXout), ACM_FORMATSUGGESTF_WFORMATTAG Or ACM_FORMATSUGGESTF_NSAMPLESPERSEC Or ACM_FORMATSUGGESTF_WBITSPERSAMPLE Or ACM_FORMATSUGGESTF_NCHANNELS) = 0) Then If (acmStreamOpen(hStream, 0&, wfx, pwFXout, 0&, 0&, 0&, 0&) = 0) Then lngOutLen = 0 If (acmStreamSize(hStream, lngInLen, lngOutLen, ACM_STREAMSIZEF_SOURCE) = 0) Then ReDim lngOutUsed(lngOutLen - 1) As Byte With udtHdr .cbStruct = Len(udtHdr) .cbSrcLength = lngInLen .pbSrc = VarPtr(lngInUsed(0)) .cbDstLength = lngOutLen .pbDst = VarPtr(lngOutUsed(0)) End With lngRet = acmStreamPrepareHeader(hStream, udtHdr, 0&) If Not (acmStreamConvert(hStream, udtHdr, &H4&) = 0) Then MsgBox "Error!" End If lngRet = acmStreamUnprepareHeader(hStream, udtHdr, 0&) End If If (udtHdr.cbDstLengthUsed > 0) Then ReDim Preserve lngOutUsed(udtHdr.cbDstLengthUsed - 1) As Byte acmStreamClose hStream, 0 Convert = lngOutUsed End If End If End Function |
Сообщ.
#10
,
|
|
|
Вот, результат:
Запись видео в AVI, RAW, BMP, Jpeg Источники видео: Экран, Флешка, RAW файлы Запись звука в AVI, WAV настроек на все нет, но зато можно хорошо увидеть все алгоритмы. Исходник: (пожалуйста соблюдайти авторские права) Прикреплённый файлscreen_recorder_by_sciner.rar (44.17 Кбайт, скачиваний: 556) |