播放assets文件里视频文件的问题

本文介绍了一种在Android应用中播放项目工程内部视频文件的有效方法。关键步骤包括将视频文件置于res/raw目录下,并通过特定的资源引用方式在代码中调用。文章提供了具体的实现代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

今天做了一个功能,就是播放项目工程里面的视频文件,不是播放SD卡视频文件。

我开始尝试把视频文件放到 assets文件目录下。

因为之前写webview加载assets文件夹时,是这样写的:

webView = new WebView(this);

 

webView.loadUrl(file:///android_asset/sample3_8.html);

 

 

依次类推,我尝试将视频video.3gp 放到assets目录下,然后写了下面的代码:

Intent it = new Intent(Intent.ACTION_VIEW);

 

Uri uri = Uri.parse(name);

 

it.setDataAndType(uri ,"video/3gp);

 

startActivity(it);

 

启动了android系统播放器,提示了一些信息(没有记录下来),大概意思就是无法播放这个路径下面的文件/无法找到这个路径文件。

google了一下,中文网页上几乎没有解决办法的说明,按照惯例,去 http://stackoverflow.com 搜索答案,找到了这个帖子:

I want to play a video from my assets or raw folder in my app inANDROID

播放Android项目工程里的视频文件最终解决办法是:

1. 把视频文件放到项目工程的 res/raw 文件下。

2.视频文件必须是Android支持视频格式(3gp,wmv,mp4),并且命名必须是小写字母,数据,下划线,例如:my_video_file.mp4

3. 当你是在代码里面引用这个资源文件时,你必须使用Rstatics类,同时去掉文件的后缀:R.raw.my_video_file

4. 这个Activity class 应该有一个 helper 方法getPackageName(),这样便于你在你的代码里面构造正确的URI。

VideoView vv = (VideoView)this.findViewById(R.id.videoView)

 

String uri = "android.resource://" + getPackageName() + "/" + R.raw.my_video_file;

 

vv.setVideoURI(Uri.parse(uri));

 

vv.start();

在iOS系统中,如果你想要加载并播放`StreamingAssets`文件夹中的视频文件,可以按照以下步骤操作: 1. **添加视频到项目**:首先,将你需要播放视频文件放置在项目中的`Main Bundle`下的`Resources` -> `StreamingAssets` 文件夹中。 2. **导入AVFoundation框架**:确保已在你的Swift或Objective-C代码中导入`AVFoundation`框架,因为它包含了处理音频和视频播放的类。 ```swift import AVFoundation ``` 或者 ```objective-c #import <AVFoundation/AVFoundation.h> ``` 3. **创建AVPlayerItem**: - 使用`URL`获取视频文件路径,注意要转换为本地URL(对于`StreamingAssets`通常不需要转换): ```swift let videoURL = Bundle.main.url(forResource: "your_video_name", withExtension: "mp4")! ``` 或者 ```objective-c NSURL *videoURL = [[NSBundle mainBundle] URLForResource:@"your_video_name" withExtension:@"mp4"]; ``` 4. **创建AVPlayer**: - 使用`AVPlayerItem`初始化`AVPlayer`: ```swift let player = AVPlayer(playerItem: AVPlayerItem(url: videoURL)) ``` 或 ```objective-c AVPlayer *player = [AVPlayer playerWithUrl:videoURL]; ``` 5. **设置播放**: - 设置需要显示的`AVPlayerViewController`或者直接播放: ```swift let playerViewController = AVPlayerViewController() playerViewController.player = player present(playerViewController, animated: true) player.play() ``` 或者 ```objective-c // 如果你在UIViewController中播放 [self presentViewController:playerViewController animated:YES completion:nil]; [player play]; ``` 6. **错误处理**: 添加适当的错误处理机制,比如`observeValue(forKeyPath: options: context:)`方法来监听并处理播放过程中可能出现的问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值