一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——解码篇:一个简单的rtsp播放器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——解码篇:一个简单的rtsp播放器相关的知识,希望对你有一定的参考价值。

该篇内容简单的将前两篇内容组合在一起,创建了2个线程,分别播放音频和视频。

 1 int main(int argc, char * argv[])
 2 {
 3     RtspClient Client;
 4     pthread_t audio_th;
 5     pthread_t video_th;
 6 
 7     if(argc != 2) {
 8         cout << "Usage: " << argv[0] << " <URL>" << endl;
 9         cout << "For example: " << endl;
10         cout << argv[0] << " rtsp://127.0.0.1/ansersion" << endl;
11         return 1;
12     }   
13     signal(SIGINT , sigterm_handler); /* Interrupt (ANSI).    */
14     signal(SIGTERM, sigterm_handler); /* Termination (ANSI).  */
15     rtspClientRequest(&Client, argv[1]);
16     av_register_all();
17     if(SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_TIMER)) {
18         fprintf(stderr, "Could not initialize SDL - %s\\n", SDL_GetError());
19         Client.DoTEARDOWN();
20         exit(1);
21     }   
22     pthread_create(&audio_th, NULL, audio_thread, (void *)&Client);
23     pthread_create(&video_th, NULL, video_thread, (void *)&Client);
24 
25     pthread_join(audio_th, NULL);
26     pthread_join(video_th, NULL);
27     Client.DoTEARDOWN();
28 
29     return 0;
30 }

至此,“解码篇”内容告一段落,接下来将介绍myRTSPClient的具体实现,以便可以更好的理解音视频的传输机制。

 

注:

1, 示例源码编译需要SDL和ffmpeg,具体可参见解码视频的附录二;

2, 博主编译环境为 x86_64位ubuntu 16.04,以供参考。

 

myRtspClient-1.2.3

ffmpeg-2.8.5

下载源码以及Makefile

 

编译、配置和运行同上一篇:用ffmpeg解码视频

 

上一篇                    回目录

以上是关于一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——解码篇:一个简单的rtsp播放器的主要内容,如果未能解决你的问题,请参考以下文章

一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——实现篇:概览

一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——实现篇:用户接口层之提取媒体流数据

一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——实现篇:用户接口层之RtspClient类及其构造函数

一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——实现篇:RTP音视频传输解析层之H264传输格式

一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——实现篇:RTP音视频传输解析层之音视频数据传输格式

一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——实现篇:以g711-mulaw为例添加新的编码格式解析支持