最簡單的基於libVLC的例子:最簡單的基於libVLC的推流器

=====================================================

最簡單的基於libVLC的例子文章列表:

最簡單的基於libVLC的例子:最簡單的基於libVLC的視頻播放器

最簡單的基於libVLC的例子:最簡單的基於libVLC的視頻播放器(圖形界面版)

最簡單的基於libVLC的例子:最簡單的基於libVLC的推流器

=====================================================

本文記錄基於libVLC的最簡單的推流器。該推流器可以將本地的視頻文件轉碼後推送至目標流媒體服務器(也可以是一個組播地址)。


最簡單的基於libVLC的推流器


該推流器的代碼十分簡單,只用到了幾個函數:

libvlc_new():創建libvlc_instance_t。
libvlc_vlm_add_broadcast():增加一個廣播(broadcast)。
libvlc_vlm_play_media():播放指定名稱的廣播(broadcast)。
libvlc_vlm_stop_media():停止指定名稱的廣播(broadcast)。
libvlc_vlm_release():釋放ibvlc_instance_t。

本示例的輸入視頻文件爲“cuc_ieschool.flv”。這個推流器實現了:
  • 輸入視頻轉碼爲H.264
  • 音頻轉碼爲mp2
  • 封裝格式設置爲MPEG-TS
  • 以UDP的形式發送至組播地址“udp://233.233.233.233:6666”
在程序發送廣播的同時,會彈出一個窗口顯示當前正在發送的視頻。


源代碼

  1. /** 
  2.  * 最簡單的基於libVLC的推流器 
  3.  * Simplest libVLC Streamer 
  4.  * 
  5.  * 雷霄驊 Lei Xiaohua 
  6.  * [email protected] 
  7.  * 中國傳媒大學/數字電視技術 
  8.  * Communication University of China / Digital TV Technology 
  9.  * http://blog.csdn.net/leixiaohua1020 
  10.  * 
  11.  * 本程序是一個最簡單的基於libVLC的推流器。 
  12.  * 適合初學者學習libVLC。 
  13.  * 
  14.  * This example is the simplest Streamer based on libVLC. 
  15.  * Suitable for the beginner of libVLC. 
  16.  */  
  17.   
  18. #include <Windows.h>  
  19. #include "vlc/vlc.h"  
  20.   
  21.   
  22. int main(int argc, char **argv) {  
  23.     libvlc_instance_t *vlc;  
  24.     const char *url;  
  25.     //Send File  
  26.     //Transcode it. Video codec use x264. Audio codec use mpga.  
  27.     //Mux it to mpegts format.  
  28.     //And stream it to udp://233.233.233.233:6666  
  29.     /* 
  30.     const char *sout = "#transcode{vcodec=h264,fps=25,venc=x264{preset=ultrafast,"\ 
  31.         "profile=main,tune=zerolatency},vb=512,scale=0.5,"                        \ 
  32.         "acodec=mpa,aenc=ffmpeg,ab=64,channels=2}"                                \ 
  33.         ":standard{access=udp,mux=ts,dst=233.233.233.233:6666}"; 
  34.     */  
  35.     //Send and playing at same time  
  36.     const char *sout = "#transcode{vcodec=h264,fps=25,venc=x264{preset=ultrafast,"\  
  37.         "profile=baseline,tune=zerolatency},vb=512,"                              \  
  38.         "acodec=mpga,ab=64,channels=2}"                                           \  
  39.         ":duplicate{dst=display,dst=standard{access=udp,mux=ts,dst=233.233.233.233:6666}}";  
  40.     const char *media_name = "Lei's test";  
  41.   
  42.     //Screen Capture  
  43.     //url = "screen://";  
  44.   
  45.     url = "cuc_ieschool.flv";  
  46.       
  47.     vlc = libvlc_new(0, NULL);  
  48.     libvlc_vlm_add_broadcast(vlc, media_name, url, sout, 0, NULL, truefalse);  
  49.     libvlc_vlm_play_media(vlc, media_name);  
  50.       
  51.     //play 30s  
  52.     _sleep(30000);   
  53.   
  54.     libvlc_vlm_stop_media(vlc, media_name);  
  55.     libvlc_vlm_release(vlc);  
  56.     return 0;  
  57. }  


下載


Simplest libVLC Example


項目主頁

SourceForge:https://sourceforge.net/projects/simplestlibvlcexample/

Github:https://github.com/leixiaohua1020/simplest_libvlc_example

開源中國:http://git.oschina.net/leixiaohua1020/simplest_libvlc_example


CDSN下載地址: http://download.csdn.net/detail/leixiaohua1020/8342413

本工程是包含了一些基於libVLC的示例程序。一共包含了如下幾個子程序。
playerGUI: 最簡單的基於libVLC的播放器-圖形界面版。
simplest_libvlc_example: 最簡單的基於libVLC的播放器。

simplest_libvlc_streamer: 最簡單的基於libVLC的推流器。


原文鏈接:http://blog.csdn.net/leixiaohua1020/article/details/42363701

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章