91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

Windows平臺上的音視頻同步Demo,原作者博客鏈接:http://www.cnblogs.com/wangguchangqing/p/5900426.html,下載的工程文件不能編譯通過,這個問題新手會很頭疼,我修改并重新配置了工程,下載即可編譯通過,使用VS2012等IDE打開

資源截圖

代碼片段和文件信息


#include?“Audio.h“

#include?
#include?
extern?“C“?{

#include?

}

extern?bool?quit;

AudioState::AudioState()
:BUFFER_SIZE(192000)
{
audio_ctx?=?nullptr;
stream_index?=?-1;
stream?=?nullptr;
audio_clock?=?0;

audio_buff?=?new?uint8_t[BUFFER_SIZE];
audio_buff_size?=?0;
audio_buff_index?=?0;
}

AudioState::AudioState(AVCodecContext?*audioCtx?int?index)
:BUFFER_SIZE(192000)
{
audio_ctx?=?audioCtx;
stream_index?=?index;


audio_buff?=?new?uint8_t[BUFFER_SIZE];
audio_buff_size?=?0;
audio_buff_index?=?0;
}

AudioState::~AudioState()
{
if?(audio_buff)
delete[]?audio_buff;
}

bool?AudioState::audio_play()
{
SDL_AudioSpec?desired;
desired.freq?=?audio_ctx->sample_rate;
desired.channels?=?audio_ctx->channels;
desired.format?=?AUDIO_S16SYS;
desired.samples?=?1024;
desired.silence?=?0;
desired.userdata?=?this;
desired.callback?=?audio_callback;

if?(SDL_OpenAudio(&desired?nullptr)? {
return?false;
}

SDL_PauseAudio(0);?//?playing

return?true;
}

double?AudioState::get_audio_clock()
{
int?hw_buf_size?=?audio_buff_size?-?audio_buff_index;
int?bytes_per_sec?=?stream->codec->sample_rate?*?audio_ctx->channels?*?2;

double?pts?=?audio_clock?-?static_cast(hw_buf_size)?/?bytes_per_sec;


return?pts;
}

/**
*?向設備發送audio數據的回調函數
*/
void?audio_callback(void*?userdata?Uint8?*stream?int?len)
{
AudioState?*audio_state?=?(AudioState*)userdata;

SDL_memset(stream?0?len);

int?audio_size?=?0;
int?len1?=?0;
while?(len?>?0)//?向設備發送長度為len的數據
{
if?(audio_state->audio_buff_index?>=?audio_state->audio_buff_size)?//?緩沖區中無數據
{
//?從packet中解碼數據
audio_size?=?audio_decode_frame(audio_state?audio_state->audio_buff?sizeof(audio_state->audio_buff));
if?(audio_size? {
audio_state->audio_buff_size?=?0;
memset(audio_state->audio_buff?0?audio_state->audio_buff_size);
}
else
audio_state->audio_buff_size?=?audio_size;

audio_state->audio_buff_index?=?0;
}
len1?=?audio_state->audio_buff_size?-?audio_state->audio_buff_index;?//?緩沖區中剩下的數據長度
if?(len1?>?len)?//?向設備發送的數據長度為len
len1?=?len;

SDL_MixAudio(stream?audio_state->audio_buff?+?audio_state->audio_buff_index?len?SDL_MIX_MAXVOLUME);

len?-=?len1;
stream?+=?len1;
audio_state->audio_buff_index?+=?len1;
}
}

int?audio_decode_frame(AudioState?*audio_state?uint8_t?*audio_buf?int?buf_size)
{
AVframe?*frame?=?av_frame_alloc();
int?data_size?=?0;
AVPacket?pkt;
SwrContext?*swr_ctx?=?nullptr;
static?double?clock?=?0;

if?(quit)
return?-1;
if?(!audio_state->audioq.deQueue(&pkt?true))
return?-1;

if?(pkt.pts?!=?AV_NOPTS_VALUE)
{
audio_state->audio_clock?=?av_q2d(audio_state->stream->time_base)?*?pkt.pts;
}
int?ret?=?avcodec_send_packet(audio_state->audio_ctx?&pkt);
if?(ret? return?-1;

ret?=?avcodec_receive_frame(audio_state->audio_ctx?frame);
if?(ret? return?

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-10-30?16:30??FSplayer-master\
?????文件????????2518??2016-09-22?18:22??FSplayer-master\.gitattributes
?????文件????????2857??2016-09-22?18:22??FSplayer-master\.gitignore
?????目錄???????????0??2018-10-30?16:30??FSplayer-master\Debug\
?????文件?????1042944??2018-03-02?00:36??FSplayer-master\Debug\SDL2.dll
?????文件????24673280??2017-09-21?18:26??FSplayer-master\Debug\avcodec-57.dll
?????文件?????2011648??2017-09-21?18:26??FSplayer-master\Debug\avdevice-57.dll
?????文件?????4432384??2017-09-21?18:26??FSplayer-master\Debug\avfilter-6.dll
?????文件?????6275584??2017-09-21?18:26??FSplayer-master\Debug\avformat-57.dll
?????文件??????693248??2017-09-21?18:26??FSplayer-master\Debug\avutil-55.dll
?????文件??????116224??2017-09-21?18:26??FSplayer-master\Debug\postproc-54.dll
?????文件??????293888??2017-09-21?18:26??FSplayer-master\Debug\swresample-2.dll
?????文件??????504320??2017-09-21?18:26??FSplayer-master\Debug\swscale-4.dll
?????目錄???????????0??2018-10-30?16:29??FSplayer-master\FSPlayer\
?????文件????????4540??2016-09-22?18:22??FSplayer-master\FSPlayer\Audio.cpp
?????文件????????1025??2016-09-22?18:22??FSplayer-master\FSPlayer\Audio.h
?????目錄???????????0??2018-10-30?16:30??FSplayer-master\FSPlayer\Debug\
?????文件????????1441??2018-10-30?16:30??FSplayer-master\FSPlayer\Debug\FSPlayer.Build.CppClean.log
?????文件??????????96??2018-10-30?16:30??FSplayer-master\FSPlayer\Debug\FSPlayer.log
?????目錄???????????0??2018-10-30?16:30??FSplayer-master\FSPlayer\Debug\FSPlayer.tlog\
?????文件????????4913??2018-10-30?16:26??FSplayer-master\FSPlayer\FSPlayer.vcxproj
?????文件????????2009??2016-09-22?18:22??FSplayer-master\FSPlayer\FSPlayer.vcxproj.filters
?????文件?????????935??2016-09-22?18:22??FSplayer-master\FSPlayer\frameQueue.cpp
?????文件?????????377??2016-09-22?18:22??FSplayer-master\FSPlayer\frameQueue.h
?????文件????????2804??2016-09-22?18:22??FSplayer-master\FSPlayer\Media.cpp
?????文件?????????394??2016-09-22?18:22??FSplayer-master\FSPlayer\Media.h
?????文件????????1051??2016-09-22?18:22??FSplayer-master\FSPlayer\PacketQueue.cpp
?????文件?????????396??2016-09-22?18:22??FSplayer-master\FSPlayer\PacketQueue.h
?????文件????????2855??2016-09-22?18:22??FSplayer-master\FSPlayer\Video.cpp
?????文件?????????920??2016-09-22?18:22??FSplayer-master\FSPlayer\Video.h
?????文件????????2718??2016-09-22?18:22??FSplayer-master\FSPlayer\VideoDisplay.cpp
............此處省略243個文件信息

評論

共有 條評論