wuxunjin 发表于 2019-1-20 18:21

分享个kux转mp4的小工具

本帖最后由 wuxunjin 于 2019-1-21 21:04 编辑

优酷下载的视频都是Kux格式只能用优酷客户端才能播放,
有些会员的或版权的客客户端也没法转成mp4
因要收藏些视频又不想用优酷格式收藏便写了这个小工具:lol



第一次发帖,不知道有没有发错地方
由于技术有限,这个工具如果转换完一次后软件必须重启才能再次转换了
下面我就贴出代码:

    public class Cmd
    {
      private Process proc = null;
      /// <summary>
      /// 构造方法
      /// </summary>
      public Cmd()
      {
            proc = new Process();
      }
      public String RunCmd (string cmd)
      {
            try
            {
                proc.StartInfo.CreateNoWindow = true;
                proc.StartInfo.FileName = "ffmpeg.exe";
                proc.StartInfo.Arguments = cmd;
                proc.StartInfo.UseShellExecute = false;//是否使用操作系统shell启动
                proc.StartInfo.RedirectStandardError = true;//重定向标准错误输出
                proc.StartInfo.RedirectStandardInput = true;//接受来自调用程序的输入信息
                proc.StartInfo.RedirectStandardOutput = true;//由调用程序获取输出信息
                proc.Start();//启动程序
                proc.BeginErrorReadLine();//开始异步读取
                proc.StandardInput.AutoFlush = true;
                string outStr = proc.StandardOutput.ReadToEnd();//获取cmd窗口的输出信息
                proc.WaitForExit();//等待程序执行完退出进程
                proc.Close();//关闭关闭进程
                proc.Dispose();//释放资源
                return outStr;
            }
            catch (Exception e)
            {
                return e.ToString();
            }
      }
    }


Cmd c = new Cmd();
private void Button1_Click(object sender, EventArgs e)
      {
            //列表为空不运行
            if (listView.Items.Count > 0)
            {
                string cmd = "", path = null;

                for (int i = 0; i < listView.Items.Count; i++)
                {
                  path = listView.Items.SubItems.Text.Replace(".kux", "");
                  if (this.outPath == null)
                  {
                        this.outPath = path;
                  }
                  //合并ffmpeg命令
                  cmd += " -y -i \"" + listView.Items.SubItems.Text + "\" -c:v copy -c:a copy -threads 2 \"" + this.outPath + ".mp4\"";
                }
                c.RunCmd(cmd);
                MessageBox.Show("视频转换已完成!");
                //textBox1.Text = c.RunCmd(textBox2.Text.Trim());
            }
      }

完整程序下载:
https://pan.baidu.com/s/1noSdQEDxGAAyeqr58WQmXw
完整源码:
https://pan.baidu.com/s/1z6cmRGgQaRXOmhG-_O6cJg

经各位反映和我自行多视频试得出的结果是:

//开始转换
      private void Button1_Click(object sender, EventArgs e)
      {
            //列表为空不运行
            if (listView.Items.Count > 0)
            {
                for (int i = 0; i < listView.Items.Count; i++)
                {
                            c.RunCmd(" -y -i \"" + listView.Items.SubItems.Text + "\" -c:v copy -c:a copy -threads 2 \"" + listView.Items.SubItems.Text.Replace(".kux", "") + ".mp4\"");

                }
                                                   //textStatus.Text = "正在整合合命令……";
                                                   //progressBar.Value += i / 100;
                                                   //合并ffmpeg命令
                                                   //cmd += " -y -i \"" + listView.Items.SubItems.Text + "\" -c:v copy -c:a copy -threads 2 \"" + listView.Items.SubItems.Text.Replace(".kux", "") + ".mp4\"";
                                                   //c.RunCmd(" -y -i \"" + listView.Items.SubItems.Text + "\" -c:v copy -c:a copy -threads 2 \"" + listView.Items.SubItems.Text.Replace(".kux", "") + ".mp4\"");
                //c.RunCmd(cmd);
                progressBar.Value = 100;
                textStatus.Text = "完成!";
                MessageBox.Show("视频转换已完成!");
                //textBox1.Text = c.RunCmd(textBox2.Text.Trim());
            }
      }


用这段(即按键1)代码替换掉原来的就能批量转换了,但是不建议一次转太多(10个以内吧)
然后,只看到第一个马上成功下面的还是0kb这时把软件关闭等待自行完成!
我在网上找了这问题有大神说是.net底层问题,据体什么问题我也不清楚
还望各位继续完善,谢谢!


约定的童话 发表于 2019-1-21 11:31

静海流沙 发表于 2019-1-21 11:27
选择文件夹即可

点击转换,显示转换成功,文件找不到

wuxunjin 发表于 2019-1-21 20:43

sxxcb 发表于 2019-1-21 19:47
楼主,我转换后直接显示成功,但是文件夹里面并没有转换好的文件。换其他目录也是这样。是我没有用对吗?...

把cmd += " -y -i \"" + listView.Items.SubItems.Text + "\" -c:v copy -c:a copy -threads 2 \"" + this.outPath + ".mp4\"";
改成:
cmd += " -y -i \"" + listView.Items.SubItems.Text + "\" -c:v copy -c:a copy -threads 2 \"" + listView.Items.SubItems.Text.Replace(".kux", "") + ".mp4\"";

江南红邱伟刚 发表于 2019-1-20 18:55

这个很实用,谢谢!

langlibailong 发表于 2019-1-20 19:35

大神,这个怎么用啊?

uiop88 发表于 2019-1-20 19:43

必须重启是指软件还是系统。

Norton 发表于 2019-1-20 21:38

多谢提供,挺不错的。

约定的童话 发表于 2019-1-21 08:41

本帖最后由 约定的童话 于 2019-1-21 10:40 编辑

LZ,帮你简单美化了一下:Dweeqw

约定的童话 发表于 2019-1-21 10:54

楼主,win10没法用啊,浏览按钮选择不了kux格式文件

静海流沙 发表于 2019-1-21 11:27

约定的童话 发表于 2019-1-21 10:54
楼主,win10没法用啊,浏览按钮选择不了kux格式文件

选择文件夹即可

wuxunjin 发表于 2019-1-21 11:28

约定的童话 发表于 2019-1-21 10:54
楼主,win10没法用啊,浏览按钮选择不了kux格式文件

选择kux所在文件夹
页: [1] 2 3
查看完整版本: 分享个kux转mp4的小工具