當前位置:首頁 » 操作系統 » vlcplayer源碼

vlcplayer源碼

發布時間: 2022-06-26 21:05:33

A. 求vlc播放器的源代碼

最新版源碼下載地址: http://download.videolan.org/pub/videolan/vlc/1.1.7/vlc-1.1.7.tar.bz2
但是官方不支持使用VC編譯,並且不建議使用VC,移植難度很大。
官方支持的是MingW或者Cygwin,也就是GCC的Windows版。編譯方法見官方Wiki:
- http://wiki.videolan.org/Win32CompileMSYS
- http://wiki.videolan.org/Win32CompileCygwin

B. 如何在MacOSX Lion上編譯VLC media player

11.03
在Mac OS X Lion下編譯VLC media player
Prerequisite
Mac OS X Lion
XCode 4.4.1
0.建立一個文件夾並進入
$ mkdir vlc_osx && cd vlc_osx
1.設置編譯器
$ export CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc
$ export CXX=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++
$ export OBJC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc
2. 下載源碼至本地
$ git clone git://git.videolan.org/vlc.git
3. 編譯autoconfig等工具
$ cd vlc/extras/tools
$ ./bootstrap && make
$ cd ../..
$ export PATH=$PWD/extras/tools/build/bin:$PATH
(注意第四項設置非常重要,確保自行編譯生成的工具所在的路徑在系統原有路徑之前,否則會調用
系統原有的lib tool工具,由於版本問題,可以會導致下面的步驟出錯)
4. 設置操作系統版本
$ export OSX_VERSION=10.7
5. 編譯
$ cd contrib
$ mkdir -p osx && cd osx
$ ../bootstrap --host=x86_64-apple-darwin11 --build=x86_64-apple-darwin11
6.編譯第三方庫
6.1 下載編譯好的第三方庫(推薦)
$ make prebuilt
6.2 從源碼自行編譯第三方庫(反正我是沒有編譯成功)
$ make -j4 .gettext
$ export PATH=$PWD/../x86_64-apple-darwin11/bin:$PATH
7.Bootstrap VLC
$ cd ../..
$ ./bootstrap
8.配置編譯選項(Configure)
$ mkdir -p build && cd build
$ ../extras/package/macosx/configure.sh --enable-debug --disable-ncurses --host=x86_64-apple-darwin11 --build=x86_64-apple-darwin11
9.編譯VLC
$ make -j4 或 $./compile.sh
10.開始使用
此時在當前目錄下(即build目錄)下應有一個VLC.app目錄
$VLC.app/Contents/MacOS/VLC
應該可以看到vlc media player正確啟動了
Reference
http://wiki.videolan.org/OSXCompile

C. 如何在Ubuntu上安裝VLC播放器,以及DASH VLC plugin,使其支持DASH訪問

最簡單的方法,打開軟體中心或新立得,直接搜vlc,找到後安裝。

稍微難一點的方法,打開終端,輸入命令

sudoapt-getinstallvlc

我沒有命令行安裝過vlc,不知道軟體庫里還是不是vlc,如果不是一般可以這樣解決

sudoapt-getinstallvlc*

最難的方法,下載源碼自己編譯安裝。


********************************************************

插件那個安裝,建議先安裝新立得(建議必裝)

sudoapt-getinstallsynaptic

用sudo許可權打開後直接查找相關的插件名,然後安裝。

或者用上面的方法

sudoapt-getinstallvlc*

除了vlc之外還會顯示很多可用插件,選擇你需要的,安裝即可,例如

sudoapt-getinstallvlcvlc-dash-plugin

上面命令我瞎編的不能信,具體看你終端里的反饋。

D. vlc播放器是用什麼寫出來的

以下是編譯VLC源代碼時所需的庫:

Third party libraries used by VLC
You'll find a complete list on the wiki.

But, here are the most important libraries.

Audio/Video codecs
liba52 - an ATSC A/52 (aka AC3) audio decoder
libmad - an MPEG audio decoder
libmpeg2 - an MPEG1/2 video decoder
libavcodec (ffmpeg) - an extensive audio/video codec library which supports several formats like MPEG4, H263, WMV/A etc...
libogg - an Ogg bitstream parser
libvorbis - a Vorbis audio decoder
libflac - a FLAC (Free Lossless Audio Codec) audio decoder
libspeex - a Speex (Free speech codec) audio decoder
libtheora - a Theora video decoder
libfaad2 - an AAC audio decoder
libdv - a DV video decoder (deprecated in favor of libavcodec)
libxvidcore (xvid) - an ISO MPEG-4 compliant video codec (deprecated in favor of libavcodec)
libdca - A DTS Coherent Acoustics decoding library.

GUI framework libraries
wxWidgets - a cross-platform C++ GUI framework that keeps the look and feel of each platform
QT4 - a C++ Cross-Platform Rich Client Development Framework

Audio/Video output libraries
libsdl - a cross-platform multimedia library designed to provide level access to audio, and 2D video framebuffer

Miscellaneous libraries
libdvdcss - a library for accessing encrypted DVDs
libdvdnav - a library for DVD navigation
libdvdread - a library for reading DVD-Video images
libdvbpsi - a library designed for decoding and generation of MPEG TS and DVB PSI tables
libopenslp - an open-source implementation of Service Location Protocol
gettext - a set of tools that provides a framework to help applications proce multi-lingual messages
libfreetype2 - a software font engine that is designed to be small, efficient, highly customizable and portable while capable of procing high-quality output (glyph images).
fribidi - A Free Implementation of the Unicode Bidirectional Algorithm
liveMedia - C++ libraries for multimedia streaming (RTP/RTCP, RTSP, SIP)
matroska - a new, extensible open standard Audio/Video container format

If you're using those libs to compile VLC for windows with mingw-gcc 3.3.1, you can use our Win32 contribs.

如果需要更權威的回答,這里是VLC官方提供的源碼下載:
http://download.videolan.org/pub/vlc/

E. 我的電腦為什麼安裝不了VLC media player

http://download.videolan.org/pub/videolan/
這里有vlc各個版本的源代碼和二進制文件,直接下你想要的版本的二進制文件解壓後就可以用了,不用安裝。(注意選與自己操作系統一值的壓縮包)

F. 怎麼用java調用vlc播放器

最簡單的方法,打開軟體中心或新立得,直接搜vlc,找到後安裝。稍微難一點的方法,打開終端,輸入命令sudo apt-get install vlc我沒有命令行安裝過vlc,不知道軟體庫里還是不是vlc,如果不是一般可以這樣解決sudo apt-get install vlc*最難的方法,下載源碼自己編譯安裝。********************************************************插件那個安裝,建議先安裝新立得(建議必裝)sudo apt-get install synaptic用sudo許可權打開後直接查找相關的插件名,然後安裝。或者用上面的方法sudo apt-get install vlc*除了vlc之外還會顯示很多可用插件,選擇你需要的,安裝即可,例如sudo apt-get install vlc vlc-dash-plugin上面命令我瞎編的不能信,具體看你終端里的反饋。

G. VLC播放器看網路電視,應該打開什麼文件,是什麼格式的,代碼是什麼,謝謝!

、轉發服務端設置

首先將一個性能好的電腦作為轉發伺服器,運行VLC Media Player軟體,在菜單欄里,通過[文件]→[打開文件],選擇[網路],選「HTTP/HTTPS/FTP/MMS」傳輸協議,在網址填寫框內填寫需要播放衛星節目的網址,網上的教程均介紹應該填寫「 xxx/video.m3u」,但發現不能成功,正確的方式應該填寫衛星節目的詳細網址,這就和在WEB頁面調用VLC Media Player軟體時,必須先下載後方能播放成功是一樣的道理。

如何知道衛星節目的詳細網址呢?以我們轉發70.5°E的「Trace TV」音樂頻道為例,具體方法如下:

首先進入DM500S接收機的WEB管理控制界面,選擇「Trace TV」頻道,點擊「VLC」,待下載完成後點擊播放,此時出現VLC Media Player軟體播放該頻道的界面。在菜單欄里,通過[查看]→[串流及媒體信息],選擇[一般]。

復制「URI」欄目內的網址(註:「URI」應該為「URL」,漢化錯誤),粘貼到[文件] →[打開文件] →[網路] →[網址]框內,再將[串流/保護]前選項框內打「√」,即可點擊「設置」按鈕。

進入[串流輸出]設置界面。

首先選擇[輸出]方式,這里選用MMSH協議,地址欄填寫轉發服務端的IP地址「192.168.1.2」。然後選擇[封裝方法],一般選用ASF,也可採用MP4、WAV封裝方法,不過只能採用MMSH協議輸出,如果採用HTTP協議輸出,則客戶端播放沒有畫面。

通過VLC串流轉碼。實際上就是VLC Media Player解碼DM500S的TS流,然後VLC Media Player又重新封裝打包並且傳回網路的過程,這個封裝方式可以在[轉碼選項]中自行變更。在[轉碼選項]中,選擇視頻編碼器、音頻編碼器的編碼格式時,應考慮客戶端有無相應的解碼包。一般視頻編碼器可選擇常用的WMV1、WMV2格式,音頻編碼器選用MP3格式。比特率的選擇應考慮網路帶寬及轉發伺服器的性能,在條件允許的情況下,選擇較大的比特率有利於畫質和音質的提高。選擇時注意,視頻編碼器中的「尺寸」是指播放畫面的大小;音頻編碼器中的「頻道」為漢化錯誤,應該為「聲道」,通常選擇「2」,表示雙聲道。

以上的設置完成後,按兩次「確定」後退出設置界面,此時VLC Media Player播放器底端會有計時器出現,說明軟體已開始進行串流發送。至於成功不成功,我們可以通過菜單欄[查看]→[串流及媒體信息]→[Statistics]來查看。

在下面的[串流]區域內,已有各項發送數據統計數字,表示轉發功能正常。注意:在轉發時,VLC Media Player軟體是沒有畫面顯示和聲音輸出的,因此其視頻和音頻區域的「已顯示的幀」和「已播放的緩沖器」的統計數字均為「0」。

2、客戶端播放

由於轉發服務端採用MMSH協議輸出,因此只要打開Windows Media Player播放軟體,通過[文件]→[打開URL],輸入mms://192.168.1.2:1234或,播放軟體經過片刻的連接和緩沖後,就可觀看節目了,界面的最下方為播放速率。注意:如果轉發服務端採用HTTP協議輸出,則客戶端只能輸入地址。

3、使用注意事項

採用該方案關鍵是轉發服務端設置,如果客戶端無法播放,首先應該檢查轉發伺服器有無串流輸出。對於客戶端只有伴音輸出而沒有畫面播出的,則應該檢查所選用的輸出協議是否正確,其次是所選的視頻編碼器在客戶端有無相應的解碼包。

對於廣播來講,它是一種同時向大量客戶傳輸數據的方法。在廣播時,是通過使用廣播發布點來實現的。在我們上面所介紹的兩種方案中,廣播發布點就是客戶端要輸入網址和埠號。使用廣播方案時,接收廣播的客戶端是不能切換頻道的,只能是播什麼看什麼。當服務端(DM500S)或轉發服務端(台式機)換機時,客戶端(筆記本電腦)軟體需要重新啟動播放功能。

H. 如何將vlc嵌入到android中

做vlc-android移植的道友都應該知道,當編譯完vlc-android 源碼後EventManager.java
類中定義了許多事件,下面是源碼一部分:

public class EventManager {/*

* Be sure to subscribe to events you need in the JNI too.

*///public static final int MediaMetaChanged = 0;

//public static final int MediaSubItemAdded = 1;

//public static final int MediaDurationChanged = 2;

//public static final int MediaParsedChanged = 3;

//public static final int MediaFreed = 4;

//public static final int MediaStateChanged = 5;//public static final int MediaPlayerMediaChanged = 0x100;

//public static final int MediaPlayerNothingSpecial = 0x101;

//public static final int MediaPlayerOpening = 0x102;

//public static final int MediaPlayerBuffering = 0x103;

public static final int MediaPlayerPlaying = 0x104;

public static final int MediaPlayerPaused = 0x105;

public static final int MediaPlayerStopped = 0x106;......

}

可是對於這些事件有很多都被注釋掉了,當我們需要被注釋掉的事件時,就算把注釋拿掉,再調用mEventManager.addHandler(EventManager.getInstance())添加事件之後,也不會在定義的mEventHandler
的handleMessage()中監聽到,下面為一個mEventHandler定義的demo:

[java] view plain

private final VideoEventHandler mEventHandler = new VideoEventHandler(this);

private class VideoEventHandler extends WeakHandler<DtvPlayer>{

public VideoEventHandler(DtvPlayer owner) {

super(owner);

}

@Override

public void handleMessage(Message msg) {

DtvPlayer activity = getOwner();

if(activity == null) return;

switch (msg.getData().getInt("event")) {

case EventManager.MediaPlayerBuffering:

Log.d(TAG, "MediaPlayerBuffering");

break;

case EventManager.MediaPlayerEncounteredError:

Log.d(TAG, "MediaPlayerEncounteredError");

break;

......

default:

Log.e(TAG, String.format("Event not handled (0x%x)", msg.getData().getInt("event")));

break;

}

super.handleMessage(msg);

}

}

那麼如何才能夠在mEventHandler中監聽到我們需要的事件呢,下面將進入主題。

在libvlcjni.c中有一個靜態常量,其中指定了我們目前需要獲取哪些事件:

[html] view plain

static const libvlc_event_type_t mp_events[] = {

libvlc_MediaPlayerPlaying,

libvlc_MediaPlayerPaused,

libvlc_MediaPlayerEndReached,

libvlc_MediaPlayerStopped,

libvlc_MediaPlayerVout,

libvlc_MediaPlayerPositionChanged

};

你可以將自己需要的事件添加在裡面,然後將EventManager中響應的事件注釋拿掉,之後重新編譯源碼就可以再mEventHandler中獲取你剛添加的事件了。

(例如:你要想獲取MediaPlayerEncounteredError事件,先將libvlc_MediaPlayerEncounteredError添加在mp_events[]靜態常量中(注意,這里前面多了libvlc_),然後把EventManager中的public
static final int MediaPlayerEncounteredError =
0x10a;注釋拿掉,重新編譯源碼之後就可以在你得mEventHandler
的handleMessage()中獲取到EventManger.MediaPlayerEncounteredError事件)。

在vlc-android/vlc/lib/event.c中定義了所有事件:

[cpp] view plain

#define DEF( a ) { libvlc_##a, #a, },typedef struct

{

int type;

const char name[40];

} event_name_t;static const event_name_t event_list[] = {

DEF(MediaMetaChanged)

DEF(MediaSubItemAdded)

DEF(MediaDurationChanged)

DEF(MediaParsedChanged)

DEF(MediaFreed)

DEF(MediaStateChanged)DEF(MediaPlayerMediaChanged)

DEF(MediaPlayerNothingSpecial)

DEF(MediaPlayerOpening)

DEF(MediaPlayerBuffering)

DEF(MediaPlayerPlaying)

DEF(MediaPlayerPaused)

DEF(MediaPlayerStopped)

DEF(MediaPlayerForward)

DEF(MediaPlayerBackward)

DEF(MediaPlayerEndReached)

DEF(MediaPlayerEncounteredError)

DEF(MediaPlayerTimeChanged)

DEF(MediaPlayerPositionChanged)

DEF(MediaPlayerSeekableChanged)

DEF(MediaPlayerPausableChanged)

DEF(MediaPlayerTitleChanged)

DEF(MediaPlayerSnapshotTaken)

DEF(MediaPlayerLengthChanged)

DEF(MediaPlayerVout)DEF(MediaListItemAdded)

DEF(MediaListWillAddItem)

DEF(MediaListItemDeleted)

DEF(MediaListWillDeleteItem)DEF(MediaListViewItemAdded)

DEF(MediaListViewWillAddItem)

DEF(MediaListViewItemDeleted)

DEF(MediaListViewWillDeleteItem)DEF(MediaListPlayerPlayed)

DEF(MediaListPlayerNextItemSet)

DEF(MediaListPlayerStopped)DEF(MediaDiscovererStarted)

DEF(MediaDiscovererEnded)DEF(VlmMediaAdded)

DEF(VlmMediaRemoved)

DEF(VlmMediaChanged)

DEF(VlmMediaInstanceStarted)

DEF(VlmMediaInstanceStopped)

DEF(VlmMediaInstanceStatusInit)

DEF(VlmMediaInstanceStatusOpening)

DEF(VlmMediaInstanceStatusPlaying)

DEF(VlmMediaInstanceStatusPause)

DEF(VlmMediaInstanceStatusEnd)

DEF(VlmMediaInstanceStatusError)

};

#undef DEF

其中DEF()將MediaPlayerEncounteredError定義為libvlc_MediaPlayerEncounteredError,當本地代碼產生MediaPlayerEncounteredError事件時會將libvlc_MediaPlayerEncounteredError傳遞給jni,與此同時jni又會傳遞給java層。不管是本地libvlc_MediaPlayerEncounteredError還是java層MediaPlayerEncounteredError,對於同一個事件被定義的值都是相同的,傳輸的是同一個消息值。本地代碼定義在vlc-android/vlc/include/libvlc_events.h,
java代碼定義在EventManager.java中。
轉載

I. vlc是開源的還有開源的播放器嗎

在github上搜索player就會有一堆

熱點內容
壓縮某個文件夾 發布:2024-11-15 09:03:11 瀏覽:891
網址能解壓嗎 發布:2024-11-15 08:54:09 瀏覽:933
python更改目錄 發布:2024-11-15 08:41:08 瀏覽:265
伺服器快閃記憶體可以裝在一般電腦上嗎 發布:2024-11-15 08:36:46 瀏覽:8
安卓手機怎麼查詢自己的路線軌跡 發布:2024-11-15 08:32:19 瀏覽:969
phpdatet 發布:2024-11-15 08:32:17 瀏覽:507
HDB3編解碼實驗 發布:2024-11-15 08:17:31 瀏覽:212
怪星球編程 發布:2024-11-15 08:15:55 瀏覽:844
慧編程價格 發布:2024-11-15 08:14:09 瀏覽:459
python多行注釋的快捷鍵 發布:2024-11-15 08:09:14 瀏覽:957