-
ffmpeg在处理视频音频同步时存在问题,但仍能够独立播放视频或音频
资源介绍
int _tmain(int argc, _TCHAR* argv[])
{
currentAudioClock = 0;
currentVideoClock = 0;
currentBufferClock = 0;
//currentPlayClock=0;
CurrentVolume = SDL_MIX_MAXVOLUME;
if (SDL_Init(SDL_INIT_EVERYTHING) != 0) {
fprintf(stderr, "Unable to initialize SDL: %s\n", SDL_GetError());
return 1;
}
SDL_EventState(SDL_SYSWMEVENT, SDL_IGNORE);
SDL_EventState(SDL_USEREVENT, SDL_IGNORE);
atexit(SDL_Quit);// 注册SDL_Quit,当退出时调用,使得退出时程序自动清理
//flag=2;
//给音视频队列分配空间
videoQueue = (VideoQueue *)av_mallocz(sizeof(VideoQueue));
audioQueue = (AudioQueue *)av_mallocz(sizeof(AudioQueue));
//初始化音视频队列
VideoQueueInit(videoQueue);
AudioQueueInit(audioQueue);
char* url = "G:/上海滩.mp4";
//char* url = "G:/2014年5月26日17 12 00至2014年5月26日17 14 59.avi";
//char* url = "H:/视频/不当交易.The.Unjust.BD.MiniSD-TLF.mkv";
//char* url = "E:/BaiduMusic/Songs/Love Story - Taylor Swift.mp3";
decodeTid = SDL_CreateThread(DecodePacket, "DecodePacket", (void*)url);
PlayVideoTid = SDL_CreateThread(PlayVideo, "PlayVideo", NULL);
PlayAudioTid = SDL_CreateThread(PlayAudio, "PlayAudioTid", NULL);
int tid;
SDL_WaitThread(decodeTid, &tid);
printf("decodeTid %d\n", tid);
SDL_WaitThread(PlayVideoTid, &tid);
printf("PlayVideoTid %d\n", tid);
SDL_WaitThread(PlayAudioTid, &tid);
printf("PlayAudioTid %d\n", tid);
SDL_DestroyMutex(audioQueue->audioMutex);
SDL_DestroyCond(audioQueue->audioCond);
SDL_DestroyMutex(videoQueue->videoMutex);
SDL_DestroyCond(videoQueue->videoCond);
av_free(videoQueue);
av_free(audioQueue);
return 0;
}