vlcandroid播放视频
① 做android视频播放器用vlc和达尔文故武器搭配使用有问题吗
1、不能播放
现象:播放器打开后,缓冲一段时间,弹出播放失败
范围:所有Android设备,但是vlc player可以播放
原因:H.264视频的SPS、PPS没有发送。虽然在DESCRIBE的sdp应答里面已经通过config字段返回了SPS、PPS,但是Android上的播放器忽略了这个,还是需要在RTP流中增加冗余数据。
方案:RTP流中增加冗余的SPS、PPS数据
备注:实现完RTSP服务端后,在VLC上测试可以播放,但是在所有Android设备都不能播,寻找各种原因都没有结果,一度都觉得干脆放弃算了。这件事告诉了我们:永不放弃,在一次次失败后,你离成功就只有一步了。
2、无图像
现象:播放器打开后,有声音无图像
范围:部分影片,部分设备
原因:通过分析影片,发现不能播放的都是H.264 High Profile,设备硬件不支持。
方案:改成H.264 Baseline压缩
② vlc 安卓版能在安卓4.4.1系统播放吗
能在安卓四点四点一系统播放。
这个不是流氓软件是一个播放器,可以播一些或是其它软件还没有下完的一些电影格式,现在删不掉是因为这个软件自己的卸载程序已经坏了,不删不碍事,如果不卸心里不舒服的话就用这个软件了。
安卓四点四介绍
可以让邮件或信息较个性化,在播放视频时可自行添加字幕,它内置了计步器等健身应用,加入了低功耗音频和定位模式,进一步减少设备的功耗,它中加入了接触式支付功能,通过智能卡可以在手机端完成支付,看电子书或使用任何应用程序时都能够较方便地进入到全屏模式,在隐藏虚拟按键,只需滑动屏幕边缘,便可找回按键。
③ 如何用 Android 手机远程控制 linux 桌面 VLC 播放器
准备条件
Android 手机和桌面 Linux 位于同一无线网络,是否可以访问互联网不重要。
Android 手机上安装免费开源的 Remote for VLC(Code 首页)
已经在 Linux 桌面环境下安装好 VLC 2.0 播放器。
下文将以 Fedora 17 为例介绍这一过程。
启用 VLC http 远程控制支持
启动 VLC,在主界面上依次点击“工具”-“首选项”-左下角选择“全部”-左侧列表中选择“主界面”-在右侧勾选“Web”。如下图所示:
保存并关闭 VLC。
之后需要编辑 VLC 的 Lua 主机配置文件,允许可以访问的网络段。比如可以用以下命令以 root 用户身份打开配置文件:
su -c 'vim /usr/share/vlc/lua/http/.hosts'
一般正常的人会仅希望局域网内的 Android 手机可以访问并控制桌面上的 VLC,于是取消 # private addresses下面几行开头的注释即可。
保存更改并退出编辑器。
设置防火墙策略
找到系统设置中的防火墙,或者通过在终端输入 system-config-firewall 的方式启动。
VLC 的远程控制默认通过 8080 端口实现,所以在左侧选择“其他端口”,然后通过右侧依次添加 TCP/UDP 8080 端口。
(可选)Android 手机支持通过 Avahi 的方式自动寻找查找网络中的可用主机,如果需要这个功能的话在左侧选择“可信的服务”,然后在右侧勾选“多点广播 DNS (mDNS)”。如果不用启用该项的话就需要在 Remote for VLC 手动输入 IP 地址和端口。
完成之后点击工具栏上的“应用”保存防火墙配置。
开始使用
再次启动 VLC 播放器,在主界面上选择“视图”-“添加界面”-选择“Web”。
在 Android 手机上启动 Remote for VLC,稍等一下应该就会显示在网络中找到的所有 VLC 实例,轻触即可链接。
此时你就可以远离键盘和鼠标,坐在沙发上享受 VLC 带来的影音体验了:
支持音量、音轨、字幕轨、全屏模式的调整,显示媒体信息。
支持创建播放列表。
支持浏览桌面 Linux 上的文件系统(知道为何不建议通过互联网访问了吧……)
试验性的支持 DVD 菜单。
可以在有来电时自动暂停媒体播放。
④ 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();
}
}
⑤ android vlc怎么设置全屏播放
vlc设置里没有的话,在手机系统设置中:显示-自动旋转(开启)
⑥ 如何让VLC安卓版连续播放本地视频
据我所知,VLC 2.5暂时没有播放列表顺序播放的功能。
你可以看一下软件的设置内是否有新建播放列表的选项。
⑦ vlc-android 在android 电视机上,如何导入播放列表
做vlc-android移植的道友都应该知道,当编译完vlc-android源码后EventManager.java类中定义了许多事件,下面是源码一部分:publicclassEventManager{/**.*///=0;//=1;//=2;//=3;//=4;//=5;//=0x100;//=0x101;//=0x102;//=0x103;=0x104;
⑧ vlc-android要怎么用
VLC Media Player (VideoLAN) 为 Windows、Linux、OS X、Android、iOS、Windows Phone 等平台提供一个视频播放器、解码器。它可以播放来自网络、摄像头、磁盘、光驱的文件,支持包括MPEG 1/2/4, H264, VC-1, DivX, WMV, Vorbis, AC3, AAC等格式的解码。
vlc-android是开源播放器,可以移植到项目里,对码流进行解码,播放等等
⑨ vlc for android怎么播放spydroid
最近在做android视频点对点的聊天项目。
自己在网上找到了spydroid开源项目,可以发送rtsp流。
然后我用vlc for android来播放,在android手机上单独是可以实时播放的。
然后我对vlc项目代码整合到spydroid项目中,可以跑起来,点击播放也可以连接上spydroid,spydroid也有相应,
但是整合后播放显示不了rtsp流,求高手分析分析,谢谢。
log如下:
04-09 11:09:49.998: V/VLC/AudioService(2184): Loading position 0 in [rtsp://192.168.1.238:8086]
04-09 11:09:50.008: V/VLC/AudioService(2184): Creating on-the-fly Media object for rtsp://192.168.1.238:8086
04-09 11:09:50.008: D/VLC(2184): main playlist: no fetch required for (null) (art currently (null))
04-09 11:09:50.008: D/VLC/MediaItem(2184): Title rtsp://192.168.1.238:8086
04-09 11:09:50.018: D/VLC/MediaItem(2184): Artist Unknown Artist
04-09 11:09:50.018: D/VLC(2184): main demux meta: looking for meta fetcher