我正在编写一个使用流媒体播放youtube视频的应用程序.
第一种方法:
我正在使用GData API获取视频的RTSP URL.以下是播放RTSP网址的代码.
VideoView mVideoView = new VideoView(this);
setContentView(mVideoView);
mVideoView.setVideoURI(Uri.parse("rtsp://rtsp2.youtube.com/CiILENy73wIaGQkDwpjrUxOWQBMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp"));
mVideoView.start();
Run Code Online (Sandbox Code Playgroud)
但它在G1设备和模拟器上都会抛出错误(模拟器根据邮件列表有一些防火墙问题)这是错误信息
ERROR/PlayerDriver(35):命令PLAYER_INIT已完成,错误或信息PVMFFailure
第二种方法:
从http://www.youtube.com/get_video?v=&t = <>&<>获取3gp文件路径的黑客方法 .获取文件路径后,我可以调用setVideoURI,它可以正常播放.但这是达到要求的黑客方式.我也检查过Youtube应用程序,它也可以通过hack方式播放youtube网址.(使用logcat检查)
我尝试从VideoView更改为MediaPlayer,但没有更改错误.
有一种"干净"的方式吗?
请让我知道你的想法.
youtube streaming android android-mediaplayer android-videoview
我想知道我是否可以通过全屏视频播放视频?
我经常搜索并尝试了很多方法,例如:
在清单中应用主题:
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
Run Code Online (Sandbox Code Playgroud)
但这并不会强制视频全屏显示.
申请活动本身:
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
Run Code Online (Sandbox Code Playgroud)
也不会强制视频全屏显示.
强制视频全屏显示的唯一方法是:
<VideoView android:id="@+id/myvideoview"
android:layout_width="fill_parent"
android:layout_alignParentRight="true"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:layout_height="fill_parent">
</VideoView>
Run Code Online (Sandbox Code Playgroud)
这样它就会产生全屏视频,但它会延伸视频本身(拉长视频),
我没有将这个不正确的解决方案应用到我的视频中,所以有没有办法在不延长视频的情况下进行操作?
视频课程:
public class Video extends Activity {
private VideoView myvid;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
myvid = (VideoView) findViewById(R.id.myvideoview);
myvid.setVideoURI(Uri.parse("android.resource://" + getPackageName()
+"/"+R.raw.video_1));
myvid.setMediaController(new MediaController(this));
myvid.requestFocus();
myvid.start();
}
}
Run Code Online (Sandbox Code Playgroud)
main.xml中:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<VideoView
android:id="@+id/myvideoview"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud) 使用VideoView可以为Android设置比例因子吗?默认情况下,视频视图会自行调整大小以适应视频的编码分辨率.我可以强制Android将视频渲染为更小或更大的矩形吗?
我们可以在另一个大视图上放置一个小视图吗?例如,我有一个在后台播放文件的VideoView.在这个,在中间/角落的某个地方,我想放置另一个ImageView.
但是在线性/相对布局中,视图可以一个接一个地放置,也可以相对于彼此放置,建议不要使用AbsoluteLayout.那我该怎么办?
对于Android中的视频视图,我添加了一些媒体播放器监听器,如onPreparedListener,onCompletionListener等.但是当视频完成后,onCompletionListener就不会被调用.我们还观察到onCompletionListener会被调用,有时则不会.
此问题仅适用于三星Galaxy平板电脑操作系统版本4.1.2.并且相同的代码在另一台三星设备上正常工作,如S2,S3,S4等.
有人有想法吗?
android samsung-mobile android-videoview android-4.1-jelly-bean
在我的应用程序中,通过传递所选视频的文件路径,在不同活动的VideoView中显示来自sdcard文件夹的视频或来自Video intent的新视频.
现在的问题是,我已经在我的2个设备中测试了这个应用程序,LG Optimus Black and LG Optimus Me and it works如魅力没有问题没有力关闭.
现在当我测试这个应用程序时,Samsung Fascinate 2.1 the video view shows the message "Can't Play Video"无论我选择现有视频还是采用新视频.
请记住,该应用程序与上述2个设备正常工作.
在ShowVideo活动中,我有按钮上传视频,当我收到消息"无法播放视频"时,我能够从同一路径拍摄视频并上传它并可以在服务器端检查该视频,但视频视图没有播放那个视频.
So, the Video Path of the SDCard is not the problem thats for sure.
also the Video are of .3gp or .mp4 format only so the format is also supported by android
Run Code Online (Sandbox Code Playgroud)
.
我的问题是:
1)当出现"无法播放视频"消息时?2)有什么解决方案?3)我的申请中可能出现的错误是什么?
这是logcat输出,当我收到该消息但没有看到任何错误/异常.
I/ActivityManager( 2227): Starting activity: Intent { cmp=com.zoodigapp.zoodig/com.zoodigapp.media.ShowVideo (has extras) }
V/SettingsProvider( 2227): system <- …Run Code Online (Sandbox Code Playgroud) 我正试图寻找Android视频中的特定位置,因为它在行为中显示的不一致性而完全陷入困境.这是我做过的事情清单
- VideoView.Seekto一个视频转到5:19,一个视频转到5:17,另一个视频转到另一个视频5:32(326000 ms)!
- 由于VideoView不支持onSeekListener,我修改了源VideoView并添加了对它的支持.然而它并没有暂停并开始从我想要的地方寻求 - 总是有一个滞后!onSeekListener会在我希望停止之前的6秒内立即调用.在许多情况下,搜索栏显示正确的时间并突然跳回几秒钟,即使我从onSeekCompleteListener调用video.start
为什么这么不一致?在videoview中有没有明确的方法可以在几毫秒内找到你想去的地方?我知道我应该使用MediaPLayer + Surface,但由于VideoView只是两个包装器,我在源头修改它但无济于事.
我知道这一点:http://code.google.com/p/android/issues/detail?id = 9135 但是有什么方法可以绕过这个并且有一个明确的方法
1.)以毫秒为单位寻找确切的时间
2.)在确切的时间暂停和恢复?
我从文件路径设置VideoView的视频时遇到了不一致的经历.
VideoView myVideoView = findViewById(R.id.videoView);
...
myVideoView.setVideoPath(videoFilename);
...
myVideoView.start();
Run Code Online (Sandbox Code Playgroud)
videoFilename是我的缓存目录中视频的绝对路径:
String videoFilename = new File(context.getCacheDir(), "myawesomevideo.mp4").getAbsolutePath();
Run Code Online (Sandbox Code Playgroud)
在Android SDK> = 16(Jelly Bean)中,这很好用,我的精彩视频播放.在Android 4.0.4(SDK = 15)中,当调用myVideoView.start()时,MediaPlayer会中断.
错误是永远无益的:
error (1, -2147483648)
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么?直接从我的包资产(res/raw)或互联网(http://something.com/myawesomeinternetvideo.mp4)加载文件,但我无法弄清楚如何从缓存目录中读取文件!
我正在开发一个VideoPlayer.我将已URI启动的意图转换为字符串,它给了我content://media/external......但我需要得到真正的道路.
例如: /storage/extSdcard.....
我该怎么做呢?
如果需要,这是我的代码:
videoURI = getIntent().getData();
vv.setVideoURI(videoURI);
videoName = videoURI.toString();
tvTitle.setText(videoName);
Run Code Online (Sandbox Code Playgroud) 我正在使用VideoView在我的应用程序中播放视频,但我想隐藏其中的控件.我怎样才能做到这一点?谢谢.