分享个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:27
选择文件夹即可
点击转换,显示转换成功,文件找不到 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-21 10:40 编辑
LZ,帮你简单美化了一下:Dweeqw
楼主,win10没法用啊,浏览按钮选择不了kux格式文件 约定的童话 发表于 2019-1-21 10:54
楼主,win10没法用啊,浏览按钮选择不了kux格式文件
选择文件夹即可 约定的童话 发表于 2019-1-21 10:54
楼主,win10没法用啊,浏览按钮选择不了kux格式文件
选择kux所在文件夹