資源簡介
博客:http://blog.csdn.net/i_scream_/article/details/52760033
中的代碼。
測試環(huán)境:win10 64bit+ vs2010/vs2015
代碼片段和文件信息
/*=========================================================================\
*?Copyright(C)2016?Chudai.
*
*?File?name????:?audio.c
*?Version??????:?v1.0.0
*?Author???????:?初代
*?Date?????????:?2016/10/06
*?Description??:
*?Function?list:?1.
*????????????????2.
*????????????????3.
*?History??????:
\*=========================================================================*/
#include?“stdafx.h“
/*-----------------------------------------------------------*
?*?頭文件????????????????????????????????????????????????????*
?*-----------------------------------------------------------*/
#define?__STDC_CONSTANT_MACROS??????//ffmpeg要求
#include?“player.h“
#include?“audio.h“
/*======================================================================\
*?Author?????(作者):?i.sshe
*?Date???????(日期):?2016/10/06
*?Others?????(其他):?準(zhǔn)備audio
\*=======================================================================*/
int?prepare_audio(PlayerState?*ps)
{
ps->paudio_stream?=?ps->pformat_ctx->streams[ps->audio_stream_index];
ps->paudio_codec_ctx?=? ps->paudio_stream->codec;
ps->paudio_codec?=?avcodec_find_decoder(ps->paudio_codec_ctx->codec_id);
if?(ps->paudio_codec?==?NULL)
????{
?????????fprintf(ERR_STREAM?“Couldn‘t?find?audio?decoder!!!!!!!\n“);
?????????return?-1;
????}
//初始化AVCondecContext,以及進行一些處理工作。
avcodec_open2(ps->paudio_codec_ctx?ps->paudio_codec?NULL);
????return?0;
}
/*======================================================================\
*?Author?????(作者):?i.sshe
*?Date???????(日期):?2016/10/06
*?Others?????(其他):?播放聲音
\*=======================================================================*/
int?play_audio(PlayerState?*ps)
{
????SDL_AudioSpec??????wanted_spec;
//????SDL_AudioSpec??????spec;
????wanted_spec.freq??????=?ps->paudio_codec_ctx->sample_rate;
????wanted_spec.format????=?AUDIO_S16SYS;
????wanted_spec.channels??=?ps->paudio_codec_ctx->channels;
????wanted_spec.silence???=?0;
????wanted_spec.samples???=?1024;?????//
????wanted_spec.callback??=?audio_callback;
????wanted_spec.userdata??=?ps;?//?ps->paudio_codec_ctx;
????//打開音頻設(shè)備
????//運行callback
????if?(SDL_OpenAudio(&wanted_spec?NULL)?0)
????{
????????fprintf(ERR_STREAM?“Couldn‘t?open?audio?device\n“);
????????return?-1;
????}
????SDL_PauseAudio(0);
????return?0;
}
/*======================================================================\
*?Author?????(作者):?i.sshe
*?Date???????(日期):?2016/10/06
*?Others?????(其他):?音頻回調(diào)函數(shù),打開設(shè)備的時候會開線程調(diào)用
\*=======================================================================*/
void?audio_callback(void?*userdata?uint8_t?*stream?int?len)
{
????PlayerState?*ps?=?(PlayerState?*)userdata;
????int? send_data_size?=?0;
????int? audio_size?=?0;
if?(ps->quit?==?1)
{
exit(-1);
}
????SDL_memset(stream?0?len);
????while(len?>?0)
????{
?????????if?(ps->audio_buf_index?>=?ps->audio_buf_size)
?????????{
?????????????//數(shù)據(jù)已經(jīng)全部發(fā)送,再去取
?????????????audio_size?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2016-10-09?12:26??pla
?????目錄???????????0??2016-10-09?12:25??pla
?????文件???????41984??2016-10-09?12:26??pla
?????文件??????449304??2016-10-09?12:26??pla
?????文件??????715776??2016-10-09?12:26??pla
?????目錄???????????0??2016-10-09?12:15??pla
?????目錄???????????0??2016-10-09?12:22??pla
?????文件?????2359296??2016-10-09?12:22??pla
?????目錄???????????0??2016-10-09?12:25??pla
?????目錄???????????0??2016-10-09?12:26??pla
?????文件??????107066??2016-10-09?12:26??pla
?????文件????????4470??2016-10-09?12:26??pla
?????文件???????33202??2016-10-09?12:25??pla
?????文件????????5566??2016-10-09?12:26??pla
?????文件???????????2??2016-10-09?12:26??pla
?????文件???????????2??2016-10-09?12:26??pla
?????文件???????????2??2016-10-09?12:26??pla
?????文件???????????2??2016-10-09?12:26??pla
?????文件???????????2??2016-10-09?12:26??pla
?????文件???????????2??2016-10-09?12:26??pla
?????文件????????3388??2016-10-09?12:26??pla
?????文件????????7492??2016-10-09?12:26??pla
?????文件????????2244??2016-10-09?12:26??pla
?????文件?????????498??2016-10-09?12:26??pla
?????文件?????????498??2016-10-09?12:26??pla
?????文件?????????498??2016-10-09?12:26??pla
?????文件???????26011??2016-10-09?12:25??pla
?????文件?????????406??2016-10-09?12:25??pla
?????文件?????????472??2016-10-09?12:25??pla
?????文件?????????381??2016-10-09?12:26??pla
?????文件??????????93??2016-10-09?12:26??pla
............此處省略215個文件信息
評論
共有 條評論