我正在尝试在Android模拟器中播放视频我在我的资源文件夹中的视频以及原始文件夹但是在做了一些研究后仍然无法在我的模拟器中播放视频我正在使用android 2.1我的视频格式是mp4所以我不要认为这应该是一个问题任何人都可以给我一个示例代码,以便我可以了解更多?
问题是我需要显示视频的VideoView只会使用URI或文件路径指向视频.
如果我将视频保存在raw或assets文件夹中,我只能获得输入流或文件描述符,似乎没有什么可用于初始化VideoView.
更新
我仔细研究了MediaPlayer示例,并尝试使用FileDescriptor启动MediaPlayer到资源文件,如下面的代码所示:
SurfaceView videoView = (SurfaceView) findViewById(gettingStarted)
SurfaceHolder holder = videoView.getHolder();
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
final MediaPlayer player = new MediaPlayer();
player.setDisplay(holder);
player.setDataSource(getAssets().openFd(fileName).getFileDescriptor());
player.prepareAsync();
player.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
}
});
Run Code Online (Sandbox Code Playgroud)
现在我得到以下异常:
java.io.FileNotFoundException: This file can not be opened as a file descriptor; it is probably compressed
Run Code Online (Sandbox Code Playgroud)
似乎没有其他方法可以在启动时将文件复制到SD卡,这似乎浪费时间和内存.
从理论上讲,IOS和ANDROID都会播放h.264文件,但我无法找出对它们进行编码的设置,因此它们实际上可以跨平台工作.有人知道如何使用一个文件对Android和IOS进行编码吗?
ps我知道关于html5视频和后备源的所有内容,我只是不想为每个下来的派克设备编码和托管新视频.
在我的应用程序中,通过传递所选视频的文件路径,在不同活动的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) 我对andriod app的想法有问题.我想在其中播放视频,但我不想从interenet下载它.在其他情况下,我想在设备上使用它.
所以,人是从Android市场下载它,可以播放视频而无需下载.我已经想出了一些解决方案,但没有一个是好的.
第一个是将它添加到应用程序资源,但你不能在那里有视频.
第二个是在安装期间添加或更好地创建文件夹(更多specyfic first onCreate方法),然后从app复制视频.嗯,没有那么糟糕的选择(你可以例如下载一次只有网络使用后台服务的视频)但我不知道如何删除卸载,因为你的应用程序不知道什么时候它是unistalled.
那么有人知道或有任何想法吗?