在我们项目有一个这样的一个需求,要将大文件上传到服务器,其间要考虑多浏览器(ie,Safari等)和多设备(pc,ipad)或者是ios等,传上去之后要将文件转换为指定的格式,比如说:将mp4转换为flv,将pdf转换为jpg等格式,由于考虑到多浏览器多设备在上传的时候有些棘手,现在公司拿不出一个比较好的方案来处理这个事情,个人愚见C#目前没有能力处理这种情况,而且上传之后还要转码,根据我对C#转码程序的监测,在转码时内存占用特高, 在转码完成之后我都GC了,但是都没啥作用,想问牛人是不是可以时时释放内存...... 求代码,....
文件上传会按照文件的原始数据传输(RAW DATA),在任何平台下都是通用的,不知道你提到的在多浏览器下的棘手问题是什么?
转码代码占用内存较高以及不能释放内存的问题,一是确定转码代码本身的实现是否有问题;二是确定调用转码代码的方式是否正确。
由于转码代码不是标准库,因此你应该向开发此转码库的厂商咨询。
多浏览器上传我本来是想用flash的,但是像苹果等不支持,如果这样的话我将要开会多种方案来处理这个事...
@objectboy: 文件上传可以使用HTML+JS来实现。
你的侧重点是想问多浏览器上传,还是是不是可以实时释放内存
其实现在两个问题都是很棘手,嘻嘻 ,不过比起上传来说编码是最痛苦的 ,求解...
不知道 多浏览器和多设备,视频转码 这个需求是谁提出来?
现在浏览器的安全性越来越高,否则就会漏洞百出,所以要开发一个功能强大的上传组件是一定要用各种插件帮助。例如 flash,Silverlight,ActiveX。
至于mp4转换为flv,这个用C#调用第三方 ffmpeg 来实现,而且 ffmpeg 是开源。但也不一定保证所有的 MP4文件都可以通过ffmpeg 转换成 flv,其实这个可以先让用户自己转换好再上传。
公司领导都是苹果迷,ipad迷,一定要在这些设备上成功他们才能说通过,转码的话是可以实现,只是在转码时内存占用高,这个问题实在太困恼了..像您所说的要求用户转码完成之后再上传这样好像不太现实,因为转码的格式有很多种,比如将mp4转化为flv,将mvm转化为jpg等,如果是jpg的话根本就没法上传了(往往转化为jpg的话会有很多张),,,这类需求确实有点蛋疼
@objectboy: 你的视频转换完全是用 C#写的吗。其实服务器同时开5-10个线程来调用 ffmpeg 转换是完全没问题的。
@geass..: 是的,我现在的视频转码完全都是用C# 写的, 您所说的在服务器开5-10个线程是将文件分块,然后在每个文件块占用一个线程进行转码是吗?
@objectboy: 1一个线程转换一个文件,5个线程就是同时转换5个不同的视频文件
浏览器上次就用js来实现,这样就能跨设备、跨浏览器了
把转码代码放上来看看吧
我倒是想看下你的 JS 上传文件的代码怎么写。不会就一个 <input type="file" /> 控件,把整个文件一次 POST 提交到 服务器 就完了吧。万一临时断网了,又要重新 整个上传一次。
学习...
学习
http://www.51aspx.com/CodeFile/Media2Flv/App-Code/PublicMethod.cs.html
这地址就是做的上传视频,图片什么的以后,转码的工具和dome,我也是用的这个办法,可以值得一试