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