導航:首頁 > 操作系統 > vlcforandroid源碼下載

vlcforandroid源碼下載

發布時間:2022-10-01 00:21:19

Ⅰ vlc-android要怎麼用

一.認識android的架構
Android其本質就是在標準的linux系統上增加了java虛擬機Dalvik,並在Dalvik虛擬機上搭建了一個JAVA的application framework,所有的應用程序都是基於JAVA的application framework之上。
android分為四個層,從高層到低層分別是應用程序層、應用程序框架層、系統運行庫層和linux核心層。

二.搭建環境
搭建開發環境
對國內的開發者來說最痛苦的是無法去訪問android開發網站。為了更好的認識世界,對程序員來說,會翻牆也是的一門技術,帶你去領略牆外的世界,好了,不廢話了, 國內開發者訪問(androiddevtools) 上面已經有了所有你要的資源,同時可以下載到我們的主角framework

但是這樣的搭建只能去閱讀源代碼,我們無法去更進一步去實現自己的rom,我們看到錘子的系統在早期的開放rom是自己從新實現了framework的代碼,現在看起來他成功了,所以我們還要去搭建android系統的源碼編譯環境。

搭建源碼編譯環境
http://www.cnblogs.com/bluestorm/p/4419135.html
https://source.android.com/source/downloading.html(這里詳細的介紹了如何下載編譯)
三.開始主題

在一開始寫c程序的時候都有一個運行的入口,比如
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;

//這里的main就是應用的入口
int main(int argc, const char * argv[]){
return 0;
}

在計算機網路原理中我們用socket實現一個伺服器端,不斷的接聽客戶端的訪問,而且他的代碼是這樣實現的:
#include <winsock2.h>
#pragma comment(lib, "WS2_32.lib")

#include <stdio.h>
void main()
{
WORD wVersionRequested;//版本號
WSADATA wsaData;
int err;

wVersionRequested = MAKEWORD(2, 2);//2.2版本的套接字
//載入套接字型檔,如果失敗返回
err = WSAStartup(wVersionRequested, &wsaData);
if (err != 0)
{
return;
}

//判斷高低位元組是不是2,如果不是2.2的版本則退出
if (LOBYTE(wsaData.wVersion) != 2 ||

HIBYTE(wsaData.wVersion) != 2)

{
return;
}

//創建流式套接字,基於TCP(SOCK_STREAM)

SOCKET socSrv = socket(AF_INET, SOCK_STREAM, 0);

//Socket地址結構體的創建

SOCKADDR_IN addrSrv;

addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);//轉換Unsigned long型為網路位元組序格
addrSrv.sin_family = AF_INET;//指定地址簇
addrSrv.sin_port = htons(6000);
//指定埠號,除sin_family參數外,其它參數都是網路位元組序,因此需要轉換

//將套接字綁定到一個埠號和本地地址上
bind(socSrv, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR));//必須用sizeof,strlen不行

listen(socSrv, 5);

SOCKADDR_IN addrClient;//字義用來接收客戶端Socket的結構體

int len = sizeof(SOCKADDR);//初始化參數,這個參數必須進行初始化,sizeof

//循環等待接受客戶端發送請求

while (1)
{
//等待客戶請求到來;當請求到來後,接受連接請求,

//返回一個新的對應於此次連接的套接字(accept)。
//此時程序在此發生阻塞

SOCKET sockConn = accept(socSrv, (SOCKADDR*)&addrClient, &len);

char sendBuf[100];

sprintf(sendBuf, "Welcome %s to JoyChou",

inet_ntoa(addrClient.sin_addr));//格式化輸出

//用返回的套接字和客戶端進行通信

send(sockConn, sendBuf, strlen(sendBuf)+1, 0);//多發送一個位元組

//接收數據

char recvBuf[100];

recv(sockConn, recvBuf, 100, 0);

printf("%s\\n", recvBuf);
closesocket(sockConn);

}
}

他採用了一個while死循環去監聽客戶端的請求。
在一遍啰嗦之後,主角終於閃亮的登場了。

先上源代碼
public final class ActivityThread {

public static void main(String[] args) {
SamplingProfilerIntegration.start();

CloseGuard.setEnabled(false);

Environment.initForCurrentUser();

EventLogger.setReporter(new EventLoggingReporter());

Security.addProvider(new AndroidKeyStoreProvider());

final File configDir = Environment.getUserConfigDirectory(UserHandle.myUserId());
TrustedCertificateStore.setDefaultUserDirectory(configDir);

Process.setArgV0("<pre-initialized>");

Looper.prepareMainLooper();

//從中可以看到為app開辟了一個線程進入了looper之中

ActivityThread thread = new ActivityThread();
thread.attach(false);

if (sMainThreadHandler == null) {
sMainThreadHandler = thread.getHandler();
}

AsyncTask.init();

if (false) {
Looper.myLooper().setMessageLogging(new
LogPrinter(Log.DEBUG, "ActivityThread"));
}

Looper.loop();

throw new RuntimeException("Main thread loop unexpectedly exited");
}

}

看到源碼失望了,沒有一個while循環啊,其實用了他方法實現
//用一個looper的機制循環監聽響應
Looper.prepareMainLooper();

Looper.loop();

進一步深入代碼
public static void loop() {
final Looper me = myLooper();
if (me == null) {
throw new RuntimeException("No Looper; Looper.prepare() wasn't called on this thread.");
}
final MessageQueue queue = me.mQueue;

Binder.clearCallingIdentity();
final long ident = Binder.clearCallingIdentity();

// 在這里看到了一個循環監聽消息

for (;;) {
Message msg = queue.next(); // might block
if (msg == null) {
// No message indicates that the message queue is quitting.
return;
}

Printer logging = me.mLogging;
if (logging != null) {
logging.println(">>>>> Dispatching to " + msg.target + " " +
msg.callback + ": " + msg.what);
}

msg.target.dispatchMessage(msg);

if (logging != null) {
logging.println("<<<<< Finished to " + msg.target + " " + msg.callback);
}

// Make sure that ring the course of dispatching the
// identity of the thread wasn't corrupted.
final long newIdent = Binder.clearCallingIdentity();
if (ident != newIdent) {
Log.wtf(TAG, "Thread identity changed from 0x"
+ Long.toHexString(ident) + " to 0x"
+ Long.toHexString(newIdent) + " while dispatching to "
+ msg.target.getClass().getName() + " "
+ msg.callback + " what=" + msg.what);
}

msg.recycleUnchecked();
}
}

Ⅱ github 上有什麼價值的android 源碼

1. ActionBarSherlock

ActionBarSherlock應該算得上是GitHub上最火的Android開源項目了,它是一個獨立的庫,通過一個API和主題,開發者就可以很方便地使用所有版本的Android動作欄的設計模式。

對於Android
4.0及更高版本,ActionBarSherlock可以自動使用本地ActionBar實現,而對於之前沒有ActionBar功能的版本,基於
Ice Cream Sandwich的自定義動作欄實現將自動圍繞布局。能夠讓開發者輕松開發一款帶動作欄(Action
bar)的應用,並且適用於Android 2.x及其以上所有版本。

詳情請參考:ActionBarSherlock

2. facebook-android-sdk

Facebook SDK for Android是一個開源庫,允許開發者將Facebook集成到所開發的Android應用中。

如果想要獲取更多關於示例、文檔、將SDK集成到App中、源代碼等信息,可直接登陸Facebook Developers查看。

3. SlidingMenu(SlidingMenu Demos)

SlidingMenu是一個開源的Android庫,能夠讓開發者輕松開發一款應用,實現類似於Google+、Youtube和Facebook應用中非常流行的滑動式菜單。

使用SlidingMenu的Android應用:

Foursquare
Rdio
Plume
VLC for Android
ESPN ScoreCenter
MLS MatchDay
9GAG
Wunderlist 2
The Verge
MTG Familiar
Mantano Reader
Falcon Pro (BETA)
MW3 Barracks

4. cocos2d-x

在移動開發領域,將Cocos2D-X用於主流iOS/Android游戲開發的公司、開發團隊多不勝數。cocos2d-x是一個開源的支持多平
台的2D游戲框架,使用C++開發,基於cocos2d-iphone,在MIT許可證下發布。主分支在GitHub上使用OpenGL ES
2.0渲染,而舊版gles11分支則使用OpenGL ES 1.1渲染。

支持iOS、Android、Windows Phone 8、Bada、BlackBerry、Marmalade、Windows、Linux等多個平台。支持C++、Lua、JavaScript編程語言。

5. android

GitHub Android App是
GitHub開源的Android客戶端,支持Issues、Gists,並集成了新聞Feed,能夠讓你及時跟進組織及關注的開發者、庫等。同時,該應
用還提供了一個用戶快速訪問你所創建、監控及發布issue的面板,可查看並將問題加入到收藏夾,可對標簽、里程碑和任務進行過濾配置。

android資源庫包含了GitHub Android App的所有源代碼。

6. Android-ViewPagerIndicator

ViewPager指針項目,在使用ViewPager的時候能夠指示ViewPager所在的位置,就像Google Play中切換的效果一樣,還能使用在應用初始化的介紹頁面。

兼容Android支持庫的ViewPager及ActionBarSherlock,最初是基於Patrik Åkerfeldt的ViewFlow,開發者可以直接登陸Google Play下載該項目的演示應用。

7. MonoGame

MonoGame是一個Microsoft XNA 4.x Framework的開源跨平台實現。用於讓XNA開發者將他們在Xbox
360、Windows & Windows Phone上開發的游戲移植到iOS、Android、Mac OS
X、Linux及Windows 8 Metro上,目前,PlayStation Mobile & Raspberry
PI的開發正在進行中。

詳情請參考:MonoGame

8. Android-PullToRefresh

該項目用於為Android提供一個可重用的下拉刷新部件。它最初來源於Johan Nilsson的庫(主要是圖形、字元串和動畫),但這些後來都已被取代。

9. android-async-http

android-async-http是Android上的一個非同步、基於回調的HTTP客戶端開發包,建立在Apache的HttpClient庫上。

10. Android-Universal-Image-Loader

Android上最讓人頭疼的莫過於從網路獲取圖片、顯示、回收,任何一個環節有問題都可能直接OOM,這個項目或許能幫到你。

Universal Image Loader for Android的目的是為了實現非同步的網路圖片載入、緩存及顯示,支持多線程非同步載入。它最初來源於Fedor Vlasov的項目,且自此之後,經過大規模的重構和改進。

11. GreenDroid

GreenDroid最初是由Cyril Mottier發起,是一個Android的UI開發類庫,能夠讓UI開發更加簡便,並且在應用中始終保持一致。

詳情請參考:Cyril Mottier's Blog

12. Anki-Android

AnkiDroid是一個免費、開源的Android的快閃記憶體應用,可直接從Google Play進行下載。

詳情請參考:ankidroid

13. android-actionbar

Action
bar是一個標識應用程序和用戶位置的窗口功能,並且給用戶提供操作和導航模式。在大多數的情況下,當開發者需要突出展現用戶行為或在全局導航的
activity中使用action bar,因為action
bar能夠使應用程序給用戶提供一致的界面,且系統能夠很好地根據不同的屏幕配置來適應操作欄的外觀。

Action bar的主要目的:

提供一個用於識別應用程序的標示和用戶的位置的專用空間。
在不同的應用程序之間提供一致的導航和視覺體驗。
突出Activity的關鍵操作,並且在可預見的方法內給用戶提供快捷的訪問。

14. android-viewflow

android-viewflow是Android平台上的一個視圖切換的效果庫,ViewFlow相當於Android UI部件提供水平滾動的ViewGroup,使用Adapter進行條目綁定。

15. android-mapviewballoons

當使用Android地圖外部庫(com.google.android.maps)時,android-mapviewballoons會提供一個簡單的方式來對地圖覆蓋進行標注,就是一個簡單的信息氣泡。

它由BalloonOverlayView組成,是一個代表顯示你的MapView及BalloonItemizedOverlay的氣泡的視圖,BalloonItemizedOverlay是ItemizedOverlay的一個抽象擴展。

16. PushSharp

一個向iOS(iPhone/iPad APNS)、Android(C2DM和GCM)、Windows Phone和Windows 8設備發送推送通知的伺服器端庫。

17. androidannotations

Android Annotations是一個開源的框架,用於加速 Android應用的開發,可以讓你把重點放在功能的實現上,簡化了代碼,提升了可維護性。

18. HockeyKit

Hockey是一個iOS Ad-Hoc自動更新框架。蘋果App
Store中的所有App都可以使用它,它能夠顯著地提高Beta測試的整個過程,分為兩部分:伺服器和客戶端框架。伺服器組件需要所有腳本,但在沒有客
戶端庫的情況下,也可以單獨工作。它提供一個Web介面,Beta測試者可以使用它來安裝最新的AdHoc配置文件,也可以直接在設備上通過Safari
安裝最新的Beta版本。

只需在伺服器上安裝一次服務端,就可以處理包標識符不同的多個應用程序(有開發者強烈建議對Debug、AdHoc Beta和AppStore發布版使用不同的包標識符)。
默認當App啟動或喚醒時,客戶端會從伺服器檢測更新,用戶可以在設置對話框中進行修改:一天一次或手動檢查更新。
除了支持iOS,HokeyKit也支持Android平台,不過Android版還處在Alpha階段,支持OTA及應用內更新。
為HockeyKit用戶提供伺服器託管服務。

19. android-menudrawer

Android上的菜單展示風格各異,其中用得最多且體驗最好的莫過於左右滑動來顯示隱藏的菜單,android-menudrawer是一個滑動
式菜單實現,允許用戶在應用當中實現無縫導航。該項目具有多種菜單展示效果,其中最常見的就是通過屏幕邊緣拖動或點擊動作欄的「向上」按鈕顯示。

實現功能:

菜單可以沿著四個邊放置。
支持附加一個始終可見、不可拖動的菜單。
菜單的內容和整個窗口都可以隱藏。
可用於XML布局。
顯示當前可見屏幕的指示器。

20. android-flip

Aphid FlipView是一個能夠實現Flipboard翻頁效果的UI組件。

Ⅲ 求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

Ⅳ vlc android怎麼集成ffmpeg的全部功能

官網源碼下載:http://mirror.us.leaseweb.NET/videolan/
Git獲取:clone from git://git.videolan.org/vlc-ports/Android.git
補丁:https://patches.videolan.org/

2、編譯

1、搭配環境
AndroidSDK:adt-bundle-Linux-x86-20130522
JDK:jdk-7u25-linux-i586
NDK:android-ndk-r8e-linux-x86

2、安裝工具
apt-get install gcc

Ⅳ vlc for android 源碼能不能在windows環境下編譯

1. 准備編譯環境

基本上按照這篇wiki的介紹就足夠了,為了順利完成編譯,建議首先保證相關的軟體或者依賴庫都已經下載好了,我再強調一下幾個重點注意事項。

(1) Android SDK:必須使用SDK Platform Android 5.0, API 21,因為VLC-for-android用到了Android 5.0 的一些API。

(2) 最好通過apt-get install 把下面這些依賴的軟體都安裝一遍,或更新到最新版

git,apache-ant (or ant), autoconf, automake, autopoint, cmake,
gawk (or nawk), gcc, g++, libtool, m4, patch, pkg-config, ragel,
subversion, unzip.

2. 下載源碼包

直接通過git下載VLC-for-android最新的源碼即可:

git clone git://git.videolan.org/vlc-ports/android.git

3. 編譯VLC源碼和VLC Android工程

(1) 配置編譯環境變數

具體參考wiki的介紹,你可以寫個shell腳本來執行,避免每次編譯都要配置,下面是我的環境變數,可以根據你的路徑修改:

#! /bin/sh

export ANDROID_SDK=/opt/android/sdk/

export ANDROID_NDK=/opt/android/android-ndk-r10/

export ANT_DIR=/opt/android/ant/

export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools:$ANT_DIR

export ANDROID_ABI=armeabi-v7a

(2) 執行編譯

sh compile.sh

VLC不愧是使用這么廣泛的播放器,它的編譯腳本寫得非常強大和智能,直接通過執行compile.sh,它會自動check所有的依賴,並通過網路去下載缺失的庫。

首先,它會下載vlc的源碼,並存放在當前目錄下。然後去下載依賴的第三方庫文件。

當然,由於GFW的存在,有的時候下載會失敗,這個時候,就需要你手動去Google搜索它正在下載的依賴文件,手動下載好了之後放到 vlc/contrib/tarballs目錄下,然後再回到命令行重新執行 sh compile.sh

它依賴的全部第三方庫文件如圖所示:

(3) 編譯問題

編譯過程還算順利,只出現過一個大問題,如下:

google/protobuf/unittest.proto:853:21: Missing field number.

google/protobuf/unittest.proto:862:1: Reached end of input in message definition (missing '}').

make[3]: *** [unittest_proto_middleman] Error 1

網上也搜不到解決方案,我看了下GitHub上Protobuf的Readme,然後下載了最新的protobuf放到vlc/contrib
/tarballs/contrib-android-arm-linux-androideabi/protobuf目錄下,執行.
/configure --disable-shared,再編譯,沒想到就直接過了。

4. 載入VLC-For-Android的Java工程

編譯通過後,就可以直接在vlc-android/bin目錄下看到debug版的apk了,下面簡單說說在Eclipse中載入vlc-android的整個工程。

打開Eclipse,選擇Import,把vlc-for-android目錄下所有的工程到導入到Eclipse中(我去掉了TV工程),如圖所
示,有5個必須的工程,其中,VLC是主工程,其他四個都是Lib工程。沒有什麼意外的話,直接運行VLC工程,就可以在Android手機上看到VLC
播放器應用了!

Ⅵ 求vlc播放器 中文版軟體

軟體介紹:

vlc播放器中文版是一款操作簡單的媒體播放器,它支持眾多音頻與視頻解碼器及文件格式,並支持DVD影音光碟,VCD影音光碟及各類流式協議,大多數的媒體文件都可以播放。

所需工具:點擊下載 vlc播放器 中文版

軟體特點

1、簡單、快速、強大

1)vlc播放器中文版能播放任何內容 - 文件、光碟、攝像頭、設備及流媒體

2)可播放大多數格式,無需安裝編解碼器包 - MPEG-2, MPEG-4, H.264, MKV, WebM, WMV, MP3...

3)可在所有平台運行 - Windows, Linux, Mac OS X, Unix, iOS, Android ...

4)vlc播放器中文版完全免費 - 無間諜軟體,無廣告,無跟蹤用戶的行為

2、自定義

1)添加外觀

2)設計外觀可採用 VLC 外觀編輯器

3)安裝擴展

3、vlc播放器中文版具有跨平台的特性,它有Linux、Microsoft Windows、Mac OS X、BeOS、BSD、Pocket PC及Solaris的版本。

4、與另一個著名播放器Mplayer(使用Gtk+庫)不同的是,VLC使用了Qt庫來編寫Linux的用戶操作界面。

5、在Windows,Linux以及某些平台,vlc播放器中文版提供了一個Mozilla擴充包,使得某些網站上附帶的QuickTime及Windows Media多媒體文件,可以在非微軟或蘋果計算機的操作系統中,正常顯示於Mozilla的瀏覽器下。

6、從版本0.8.2開始,VLC亦提供了一個ActiveX的擴充包,使用戶可以在Internet Explorer下,正常顯示某些網站上附帶的QuickTime及Windows Media多媒體文件。

7、從1.0.5版本開始VLC的ActiveX的擴充包已經放棄js介面的調用。

8、vlc播放器中文版還有一個非常好的功能——支持播放某些沒有下載完成的視頻文件部份內容。

Ⅶ 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/

Ⅷ android 如何使用vlc進行二次開發

到vlc官網下載vlc
for
android工程,就可以進行二次開發。看你需要什麼內容,我這邊也有一個調試好的工程,需要就加我QQ463855700

Ⅸ vlc for android為什麼沒有串流功能

做vlc-android移植的道友都應該知道,當編譯完vlc-android源碼後EventManager.java類中定義了許多事件,下面是源碼一部分:publicclassEventManager{/**.*///=0;//=1;//=2;//=3;//=4;//=5;//=0x100;//=0x101;//=0x102;//=0x103;=0x104;=0x105;=0x106;}可是對於這些事件有很多都被注釋掉了,當我們需要被注釋掉的事件時,就算把注釋拿掉,再調用mEventManager.addHandler(EventManager.getInstance())添加事件之後,也不會在定義的mEventHandler的handleMessage()中監聽到,下面為一個mEventHandler定義的demo:[java]=newVideoEventHandler(this);{publicVideoEventHandler(DtvPlayerowner){super(owner);}@(Messagemsg){DtvPlayeractivity=getOwner();if(activity==null)return;switch(msg.getData().getInt("event")){caseEventManager.MediaPlayerBuffering:Log.d(TAG,"MediaPlayerBuffering");break;caseEventManager.MediaPlayerEncounteredError:Log.d(TAG,"MediaPlayerEncounteredError");break;default:Log.e(TAG,String.format("Eventnothandled(0x%x)",msg.getData().getInt("event")));break;}super.handleMessage(msg);}}那麼如何才能夠在mEventHandler中監聽到我們需要的事件呢,下面將進入主題。在libvlcjni.c中有一個靜態常量,其中指定了我們目前需要獲取哪些事件:[html]viewplainstaticconstlibvlc_event_type_tmp_events[]={libvlc_MediaPlayerPlaying,libvlc_MediaPlayerPaused,libvlc_MediaPlayerEndReached,libvlc_MediaPlayerStopped,libvlc_MediaPlayerVout,libvlc_MediaPlayerPositionChanged};你可以將自己需要的事件添加在裡面,然後將EventManager中響應的事件注釋拿掉,之後重新編譯源碼就可以再mEventHandler中獲取你剛添加的事件了。(例如:你要想獲取MediaPlayerEncounteredError事件,先將libvlc_MediaPlayerEncounteredError添加在mp_events[]靜態常量中(注意,這里前面多了libvlc_),然後把EventManager中的=0x10a;注釋拿掉,重新編譯源碼之後就可以在你得mEventHandler的handleMessage()中獲取到EventManger.MediaPlayerEncounteredError事件)。在vlc-android/vlc/lib/event.c中定義了所有事件:[cpp]viewplain#defineDEF(a){libvlc_##a,#a,},typedefstruct{inttype;constcharname[40];}event_name_t;staticconstevent_name_tevent_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)};#undefDEF其中DEF()將MediaPlayerEncounteredError定義為libvlc_MediaPlayerEncounteredError,當本地代碼產生MediaPlayerEncounteredError事件時會將libvlc_MediaPlayerEncounteredError傳遞給jni,與此同時jni又會傳遞給java層。不管是本地libvlc_MediaPlayerEncounteredError還是java層MediaPlayerEncounteredError,對於同一個事件被定義的值都是相同的,傳輸的是同一個消息值。本地代碼定義在vlc-android/vlc/include/libvlc_events.h,java代碼定義在EventManager.java中。

Ⅹ 如何獲得android armv-7版libvlc.so libvlccore.so,編譯vlc.tar.gz源碼包還是編譯vlc for android.tar.gz

一: 安裝android SDK, NDK, JDK三個工具,SDK是android系統用的,有些SDK還包含了eclipse,
NDK是用來編譯C/C++代碼的,這樣使得android應用程序可能通過java來調用c/c++程序、JDK不用說,是java運行必須的環境。
二: 根據第一步解壓的三個工具,配置這三個工具的環境變數(PATH),方法很多,可以修改~/.bashrc /etc/profile等等,這一步一定要正確,否則系統會找不到這三個工具,後面的編譯會用到這幾個工具,當然也就會出錯了,因為系統默認不知道這幾個程序的位置,這跟windows下的環境變數一個道理。為了驗證環境變數是否配置正確,可以到別的目錄下運行這幾個程序,比如到根目錄下看能否運行ndk-build adb等程序,或者echo $PATH列印一下當前的環境變數並驗證。

閱讀全文

與vlcforandroid源碼下載相關的資料

熱點內容
五菱宏光空調壓縮機 瀏覽:64
為什麼app佔用幾百兆 瀏覽:676
自動解壓失敗叫我聯系客服 瀏覽:482
易語言新手源碼 瀏覽:456
oa伺服器必須有固定ip地址 瀏覽:42
傳奇源碼分析是什麼 瀏覽:267
解放壓縮機支架 瀏覽:255
程序員禿頂搞笑相遇 瀏覽:6
IBM手機app商店叫什麼名字 瀏覽:834
jpeg壓縮質量 瀏覽:774
雲伺服器評測對比 瀏覽:145
java日期轉string 瀏覽:221
openfire源碼編譯 瀏覽:897
在線小工具箱引流網站源碼 瀏覽:337
非科班程序員自學 瀏覽:801
壓縮泡沫鞋底底材 瀏覽:221
程序員職場第一課2正確的溝通 瀏覽:681
遇到不合法app應該怎麼辦 瀏覽:92
匯編程序編譯後的文件 瀏覽:81
大智慧均線源碼 瀏覽:374