欢迎来到皮皮网官网

【蓝鸟源码】【全民挂机 源码】【tomcat源码 eclipse】vlc源码解读

时间:2024-12-23 04:15:48 来源:jsmap源码

1.如何将vlc嵌入到android中
2.Python 流媒体播放器(基于VLC)
3.vlc是码解什么

vlc源码解读

如何将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 = 0x;

       ã€€ã€€//public static final int MediaPlayerNothingSpecial = 0x;

       ã€€ã€€//public static final int MediaPlayerOpening = 0x;

       ã€€ã€€//public static final int MediaPlayerBuffering = 0x;

       ã€€ã€€public static final int MediaPlayerPlaying = 0x;

       ã€€ã€€public static final int MediaPlayerPaused = 0x;

       ã€€ã€€public static final int MediaPlayerStopped = 0x;

       ã€€ã€€

       ã€€ã€€......

       ã€€ã€€}

       ã€€ã€€å¯æ˜¯å¯¹äºŽè¿™äº›äº‹ä»¶æœ‰å¾ˆå¤šéƒ½è¢«æ³¨é‡ŠæŽ‰äº†ï¼Œå½“我们需要被注释掉的事件时,就算把注释拿掉,再调用mEventManager.addHandler(EventManager.getInstance())添加事件之后,也不会在定义的mEventHandler

       çš„handleMessage()中监听到,下面为一个mEventHandler定义的demo:

       ã€€ã€€[java] view plaincopy

       ã€€ã€€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 plaincopy

       ã€€ã€€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 =

       0xa;注释拿掉,重新编译源码之后就可以在你得mEventHandler

       çš„handleMessage()中获取到EventManger.MediaPlayerEncounteredError事件)。

       ã€€ã€€åœ¨vlc-android/vlc/lib/event.c中定义了所有事件:

       ã€€ã€€[cpp] view plaincopy

       ã€€ã€€#define DEF( a ) { libvlc_##a, #a, },

       ã€€ã€€

       ã€€ã€€typedef struct

       ã€€ã€€{

       ã€€ã€€int type;

       ã€€ã€€const char name[];

       ã€€ã€€} 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中。

       è½¬è½½

Python 流媒体播放器(基于VLC)

       VLC,一款全面的码解开源多媒体播放器及框架,支持绝大部分多媒体格式和流媒体协议。码解其Python绑定提供了简单调用VLC动态库的码解接口,适合开发功能丰富、码解使用简单的码解蓝鸟源码播放器。为了使用VLC,码解首先需在Windows系统安装对应版本的码解VLC和python-vlc绑定。下载VLC绿色免安装版,码解解压并剪裁所需文件。码解通过Python封装 VLC.py 模块,码解实现VLC动态库集成。码解创建播放示例,码解包含基本播放、码解监听时间变化、码解全民挂机 源码视频加字幕、音频可视化及跨平台功能。通过命令行或Tkinter界面实现播放器功能,支持本地音频文件和在线流媒体播放。VLC Python绑定提供丰富选项参数设置,灵活满足不同需求。跨平台开发时,tomcat源码 eclipse可在线安装VLC或集成VLC源码编译。通过项目实例,学习VLC Python绑定及Tkinter界面编程。关注博主的公众号了解完整播放器实现细节和界面编程技巧。

vlc是什么

       VLC是一款免费开源的跨平台多媒体框架和播放器。

       以下是关于VLC的详细解释:

VLC媒体播放器

       VLC是一款功能强大的媒体播放器。它可以播放大多数格式的php调查源码音频和视频文件。无论是音频还是视频,只要是常见的格式,VLC都可以轻松应对。这使得它在各种操作系统中都受到用户的欢迎。由于其开源的特性,用户还可以根据需要自定义VLC的功能。

跨平台支持

       VLC支持多种操作系统,android 4.2 源码包括但不限于Windows、Linux、Mac OS等。这意味着无论用户使用的是哪种操作系统,都可以享受到VLC带来的便利。这也是VLC能够赢得大量用户喜爱的原因之一。

开源特性

       VLC是一个开源项目,这意味着它的源代码是公开的,任何人都可以查看和修改。这一特点使得VLC得以持续发展和完善,不断有新的功能和优化加入。同时,开发者社区也可以基于VLC创建更多的应用和服务。

扩展性强

       由于VLC是一个多媒体框架,它提供了丰富的API和插件接口,用户可以根据自己的需求扩展其功能。例如,用户可以添加字幕、滤镜效果等,以满足个性化的播放需求。此外,由于开源社区的支持,第三方开发者已经为VLC开发了大量的插件和扩展,使其功能更加丰富。

       总结:VLC是一款免费开源的跨平台多媒体播放器,支持多种格式的音频和视频播放。由于其强大的功能和广泛的平台支持,VLC在全球范围内拥有大量的用户。其开源特性使得它得以持续发展和完善,为用户提供更好的体验。

copyright © 2016 powered by 皮皮网   sitemap