基于libmad 的简单MP3流媒体播放器的实现

豆豆网   技术应用频道   2007年03月10日  【字号: 收藏本文

本文详细介绍基于libmad 的简单MP3流媒体播放器的实现

  4.创建线程

  本文使用 POSIX 线程库(pthreads)来创建线程。比如,本文需要两个线程,一个是数据接收线程,另一个是音乐播放线程。创建线程的程序如下所示:

  清单 10:创建线程

ret_val = pthread_create(&thread[0],
              NULL,
              get_http_content,
              &read_val);
 if (ret_val != 0) {
   printf("Cannot create get_http_content thread!
");
   return 1;
 }
 ret_val = pthread_create(&thread[1],
              NULL,
              play_http_content,
              &read_val);
 if (ret_val != 0) {
   printf("Cannot create play_http_content thread!
");
   return 1;
 }
 pthread_join(thread[0], NULL);
 pthread_join(thread[1], NULL);

  可以看到,数据接收线程的线程主函数是 get_http_content, 而播放音乐的线程主函数是 play_http_content。创建子线程后,主线程调用 pthread_join() 等待子结束,并释放线程相关资源。

  5.接收 MP3 流媒体数据

  由于 MP3 流媒体数据是在 HTTP 服务器的文件目录中,所以,必须由客户端发送 HTTP 请求,然后得到相关 URL 的 HTTP 响应。HTTP 的请求格式如下:

<Method> <Request-URI> <HTTP-1.x> CRLF
*(( general-header    
  | request-header    
  | entity-header ) CRLF)
CRLF
[ message-body ]

责编:豆豆技术应用

正在加载评论...