我尝试使用live555(a.k.a OpenRTSP)来设置RTSP服务器和客户端。
我的客户端应用程序使用live555,ffmpeg和SDL作为流,解码和回放。
如果我尝试按以下情况调用 SDL_CloseAudio ,我发现它可能会出现死锁:
我将其排除在任何计时问题之外,因为如果我在服务器未关闭时尝试调用 SDL_CloseAudio ,它的效果会很好。
另外,我尝试过以下API,但仍无效:
对此有何想法?
答案 0 :(得分:0)
在跟踪SDL源代码后,我发现当SDL仍在处理时,它可能与互斥锁相关 SDL_RunAudio
另外,根据我的情况,如果网络仍在工作(或服务器未关闭),它将运行良好。所以我尝试用" 0"发送一个千字节的假音频数据。关闭之前。
PacketQueue m_audioq; //working queue.
AVPacket *pktAudio = NULL;
uint8_t data[1024] = {0};
pktAudio = (AVPacket*)av_malloc(sizeof(AVPacket));
av_init_packet(pktAudio);
pktAudio->data = data;
pktAudio->size = 1024;
packet_queue_put(&m_audioq, pktAudio);
SDL_CloseAudio();