小编vom*_*476的帖子

如何使用 waveOutWrite() 使音频播放流畅

尝试使用 waveOutWrite() 实现流畅的音频播放时遇到问题。我的数据包括许多从相机获取的 adpcmdata 块,在解码每个 adpcm 块后,我使用 waveOutWrite() 播放它。第一个块成功播放(至少我能听到),但是当我播放下一个块时遇到问题,这些块之间存在间隙。我尝试在使用 waveOutWrite() 后调用 sleep() 但它不行。谁能告诉我在这种情况下我如何变得顺利?我播放音频的方式有问题吗?

for (i = 0, i < MaxBlockData, i++)  


        BYTE * pcmBuff = new BYTE[length*8];
        memset(pcmBuff, 0, length*8);
        G726 g726;

        int pcmDataSize = 0;
        g726.SetRate(g726.Rate32kBits);
        g726.SetLaw(g726.PCM16);
        pcmDataSize = g726.Decode(pcmBuff, adpcmData[i], 0, length*8); /decode adcmData PCM 16

        if(pcmDataSize > 0)
        {
            int sampleRate = 8000;
            CHAR* waveIn = new CHAR[pcmDataSize];

            HWAVEIN hWaveIn;
            WAVEHDR WaveInHdr;
            MMRESULT result;
            HWAVEOUT hWaveOut;

            WAVEFORMATEX pFormat;
            pFormat.wFormatTag = WAVE_FORMAT_PCM;
            pFormat.nChannels = 1;
            pFormat.nSamplesPerSec = sampleRate; …
Run Code Online (Sandbox Code Playgroud)

c++ audio-streaming ip-camera

5
推荐指数
1
解决办法
5247
查看次数

如何从 H264 RTP 数据包中检测 I/P/B 帧

我从 RTSP 流中得到了 H264 RTP 数据包。所以我想检测帧是否是I帧。

下面是我第一次打开流时得到的第一个数据包。所以我相信它是一个I帧。这是前 160 个字节:

packet:
00 00 00 01 67 4D 00 1F : 95 A8 14 01 6E 40 00 00
00 01 68 EE 3C 80 00 00 : 00 01 06 E5 01 33 80 00
00 00 01 65 B8 00 00 08 : 52 90 9F F6 BE D6 C6 9C
3D F6 D4 2F 49 FB F7 13 : F2 A9 C7 27 2D A4 75 59
6C DB …
Run Code Online (Sandbox Code Playgroud)

rtp rtsp h.264

5
推荐指数
1
解决办法
7202
查看次数

从onvif相机的本地存储(SD卡)获取数据

我正在为Onvif相机开发 WPF 应用程序。通过遵循Onvif SDK我已成功连接相机以获取视频流并控制 ptz...现在我想使用SD card相机上的本地存储,但我没有关于此的信息。任何人都可以让我知道如何使用它Onvif library来连接SD card并从中获取记录的数据。

谢谢你的帮助。

c# camera onvif

5
推荐指数
1
解决办法
3093
查看次数

标签 统计

audio-streaming ×1

c# ×1

c++ ×1

camera ×1

h.264 ×1

ip-camera ×1

onvif ×1

rtp ×1

rtsp ×1