首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何拆分wmv文件

如何拆分wmv文件
EN

Stack Overflow用户
提问于 2009-09-09 12:13:39
回答 3查看 902关注 0票数 0

我正在做一个应用程序中,我分割一个wmv文件,并将其传输到其他位置(在'x‘kbs) .after传输完成后,文件不播放,它会给出一条消息,因为格式不是supported.is有任何其他的方法来做它。

我会解释我现在在做什么

我写了一个远程应用程序,我想把一个.wmv文件从一台机器传输到另一台机器,我想拆分.wmv并将其发送到远程机器并使用它,我尝试发送完整的文件意味着它将占用大量内存,这似乎非常bad.so我想拆分它并发送it.but文件没有播放它引发一个异常的格式不支持。

下面是我在本地机器上做的代码(不是远程):

代码语言:javascript
复制
try
        {
            FileStream fswrite = new FileStream("D:\\Movie.wmv", FileMode.Create);
            int pointer = 1;
            int bufferlength = 12488;
            int RemainingLen = 0;
            int AppLen = 0;
            FileStream fst = new FileStream("E:\\Movie.wmv", FileMode.Open);
            int TotalLen = (int)fst.Length;
            fst.Close();
            while (pointer != 0)
            {
                byte[] svid = new byte[bufferlength];
                using (FileStream fst1 = new FileStream("E:\\Movie.wmv", FileMode.Open))
                {
                    pointer = fst1.Read(svid, AppLen, bufferlength);                        
                    fst1.Close();                   
                }  
                fswrite.Write(svid, 0, pointer);   
                AppLen += bufferlength;
                RemainingLen = TotalLen-AppLen;
                if(RemainingLen < bufferlength)
                {
                    byte[] svid1 = new byte[RemainingLen];
                    using (FileStream fst2 = new FileStream("E:\\Movie.wmv", FileMode.Open))
                    {                      
                        pointer = fst2.Read(svid1, 0, RemainingLen);
                        fst2.Close();                   
                    } 
                    fswrite.Write(svid, 0, pointer);   
                    break;
                }

            }

            fswrite.Close();
        }
        catch(Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
EN

回答 3

Stack Overflow用户

发布于 2009-09-09 13:47:39

票数 2
EN

Stack Overflow用户

发布于 2009-09-09 13:23:18

我将假设您在发送文件时将其拆分,而不是尝试将wmv放在远程机器上的3个不同文件中。

当你发送文件的时候,你基本上要做的是:

本地计算机

1)读取16k字节(或任何你喜欢的数字)

2)通过网络发送这16k字节

3)重复以上步骤,直到完成

远程计算机

1)监听连接

2)获取16k字节

3)写入16k字节

4)重复操作,直到完成。

这种方法是有效的,但你又在发明轮子,我建议你要么使用像File.Copy这样简单的东西(在网络上工作得很好),要么使用FTP客户端/服务器解决方案(可以托管在你的应用程序中的大量网络C#示例)。

票数 1
EN

Stack Overflow用户

发布于 2009-09-25 05:52:18

我试过了

代码语言:javascript
复制
 private void Splitinthread()
    {
        int bufferlength = 2048;
        int pointer = 1;
        int offset = 0;
        int length = 0;
        byte[] buff = new byte[2048];
        FileStream fstwrite = new FileStream("D:\\TEST.wmv", FileMode.Create);
        FileStream fst2 = new FileStream("E:\\karthi.wmv", FileMode.Open);
        int Tot_Len = (int)fst2.Length;
        int Remain_Buff = 0;
        //Stream fst = File.OpenRead("E:\\karth.wmv");

        while (pointer != 0)
        {
            try
            {

                fst2.Read(buff, 0, bufferlength);
                fstwrite.Write(buff, 0, bufferlength);
                offset += bufferlength;
                Remain_Buff = Tot_Len - offset;
                Fileprogress.Value = CalculateProgress(offset, Tot_Len);
                if (Remain_Buff < bufferlength)
                {
                    byte[] buff1 = new byte[Remain_Buff];
                    pointer = fst2.Read(buff1, 0, Remain_Buff);
                    fstwrite.Write(buff1, 0, pointer);
                    Fileprogress.Value = CalculateProgress(offset, Tot_Len);
                    fstwrite.Close();
                    fst2.Close();
                    break;
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        MessageBox.Show("Completed");
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1399326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档