首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我使用此代码在下载过程中播放视频,但当我尝试播放时,video_view无法播放视频

问题描述:我使用此代码在下载过程中播放视频,但当我尝试播放时,video_view无法播放视频。

回答:

这个问题涉及到在下载过程中播放视频的情况,可能是由于视频文件还未完全下载完成导致无法播放。在下载过程中直接播放视频是一种较为复杂的操作,需要确保视频文件已经完全下载完成后再进行播放。

解决这个问题的方法有两种:

  1. 下载完成后再播放:在下载过程中,将视频文件下载到本地存储中,等待下载完成后再进行播放。可以使用Android中的DownloadManager来进行文件下载,下载完成后再使用video_view进行播放。具体实现步骤如下:
  • 使用DownloadManager下载视频文件,设置下载完成后的存储路径。
  • 监听下载完成的广播,当下载完成后,获取下载的文件路径。
  • 使用video_view设置视频路径,并进行播放。

示例代码如下:

代码语言:java
复制

// 下载视频文件

DownloadManager.Request request = new DownloadManager.Request(Uri.parse("视频文件的URL"));

request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "video.mp4");

DownloadManager downloadManager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);

long downloadId = downloadManager.enqueue(request);

// 监听下载完成的广播

BroadcastReceiver receiver = new BroadcastReceiver() {

代码语言:txt
复制
   @Override
代码语言:txt
复制
   public void onReceive(Context context, Intent intent) {
代码语言:txt
复制
       long id = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1);
代码语言:txt
复制
       if (id == downloadId) {
代码语言:txt
复制
           // 下载完成,获取下载的文件路径
代码语言:txt
复制
           DownloadManager.Query query = new DownloadManager.Query();
代码语言:txt
复制
           query.setFilterById(downloadId);
代码语言:txt
复制
           Cursor cursor = downloadManager.query(query);
代码语言:txt
复制
           if (cursor.moveToFirst()) {
代码语言:txt
复制
               String filePath = cursor.getString(cursor.getColumnIndex(DownloadManager.COLUMN_LOCAL_URI));
代码语言:txt
复制
               // 使用video_view设置视频路径,并进行播放
代码语言:txt
复制
               video_view.setVideoPath(filePath);
代码语言:txt
复制
               video_view.start();
代码语言:txt
复制
           }
代码语言:txt
复制
           cursor.close();
代码语言:txt
复制
       }
代码语言:txt
复制
   }

};

// 注册广播接收器

registerReceiver(receiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));

代码语言:txt
复制
  1. 边下载边播放:如果需要在下载过程中边下载边播放视频,可以使用流媒体技术来实现。流媒体技术可以在视频文件还未完全下载完成时就开始播放已下载的部分内容。可以使用Android中的MediaPlayer配合HttpURLConnection来实现流媒体播放。具体实现步骤如下:
  • 使用HttpURLConnection请求视频文件的URL,并设置请求头Range字段,指定下载的起始位置。
  • 获取到视频文件的输入流后,使用MediaPlayer进行播放。

示例代码如下:

代码语言:java
复制

// 请求视频文件

URL url = new URL("视频文件的URL");

HttpURLConnection connection = (HttpURLConnection) url.openConnection();

connection.setRequestProperty("Range", "bytes=0-");

// 获取视频文件的输入流

InputStream inputStream = connection.getInputStream();

// 使用MediaPlayer进行播放

MediaPlayer mediaPlayer = new MediaPlayer();

mediaPlayer.setDataSource(inputStream.getFD());

mediaPlayer.prepare();

mediaPlayer.start();

代码语言:txt
复制

以上是两种解决在下载过程中播放视频的方法,具体选择哪种方法取决于你的需求和场景。另外,为了提高视频播放的性能和用户体验,可以考虑使用视频流媒体服务器来存储和传输视频文件,例如腾讯云的云点播服务(https://cloud.tencent.com/product/vod)可以满足这个需求。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

LinkedIn:用数据提高视频性能

播放期间捕获数据 我们的系统捕获反应视频播放过程中如何执行的大量数据。...急切加载DOM中的所有视频 LinkedIn,我们已经尝试了预先加载视频的和延迟加载视频。预先加载视频视频进入DOM后立即开始下载视频。...乍一看,这个实验是成功的,因为它减少了PTTS,意味着视频开始播放的时间更短了。然而,当我们仔细研究指标,我们发现了一些有趣的结果。...鉴于地铁的互联网连接较弱,会员加载内容方面已经面临滞后,更不用说视频资产了。急切加载的情况下,我们不仅在视口中下载内容,我们还尝试幕后加载视频。...它通过视口外部加载视频来完成操作,只有视口中的视频成功加载后才能这样做。

62410

android多媒体类VideoView使用方法详解

一、概述 VideoView类将视频的显示和控制集于一身,我们可以借助它完成一个简易的视频播放器。VideoView和MediaPlayer也比较相似。...步骤: 1.指定视频文件的路径, 2.接下来调用start()方法就可以开始播放视频,pause()方法就会暂停播放,resume()方法就会重新播放 注:获取视频文件也需要运行时权限,所有相关逻辑也需要写...最后不要忘记在AndroidManifest.xml文件中声明用到的权限 下面是一个比较简单的播放、暂停、重新播放的小demo 一、xml文件中的代码 <?...PackageManager.PERMISSION_GRANTED) { initVideoPath(); } else { Toast.makeText(this, "拒绝权限将无法使用程序...,如果使用它,编写一个功能十分强大的视频播放器是不太现实的。

65551

如何利用免版税视频流技术构建优质视频体验?

互联网基础应当建立不受专利限制的开放技术之上,当我互联网上观看视频所面对的情形却截然不同。...也许是的,当我们谈起在线视频流媒体生态系统需要知道,其背后不仅仅只是一个视频编解码器。 目的 认为无版权视频技术的挑战是基于“开源”的视频技术为尽可能多的消费者建立一个优质的视频流访问体验。...测试过程可在浏览器中自行运作,方法是不同的浏览器中使用链接,相关源代码可以Github上被找到。...,MP4仍可以在任何设备上播放开源视频编解码器却无法iOS平台上成功播放,这意味着全世界最受欢迎的移动终端设备不支持开源视频编解码器。...2019年,在为FOSDEM准备演讲再次拒绝了SASH,原因是的研究里缺乏完全开源的ABR技术。从那以后,花时间回顾了4年前做出的决定并尝试改进设计以满足更多实际案例的需求。

3.3K30

video标签在不同平台上的事件表现差异分析

onvolumechange script 每当音量改变(包括将音量设置为静音)时运行的脚本 onwaiting script 当媒介已停止播放打算继续播放(比如当媒介暂停已缓冲更多数据)运行脚本...测试直接使用最简单的方式,页面上添加video标签播放视频视频设置循环播放属性loop。...:一般是由于网络状况不佳,导致视频下载中断 一致 可能在play()事件触发前 play play()事件触发,状态是开始播放视频并未真正开始播放 一致 一致 waiting play()事件触发后...| 目前可以监控的事件有以下几点: 1、 视频加载时间 play事件触发时间 至 timeupdate事件第一次currentTime 属性值发生变化时,加载过程中可用suspend判断是否有手动暂停...要尽可能的实时监控视频流是否中断,目前还是尝试使用video对象的buffered属性, 因为视频断流意味着buffered缓冲区不会再发生变化。

2.5K60

video标签在不同平台上的事件表现差异分析

onvolumechange script 每当音量改变(包括将音量设置为静音)时运行的脚本 onwaiting script 当媒介已停止播放打算继续播放(比如当媒介暂停已缓冲更多数据)运行脚本...测试直接使用最简单的方式,页面上添加video标签播放视频视频设置循环播放属性loop。...:一般是由于网络状况不佳,导致视频下载中断 一致 可能在play()事件触发前 play play()事件触发,状态是开始播放视频并未真正开始播放 一致 一致 waiting play()事件触发后...| 目前可以监控的事件有以下几点: 1、 视频加载时间 play事件触发时间 至 timeupdate事件第一次currentTime 属性值发生变化时,加载过程中可用suspend判断是否有手动暂停...要尽可能的实时监控视频流是否中断,目前还是尝试使用video对象的buffered属性, 因为视频断流意味着buffered缓冲区不会再发生变化。

1.1K20

Android编程实现播放视频的方法示例

本文实例讲述了Android编程实现播放视频的方法。分享给大家供大家参考,具体如下: 播放视频文件其实并不比播放音频文件复杂,主要是使用 VideoView 类来实现的。...然后 VideoView 的下面又放置了三个按钮,分别用于控制视频播放、暂停和重新播放。...= null) { videoView.suspend(); } } } 这部分代码相信你理解起来会很轻松,因为它和前面播放音频的代码非常类似。...所 以,如果想要仅仅使用 VideoView 就编写出一个功能非常强大的视频播放器是不太现实的。...但是如果只是用于播放一些游戏的片头动画,或者某个应用的视频宣传,使用 VideoView 还 是绰绰有余的。 希望本文所述对大家Android程序设计有所帮助。

86551

Mimir:通过AI向所有人提供视频服务

Vimeo播放器包含一组非常明确的规则,用于小缓冲区的约束下下载播放视频。例如,当一个视频切片的下载时间超过8秒,就会发生下载超时错误。...下载超时惩罚:如果存在下载超时错误,那么该视频切片实际上是无法下载的,所以这个惩罚抵消了Q(),也是对消耗过多CDN成本的惩罚。 传统的 ABR 算法中,这些规则很难插入到现有的优化逻辑中。...图3所示的测试播放过程中,吞吐量(紫线)1~4 Mbps之间快速波动,像这样的快速波动高峰时段是经常发生的。Mimir始终传输720p的视频流。...第一次超时错误之后,如果不经过手动编程,它是无法降低视频质量的。 图3: 播放过程测试 图 4 所示的第二个播放过程中,吞吐量的波动较小,随后出现了一次大幅下降。...当我们为一个视频切片发送HTTP请求,总的下载时间(dT)由两部分组成:首字节时间(time-to-first-byte,TTFB)和下载时间(dt),dt由视频切片大小(size)除以吞吐量(throughout

54520

视频播放优化浅析

带着这些问题,本文尝试播放器的原理开始着手,梳理一下Android客户端上的播放架构的演进,以及播放体验的核心指标的优化上,针对不同场景所作出的各种优化。 本文目录结构: ?...虽然NuPlayer有很好的架构,他也可以通过扩展Datasource+Extrator来支持更多下载协议和封装格式,通过Decoder来扩展支持的解码格式,这些对我们都是黑盒,我们无法自定义下载协议...MediaPlayer还有一个点就是如果播放网络源视频的话,会遇到将缓存文件删除的情况,每次播放都有可能需要下载一遍视频无法做到播放完了之后,以后就播放缓存文件。...总结来说MediaPlayer的优点就是接入简单, 方便;缺点也很明显,我们无法控制播放下载流程, 比如边下边播的缓存策略;当我们想做一些自定义策略的时候往往会很困难。...三、播放链路分析 播放视频过程中,除了能成功播放视频播放过程中不卡顿外,能不能在点击视频瞬间起播,是一个在用户体验上非常重要的点。

4.2K20

ALHLS:Apple低延迟HLS技术

而当需要低延迟传送,这些传统HTTP请求的开支将成为决定“Well-Clock”延迟下限的重要条件。 Apple解决问题的新方法是,使用HTTP/2推送那些播放列表请求响应中较短的媒体“部件”。...认为通过更多的思考和设计,方案可能非常有用,特别是如果(ALHLS还有一种方法可以播放列表响应中推送CMAF流的初始化段,将会极大增加它的可用性。...而现在,生成播放列表ALHLS必须执行更多逻辑,包括某些情况下,当组件处于可被下载状态挂起连接一段时间。 在我看来,ALHLS并不是一个糟糕的规范。...而阻止播放列表请求会让情况变得更糟:测量阻塞播放列表提取的性能以及段加载无法得到准确的测量结果,也无法播放列表下载性能用作代理。...我们必须假设Apple有一种方法可以使用HTTP/2自己的设备上测量下载性能,原因如下: 1. 这是Apple实现让低延迟策略与自适应码律一起工作的唯一方式,并且...... 2.

1.3K10

LinkedIn Feed流视频自动播放架构演进

如果视频处于有声播放的状态则不适用于此项策略:当视频处于有声播放,只有当用户对视频内容表现出足够的兴趣并希望滚动视频Feed流继续播放视频,我们才会允许其在后台继续播放。...设计自动播放解决方案,我们一定要考虑处于带宽资源不佳区域的会员并对其提供特别优化,避免由于用户浏览至视频播放窗口使用大量带宽资源下载视频对有限网络资源的过度消耗。 连接类型:考虑不同的连接类型。...使用自动播放功能的情景下,我们不使用后台加载视频的策略以避免网络拥塞;相反,我们会优先下载当前处于播放窗口的视频数据以确保用户浏览至播放窗口视频自动播放的成功与及时。...视频加载策略 当我们制定视频加载策略,如果您希望确保所有用户您的网站上都拥有最佳的用户体验,那么重点关注前文所介绍的诸多影响性能的因素至关重要。...当我们在后台下载视频资源,允许播放窗口下载视频数据的可用带宽较少;除了带宽问题之外,移动设备和桌面设备上的浏览器能够并行处理的HTTP请求数量十分有限。

1.5K20

ALHLS:Apple低延迟HLS技术

而当需要低延迟传送,这些传统HTTP请求的开支将成为决定“Well-Clock”延迟下限的重要条件。 Apple解决问题的新方法是,使用HTTP/2推送那些播放列表请求响应中较短的媒体“部件”。...认为通过更多的思考和设计,方案可能非常有用,特别是如果(ALHLS还有一种方法可以播放列表响应中推送CMAF流的初始化段,将会极大增加它的可用性。...而现在,生成播放列表ALHLS必须执行更多逻辑,包括某些情况下,当组件处于可被下载状态挂起连接一段时间。 在我看来,ALHLS并不是一个糟糕的规范。...而阻止播放列表请求会让情况变得更糟:测量阻塞播放列表提取的性能以及段加载无法得到准确的测量结果,也无法播放列表下载性能用作代理。...我们必须假设Apple有一种方法可以使用HTTP/2自己的设备上测量下载性能,原因如下: 1. 这是Apple实现让低延迟策略与自适应码律一起工作的唯一方式,并且...... 2.

1.8K30

Windows平台RTSP|RTMP播放端SDK集成说明

,无需设置; NT_SP_SetUserDataCallBack:设置用户数据回调,接口需要和推送端SDK配套使用,用于返回推送端设定的实时用户数据(如时间戳、经纬度等各种扩展指令或信息),如只是单纯使用播放...播放出声音使用。...为了方便使用,有些场景下可以开启自动尝试切换开关, 打开后如果udp无法播放,sdk会自动尝试tcp, 如果tcp方式播放不了,sdk会自动尝试udp, is_auto_switch_tcp_udp:...如果设置1的话, sdk将在tcp和udp之间尝试切换播放,如果设置为0,则不尝试切换; NT_SP_SetFastStartup:设置秒开, 1为秒开, 0为不秒开,接口用于如RTMP服务器缓存GOP...,酌情使用; NT_SP_SetLowLatencyMode:设置低延时播放模式,默认是正常播放模式,mode: 1为低延时模式, 0为正常模式,低延迟模式下,可能会导致音视频不同步,或视频帧不均匀;

93500

AVKit框架详细解析(二) —— 基于视频播放器的画中画实现(一)

如果您违反规则,App Review 将不会批准您的应用! 构建并运行。 打开视频并点击按钮以启动画中画。 太棒了! PiP 开始自定义控制器中播放您还没有完成。...目前,当视频画中画窗口中播放,示例应用程序会显示一条消息。您可以使用画中画控制器代理中的方法来控制画中画播放开始和结束发生的情况。...但是,如果您构建并运行并尝试操作,您将看到画中画窗口立即关闭。 这是因为您的自定义播放器对象被释放,这是唯一保留画中画控制器的东西,因此也被释放。...---- Restoring the Player Controller 现在,当您开始以画中画模式播放视频,您可以完全关闭窗口,但无法返回全屏。...对于这两种类型的播放器控制器,当用户画中画窗口中点击Restore,代理扩展会调用方法。

2.7K10

Qzone视频下载如何做到多快好省?

这种方式非常简单,其中最大的问题就是整个过程中的数据流完全由MediaPlayer控制,我们无法控制下载播放的过程,也就导致我们没有办法提高成功率,优化用户体验。...快 国外SmartBear的研究表明,57%的用户3秒没有加载完网页就会放弃。视频播放上,加快视频的加载速度,减少播放过程中的卡顿,对提高用户观看视频的体验有极大的帮助。...视频数据的预加载不能跟当前播放视频下载带宽,因此我们选择以当前播放视频播放进度和数据缓存量为维度,当两者同时达到一个阀值开始下载下一个视频的数据。...最初的缓存方案是针对单个视频按照顺序缓存,这样实现简单,存在的问题就是无法对于播放空洞(非顺序播放场景,例如拖动、续播等)进行缓存,这降低了视频的缓存率和缓存命中率,增加了带宽成本和视频的缓冲时长。...下层代理在下载数据,为了减少对于别的业务影响,不会占用全部的带宽,当发生频繁的网络切换下载代理会主动突破速度的限制,尽可能快的在网络情况良好时下载数据,给之后的播放留下足够的数据Buffer,保证整体播放的流畅性

1.1K100

新版谷歌Chrome播放海康大华RTSP视频流解决方案

实际使用时,由于需要在服务器端搭建一个始终高负荷运转的视频转码转流服务,CPU和内存消耗大,带宽占用大,长期使用成本很高,如果摄像头路数比较多或在线播放视频的终端比较多,服务器的压力就会很大。...终端想要看到多路、高分辨率或H.265视频方案实际使用过程中常出现播放卡顿、花屏,缺陷就越发明显。...最主要的问题还是受限于WASM的缺陷,只能软解码,无法利用终端电脑的硬件加速能力,而且不支持多线程,这就导致播放多路RTSP流就非常吃力了,面对高分辨率和H.265的视频,同样效果不好,而且大量占用终端电脑的...方案如果能解决高版本的Chrome等浏览器兼容使用,无疑这是当下能够实现低延迟多路稳定播放的最佳技术方案,满足甲方客户硬性播放指标也无压力。...、移动端可直接采用VLC开放源代码的APP来使用,无需单独开发,投入少见效快; 7、技术方案可实现在原有技术体系下的平滑升级,降低了方案大改造带来的技术路线和延期交付风险,可节省大量研发成本。

2.8K00

Android TV 开发之 TV视频播放

不够完整,而有一些项目还要你给积分才能去下载看,不够开源,痛定思痛,决定自己弄一个开源的项目出来,自己来维护,学习中开发,也有可能TV这方面的文章还会写,也有可能只写这一篇,接下来我们从创建TV项目开始...本地 和 网络 2.播放视频的的停止播放、继续播放、重新播放 3.播放视频的时间和进度计算 4.播放时候按遥控器左右键,前进 后退 先想清楚这些问题,才能使编码过程中变得有条理 视频来源...本地: 我们可以valuse文件夹下面创建一个raw文件夹,在里面放一个mp4短视频文件,(PS:至于真机存储里面放一个视频,你只要播放路径指定这个视频所在地址,然后再加上文件的读写权限,因为不是这么实现的...String hostname, SSLSession session) { return true; } } } 这个类主要是针对于 VideoView 无法播放视频...,类似于 视频无法播放 这样的错误提示 videoView.setOnErrorListener(new MediaPlayer.OnErrorListener() {

6.3K71

播放量突破 10 亿,Qzone 视频下载如何做到多快好省?

这种方式非常简单,其中最大的问题就是整个过程中的数据流完全由MediaPlayer控制,我们无法控制下载播放的过程,也就导致我们没有办法提高成功率,优化用户体验。...快 国外SmartBear的研究表明,57%的用户3秒没有加载完网页就会放弃。视频播放上,加快视频的加载速度,减少播放过程中的卡顿,对提高用户观看视频的体验有极大的帮助。...视频数据的预加载不能跟当前播放视频下载带宽,因此我们选择以当前播放视频播放进度和数据缓存量为维度,当两者同时达到一个阀值开始下载下一个视频的数据。...最初的缓存方案是针对单个视频按照顺序缓存,这样实现简单,存在的问题就是无法对于播放空洞(非顺序播放场景,例如拖动、续播等)进行缓存,这降低了视频的缓存率和缓存命中率,增加了带宽成本和视频的缓冲时长。...下层代理在下载数据,为了减少对于别的业务影响,不会占用全部的带宽,当发生频繁的网络切换下载代理会主动突破速度的限制,尽可能快的在网络情况良好时下载数据,给之后的播放留下足够的数据Buffer,保证整体播放的流畅性

1.7K10

Chrome、Firefox中低延迟播放海康、大华RTSP完全解决方案!

这几年国内外的技术专家经过不断研究总结,形成一些闭源或开源、收费或免费的方案,多数时候无法完全满足客户的实际需求,要么兼容性和稳定性不好,要么播放延迟高,首屏画面显示慢;尤其是播放高分辨率的RTSP流...二、现有方案 浏览器中实现播放RTSP实时视频流,大体上有如下几个方案: 1.浏览器插件方案 方案主要适用于IE及Chrome 45以下版本的浏览器,2015年前是绝对主流的选择。...况且如果有多路视频,服务器端转码和转流对CPU、内存、网络带宽的压力大幅度增加,长期使用综合成本很高,对高分辨率的视频播放经常出现花屏、卡顿现象。...方案不支持IE浏览器,最大的问题是画面延迟达数秒,首屏内容显示慢,也无法利用本机硬件加速实现解码和渲染播放,CPU占用高,播放花屏、卡顿现象,体验比较差。另外无法实现本地自动截图、录像等操作。...其实所谓的免插件实现方案中,也是需要浏览器从服务器端下载JS版播放器的,而外接版只不过下载的是本地版播放器,只需要保证下载到本地的播放器程序是安全的即可,必要的话可通过开放播放器源代码来打消客户对安全的顾虑

2.3K00

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券