【问题标题】:HTML5: Play local video from iPad camera rollHTML5:从 iPad 相机胶卷播放本地视频
【发布时间】:2012-12-23 16:42:43
【问题描述】:

我找到了这个 SO 帖子,但它已经过时了:Play a local video from iPad in an HTML 5 webpage

iOS 6 提供了访问相机胶卷以上传文件(例如,从 iPad 相机捕获的 .mov 文件)的功能。我不确定该归功于谁,但我发现了一个 jsFiddle,它使用输入字段来获取本地文件并将其加载到视频元素中进行播放。这适用于 .mov 文件的桌面接受,但从接受属性中删除“video/*”允许输入文件从本地选择 .mov,并在 JS 中强制 file.type 为“video/mp4”允许要在视频元素中播放的 .mov。

参见上面引用的 jsFiddle:http://jsfiddle.net/dsbonev/cCCZ2/embedded/result,js,html,css/presentation/

但是,当涉及到在移动 safari 中工作时,文件仍然无法加载,即使您在文件输入字段中看到预览缩略图和文件名。我添加了一个链接到将“?dl=1”连接到 blob: url 的页面,但单击它只会导致 mSafari 显示“无效地址”,即使指向托管 .mov 的链接在 quicktime 中播放。最终,我希望能够从相机胶卷中选择一个视频,在 html 视频播放器中播放它,并且(理想情况下)将该文件的源路径存储在数据库中以供以后访问。我错过了什么?

在这里查看我编辑的 jsFiddle 版本: http://lt.umn.edu/email/

JS:

playSelectedFile = function playSelectedFileInit(event) {
    var file = this.files[0];
    //var type = file.type;
    var type = "video/mp4";
    var videoNode = document.querySelector('video');
    var canPlay = videoNode.canPlayType(type);
    canPlay = (canPlay === '' ? 'no' : canPlay);

    var message = 'Can play type "' + type + '": ' + canPlay;
    var isError = canPlay === 'no';
    //displayMessage(message, isError);

    if (isError) {
        return;
    }

    var fileURL = URL.createObjectURL(file);

    var tempURL = fileURL+'?dl=1';
    var tempText = '<a href="'+tempURL+'?dl=1">'+tempURL+'?dl=1</a>';
    displayMessage(tempText, isError);

    videoNode.src = fileURL;
}

【问题讨论】:

  • 你找到解决方案了吗?
  • 没有。然而,iOS8 中的新功能似乎确实可能允许某种形式的解决方案。我们会看到的!

标签: javascript html ipad video ios6


【解决方案1】:

使用 querySelector 时使用 var videoNode = document.querySelector('video')[0];

编辑:

否则尝试删除视频节点并使用正确的 src 重新创建它。我有同样的问题,电影无法播放。我想更改 src 不会在任何地方都有效..

【讨论】:

  • 大卫,感谢您的回复!我尝试按照您的建议使用 [0] ,但这并没有真正影响 iOS 播放。它还导致 JS 无法在桌面上工作。当您说尝试删除视频节点并使用正确的 src 再次创建它时,您在 EDIT 中指的是什么?如果我使用的不是正确的来源,那么正确的来源在哪里?
  • 来源可能是正确的。我不知道它是否会起作用,但我注意到在 iOS 上更改 html5 视频的 src 不起作用,您必须删除整个标签并使用正确的 src 即时创建它。然后在其上添加一个播放以自动启动视频。
  • 我按照你的建议做了,并删除了当前的视频元素,然后用包含最新路径的 src 属性的新视频元素替换它,但它仍然失败。 The code that now works as you suggested is here 如果您查看源代码。我想你肯定有解决办法!
  • 有趣的是,caniuse.com/#search=createObjectURL 表明当前版本的 iOS Safari(我有 6.1.3)支持 Blob,所以理论上这应该可以工作......除非 iOS Safari 没有生成可以指向的 blob源文件正确吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多