我正在尝试在react native中实现一些东西: 我有一个视频URL,我在React Native Video组件中显示该视频,我如何提供一个按钮以在移动设备中下载相同的视频,但不应出现在图库中。 另外,如果视频是私有的,可以在其中传递标题,又如何传递?
答案 0 :(得分:2)
如何下载任何文件?
要下载视频,img之类的任何文件,首先需要获得读写手机内部/外部存储的权限,然后需要一个可以从服务器将文件下载到手机本地文件夹的本机模块。
有两个最知名的文件下载库
现在,您可以按照他们的文档,将视频,图像或任何您想要的文件下载到用户的手机上。
现在让我们进入您不希望通过图库向用户显示的部分。
为此,我建议使用react-native-fetchblob
,因为它具有内置的意图操作和视图。
您可以下载具有任何随机名称的视频文件,例如1234CACHE
,具有任何随机名称而没有扩展名,特别是不要给它扩展名,例如video.mp4,因为图库会检测到.mp4文件,所以不要给它任何扩展名,并且文件会被赢得在任何画廊都没有。
现在如何隐藏文件? react-native-fetch-blob允许我们将文件保存到不公开的目录中,这意味着用户无法访问这些目录,并且这些目录仅用于保存App的数据,因此您可以将视频文件保存在其中一个目录中。 / p>
现在,完成下载后,您可以使用Intent打开文件。
例如:-
const VIDEO_PATH = res.path() //the path where your downloaded video is saved, you will actually receive this in the response of download function.
const MIME_TYPE = "video/mp4"
//Now finally call the intent with video mime so the video will be opened in user's media player, or if you want your own media player you can use any library for that.
android.actionViewIntent(VIDEO_PATH , MIME_TYPE)
注意:仅当您具有视频文件的路径URL时,才可以下载视频,不得将Web URL与视频文件URL混合使用,视频文件URL的文件名和视频扩展名应位于URL的末尾。例如https://someURL.com/video.mp4
,这是视频文件的网址,但是如果您有类似https://SomeURL.com/video
的东西,则它不是视频文件,而是显示该视频文件的网页,因此您无法从网页上真正下载该特定视频!
答案 1 :(得分:1)
可以有多种方法。
希望您对视频播放器有所了解,下载选项取决于您的服务器和站点。
您可以更改已下载视频的文件扩展名,例如my_video.notMP4。因此该视频将不会显示在图库中,因为现在尚未将其检测为视频文件。
隐藏下载视频文件的文件夹,在该文件夹名称可以在Android / Unix中隐藏该文件夹之前添加一个点(。),并且视频将从Gallery隐藏。例如.my_Video_folder
为了提高安全性,您可以加密视频并将其制作为自定义块,只有您的播放器才能播放。但是您可能需要制作或找到这样的视频播放器。
我无法理解标题部分,请解释。