1. 程式人生 > >最簡單的基於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”
在程式傳送廣播的同時,會彈出一個視窗顯示當前正在傳送的視訊。


原始碼

/**
 * 最簡單的基於libVLC的推流器
 * Simplest libVLC Streamer
 *
 * 雷霄驊 Lei Xiaohua
 * [email protected]
 * 中國傳媒大學/數字電視技術
 * Communication University of China / Digital TV Technology
 * http://blog.csdn.net/leixiaohua1020
 *
 * 本程式是一個最簡單的基於libVLC的推流器。
 * 適合初學者學習libVLC。
 *
 * This example is the simplest Streamer based on libVLC.
 * Suitable for the beginner of libVLC.
 */

#include <Windows.h>
#include "vlc/vlc.h"


int main(int argc, char **argv) {
	libvlc_instance_t *vlc;
	const char *url;
	//Send File
	//Transcode it. Video codec use x264. Audio codec use mpga.
	//Mux it to mpegts format.
	//And stream it to udp://233.233.233.233:6666
	/*
	const char *sout = "#transcode{vcodec=h264,fps=25,venc=x264{preset=ultrafast,"\
		"profile=main,tune=zerolatency},vb=512,scale=0.5,"                        \
		"acodec=mpa,aenc=ffmpeg,ab=64,channels=2}"                                \
		":standard{access=udp,mux=ts,dst=233.233.233.233:6666}";
	*/
	//Send and playing at same time
	const char *sout = "#transcode{vcodec=h264,fps=25,venc=x264{preset=ultrafast,"\
		"profile=baseline,tune=zerolatency},vb=512,"                              \
		"acodec=mpga,ab=64,channels=2}"                                           \
		":duplicate{dst=display,dst=standard{access=udp,mux=ts,dst=233.233.233.233:6666}}";
	const char *media_name = "Lei's test";

	//Screen Capture
	//url = "screen://";

	url = "cuc_ieschool.flv";
	
	vlc = libvlc_new(0, NULL);
	libvlc_vlm_add_broadcast(vlc, media_name, url, sout, 0, NULL, true, false);
	libvlc_vlm_play_media(vlc, media_name);
	
	//play 30s
	_sleep(30000); 

	libvlc_vlm_stop_media(vlc, media_name);
	libvlc_vlm_release(vlc);
	return 0;
}


下載

Simplest libVLC Example


專案主頁


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

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

相關推薦

簡單基於libVLC例子簡單基於libVLC

=====================================================最簡單的基於libVLC的例子文章列表:=====================================================本文記錄基於libVLC

簡單基於libVLC例子簡單基於libVLC的視訊播放(圖形介面版)

=====================================================最簡單的基於libVLC的例子文章列表:=====================================================本文記錄使用libVLC

簡單基於libVLC例子簡單基於libVLC的視訊播放

=====================================================最簡單的基於libVLC的例子文章列表:=====================================================本文記錄使用libVLC

簡單基於FFmpeg的(以送RTMP為例)

由於工作一部分工作是作為流媒體伺服器的程式設計師。所以自己那塊也算是處理了推流器的一塊程式碼吧。 這邊是從網上轉載的文章,原文:http://blog.csdn.net/leixiaohua1020/article/details/46890487 =========

javaCV開發詳解之4實現(也可作為本地收,新增新增圖片及文字水印,視訊影象幀儲存),實現rtsp/rtmp/本地檔案轉發到rtmp媒體伺服器(基於javaCV-FFMPEG)

javaCV系列文章: 補充篇: 歡迎大家積極開心的加入討論群 javacpp-ffmpeg: 前言: 本章基於javaCV實現轉流器和收流器功能,測試採用監控rtsp地址轉發至rtmp伺服器地址 新增openCV儲存圖片功能。 補充:

javaCV開發詳解之2實現,本地攝像頭視訊到媒體伺服器以及攝像頭錄製視訊功能實現(基於javaCV-FFMPEG、javaCV-openCV)

javaCV系列文章: 補充篇: 歡迎大家積極開心的加入討論群 javacpp-ffmpeg: 前言: 本章將在上一章的基礎上,增加視訊推流到流媒體伺服器和視訊錄製的功能; 功能:實現邊播放邊錄製/推流,停止預覽即停止錄製/推流 提示:

簡單基於FFmpeg的移動端例子IOS HelloWorld

=====================================================最簡單的基於FFmpeg的移動端例子系列文章列表:=====================================================本文記錄IOS

簡單基於FFmpeg的移動端例子Android 視訊轉碼

=====================================================最簡單的基於FFmpeg的移動端例子系列文章列表:=====================================================本文記錄一個安

轉載自學筆記: 用 MyEclipse 開發的簡單的 Spring 例子

原文:http://www.blogjava.net/beansoft/archive/2006/12/28/90496.html昨天沒事看了看 Spring, 後來就用 MyEclipse 做了個最簡單的例子. 從原理上說, Spring 的核心就是用 JavaBean 的

用Python實現簡單的文字識別基於百度雲文字識別API

Python版本:3.6.5 百度雲提供的文字識別技術,準確率還是非常高的,而且每天還有5w次免費的呼叫量,對於用來學習或者偶爾拿來用用,已經完全足夠了。文章提供一個模板,稍加修改就可以直接套用。註釋中提到必須輸入的地方,你都正確地輸入了的話,就可以完成一次簡單的文字識別了

基於qml創建簡單的圖像處理程序(1)-基於qml創建界面

cep font mes quit vid www 習慣 image ble 為什麽使用QT,包括進一步使用QML?兩個主要原因,一是因為我是一個c++程序員,有語言使用慣性;二是我主要做圖像處理方面工作,使用什麽平臺對於我來說不重要,我只需要在不同平臺上面能

基於qml創建簡單的圖像處理程序(2)-使用c++&qml進行圖像處理

.cn turn isnull 按鈕 編寫 可能 finish height 通過 《基於qml創建最簡單的圖像處理程序》系列課程及配套代碼基於qml創建最簡單的圖像處理程序(1)-基於qml創建界面http://www.cnblogs.com/jsxyhelu/p/83

基於qml創建簡單的圖像處理程序(3)-使用opencv&qml進行圖像處理

結果 tar isempty reat features eabi qt quick resources 也會 《基於qml創建最簡單的圖像處理程序》系列課程及配套代碼基於qml創建最簡單的圖像處理程序(1)-基於qml創建界面http://www.cnblogs.com/

基於jrtplib實現的簡單服務端和客戶端

使用Jrtplib庫實現服務端和客戶端通訊 程式碼都是直接從jrtplib自帶例子中摳出來的,就是為了方便研究,話不多說直接上菜 服務端程式碼: /* Here's a small IPv4 example for receiver */ /* #incl

簡單的vue入門基礎語法學習

新建index.html,直接複製以下程式碼,雙擊瀏覽器執行即可。程式碼包含Vue的基礎語法,可對照練習。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8">

Android Rxjava2 簡單&全面背壓講解 (Flowable)

1.前言 閱讀本文需要對Rxjava瞭解,如果還沒有了解或者使用過Rxjava的兄die們,可以觀看我另外一篇 Android Rxjava:不一樣的詮釋進行學習。 Rxjava背壓:被觀察者傳送事件的速度大於觀察者接收事件的速度時,觀察者內會建立一個無限制大少的緩衝

Android ARouter簡單&粗暴(使用與原理)講解

1.前言 元件化或者模組化開發模式,已逐漸成為熱浪的形式,使用這些模式可以讓我們程式更容易的擴充套件、更方便的維護 更快捷的同步開發與更簡單的單獨除錯,而ARouter的出現就是讓元件間、模組間是實現完全的獨立。 ARouter是:阿里巴巴自研路由框架,主要解決元件間

unity3d簡單的伺服器,把收到訊息發回客戶端

using UnityEngine; using System.Collections; using System.Collections.Generic; using System.Net.Sockets; using System.Net; using

請做一個Filter過濾器的hello world簡單的一個例子

1)helloWorld: 馬 克-to-win:請同學們先做本部分的Filter的hello world實驗。之後根據實驗,再返回來學習我接下來的這段話。由於在web.xml當中,我們Filter的url-pattern是/*,所以當用戶 訪問根目錄下的任何目標檔案時,我們這個Filter都會起作

簡單基於FFmpeg的封裝格式處理 視音訊複用 muxer

                =====================================================最簡單的基於FFmpeg的封裝格式處理系列文章列表:=====================================================簡介打算記錄一