【问题标题】:How Can I Send Video of a large size to Server?如何将大尺寸的视频发送到服务器?
【发布时间】:2016-03-27 20:47:25
【问题描述】:

我找到了这个代码HttpURLConnection to Send image , audio and video files with parameter may (String or Json String) Android,它与视频、图像和音频完美配合。但是当我发送一个大视频时,我得到了这个错误:

Throwing OutOfMemoryError "Failed to allocate a 28 byte allocation with 0 free bytes and -1856B until OOM" (recursive case)

【问题讨论】:

    标签: android large-files large-file-upload


    【解决方案1】:

    视频太大而无法同时在 RAM 中使用,因此您需要缩小文件或分段处理,在这种情况下,您的服务器需要配置为接受块流数据也是如此。来自HttpURLConnection 文档:

    要将数据上传到 Web 服务器,请配置输出连接 使用 setDoOutput(true)。为了获得最佳性能,您应该调用 setFixedLengthStreamingMode(int) 当身体长度已知时 如果不是,则提前或 setChunkedStreamingMode(int)。否则 HttpURLConnection 将被强制缓冲完整的请求体 在传输之前在内存中,浪费(并且可能耗尽) 堆和增加延迟。

    所以设置setChunkedStreamingMode() 可能会解决您的问题。

    你也可以看看这个问题:Upload large file in Android without outofmemory error

    【讨论】:

    • 我设置了 conn.setChunkedStreamingMode(1024);并且现在工作出色,所以您认为需要添加更多内容,因为我是开发人员中的新手,所以我不太了解您是否可以写一个示例无论如何我会接受这个答案,因为是正确的
    • 我不确定你在问什么。
    • 我已经创建了一个应用程序录制视频,当我单击停止视频保存并发送到服务器后将视频保存在 sdcard 中我想从 sdcard 中删除视频
    • 您只需从视频的路径创建一个文件,然后在该文件上调用delete()。有关更多信息,请参阅文档:developer.android.com/reference/java/io/File.html#delete()
    • 是的,谢谢你,我知道我只是告诉你我想做什么,对于发送的大视频,我使用你告诉我的链接,与我发布的链接相同并且知道作品100% 非常感谢阿尔巴尼亚的尊重!!!
    猜你喜欢
    • 2017-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-27
    相关资源
    最近更新 更多