На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual Basic: Общие вопросы
Здесь обсуждаются вопросы по языку Visual Basic 1-6 (а так же по схожим языкам, как, например, PowerBASIC).
Вопросы по Visual Basic .NET (это который входит в состав Visual Studio 2002/2003/2005/2008+, для тех, кто не в курсе) обсуждаются в разделе .NET.

Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что Вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются. Студенты, вам сюда: ПОМОЩЬ СТУДЕНТАМ!
4. Используйте теги [ code=vba ] ...текст программы... [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Формулируйте свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной (и более) давности, без веских на то причин.

Полезные ссылки:
user posted image FAQ Сайта user posted image FAQ Раздела user posted image Кладовка user posted image Наши Исходники user posted image API-Guide user posted image Поиск по Разделу user posted image MSDN Library Online user posted image Google

Ваше мнение о модераторах: user posted image SCINER, user posted image B.V.
Модераторы: SCINER, B.V.
  
> Запись AVI со звуком
    Вот короткий и понятный пример с комментариями. Все оформлено в виде классов, проблем быть не должно.
    Прикреплённый файлПрикреплённый файлavi.rar (37.78 Кбайт, скачиваний: 27)
      Хочу записывать кусочек десктопа со звуком из выбранного источника.
      Заранее спасибо.
        Что это было? Заказ?

        Показывай код, что сделал, что не получилось. Расскажи об "источниках" звука.
          в том то и дело.
          нигде нет сырцов по теме на VB.
          есть код записи функцией AVIStreamWrite, но нет примера записи вместе со звуком.
            Ну, тут, я думаю, лучше не изобретать велосипед, а использовать один из кодеков 'bmp to avi'.

            Но если очень хочется, то...
              АПИ
              mciSendString ("record " + opt$, "", %NULL, %NULL)

              где opt= http://msdn2.microsoft.com/en-us/library/ms713221.aspx
                не нашел я записи видео со звуком. там даже примеров команд нет

                помоему она не может писать видео с экрана
                  вот сорс
                  Прикреплённый файлПрикреплённый файлscreenrecorder.rar (29.8 Кбайт, скачиваний: 445)
                    Наконец то. Сделал запись видео в AVI с выбранным кодеком + PCM звука без сжатия с любого источника Microphone, Line-In, Wav/Mp3 ...
                    Кому действительно надо обращайтесь сюда, по мылу, либо по аське.

                    теперь вопрос: что и как сделать, чтобы звук записывался не только в формате PCM, но и в любом выбранном формате (через выбранный кодек).

                    Как я понял между вызовами этих функций надо что-то еще делать.
                    ExpandedWrap disabled
                        AVIFileCreateStream
                        AVIStreamSetFormat
                      примерно так:
                      где wfx исходный формат звука а pwFXout - требуемый
                      lngInLen - размер кодируемого буфера
                      lngInUsed - входной буфер
                      lngOutUsed - выходной буфер

                      ExpandedWrap disabled
                        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
                        Вот, результат:

                        Запись видео в AVI, RAW, BMP, Jpeg
                        Источники видео: Экран, Флешка, RAW файлы
                        Запись звука в AVI, WAV

                        настроек на все нет, но зато можно хорошо увидеть все алгоритмы.

                        Исходник: (пожалуйста соблюдайти авторские права)
                        Прикреплённый файлПрикреплённый файлscreen_recorder_by_sciner.rar (44.17 Кбайт, скачиваний: 556)
                        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                        0 пользователей:


                        Рейтинг@Mail.ru
                        [ Script execution time: 0,0477 ]   [ 18 queries used ]   [ Generated: 27.04.24, 20:50 GMT ]