必赢手机app下载 / Blog / 必赢手机app下载 / MP4格式视频实现

MP4格式视频实现

MVC设计方式下 在View页面里面使用ckplayer.js
加载录制 ,在MP5格式录制上传之后
笔者发觉一些录制可以边加载边播放
但是有部分又卓殊,找了下原因是因为录制的元数据新闻在第风度翩翩帧的时候就这些;找了下解决方案:是下载二个工具处理录制

下载的页面地址是: 

点击页面上的Download FFmpeg git-738ebb4 64-bit
Static(作者是63位的卡塔尔国,假如您是叁拾壹人点击 Download FFmpeg git-738ebb4
32-bit Static

下载下来解压缩后作者把公文夹改成了ffmpeg放在D盘上面
运作五个公文:
D:ffmpeg/bin/ffmpeg.exe
D:ffmpeg/bin/ffplay.exe
D:ffmpeg/bin/ffprobe.exe
那就打响安装了

上面举贰个简易的例子
第意气风发,搞叁个摄像文件放在D盘根目录下,首要为了省事,举例小编放的是:D:/1.flv
在开班->运转里输入cmd,弹出命令窗口
按上面包车型地铁指令进行操作
输入d:按回车
输入 cd ffmpeg/bin回车
这么就进去了ffmpeg的目录了,
1:测验录像截图的作用
复制如下命令,在指令行里点击鼠标右键采取粘贴
ffmpeg -i d:/1.flv -y -f  image2 -t 0.001 -s 720×576 d:/1.jpg
拜望D盘下是还是不是生成了三个1.jpg的图样,是的话就成功了,不是你就认真反省下吧,看看路线是还是不是理所必然
2:测试d:/1.flv转成d:/1.mp4
同等,复制下边包车型地铁一声令下,在指令窗口里点击鼠标右键选拔粘贴

ffmpeg.exe -i “d:1.flv” -y  -metadata title=”那是录制标题”  -metadata comment=”那是录像音讯!”   -c:v libx264  -preset superfast -x264opts keyint=25  -r 15 -b:v 500k -c:a aac -strict experimental -ar 44100 -ac 2  -b:a 64k -vf  “movie=a.png[watermark];scale=1364×768[scale];[scale][watermark] overlay=30:30[out]” -f  mp4 “d:2.mp4”

等一声令下试行到位后看看D盘下是或不是有个DVD了,有了就证实成功了。

参数表明:

movie=是水印
-b:v 后的500k是码率
scale=后是分辩率
keyint=25 是主要帧 表示每25帧会有一个关键帧

 

假使您的录像只是元数据音信不在第后生可畏帧,下边介绍另后生可畏种mp3把元数据音讯转到录制第风姿洒脱帧

第生机勃勃需求下载二个qt-faststart
下载地址:
下载下来解压获得qt-faststart.exe放到d:ffmpeg/bin/下边
运作命令:qt-faststart.exe d:/1.VCD d:/2.VCD
终极出来的那些2.mp5就是打响的了。能够边下载边播放

 

万事应用方案经过测量检验是实用的 于是自个儿在C#里面使用CMD命令来运维

     public string Test(string cmdText)
        {
            Stopwatch w = new Stopwatch();
            w.Start();
            StringBuilder sb = new StringBuilder();
            string str = RunCmdForJobs(cmdText);
            string[] lines = str.Split(new string[] { "rn" }, StringSplitOptions.RemoveEmptyEntries);
            foreach (string line in lines)
            {
                string[] temp = line.Split(new string[] { ": " }, StringSplitOptions.RemoveEmptyEntries);
                if (temp.Length == 2)
                    sb.AppendFormat("{0}:{1}<br/>", temp[0], temp[1].Trim(' '));
                else if (temp.Length == 1)
                    sb.AppendFormat("{0}<br/>", temp[0]);
            }
            //sb.Append(str);  
            w.Stop();
            sb.AppendFormat("用时(毫秒):{0}<br/>", w.ElapsedMilliseconds);
            return sb.ToString();

        }
        /// <summary>  
        /// 执行cmd命令  
        /// 多命令请使用批处理命令连接符:  
        /// <![CDATA[  
        /// &:同时执行两个命令  
        /// |:将上一个命令的输出,作为下一个命令的输入  
        /// &&:当&&前的命令成功时,才执行&&后的命令  
        /// ||:当||前的命令失败时,才执行||后的命令]]>  
        /// 其他请百度  
        /// </summary>  
        public static string RunCmdForJobs(string cmdText)
        {

            StringBuilder sb = new StringBuilder();
            using (Process p = new Process())
            {
                p.StartInfo.FileName = "cmd.exe";
                p.StartInfo.WorkingDirectory = "D:\ffmpeg\bin";   //这个属性是设置CMD命令在哪个路径下执行,这里绑定我的视频元数据信息处理工具的路径。
                p.StartInfo.UseShellExecute = false;        //是否使用操作系统shell启动  
                p.StartInfo.RedirectStandardInput = true;   //接受来自调用程序的输入信息  
                p.StartInfo.RedirectStandardOutput = true;  //由调用程序获取输出信息  
                p.StartInfo.RedirectStandardError = true;   //重定向标准错误输出  
                p.StartInfo.CreateNoWindow = false;          //不显示程序窗口  
                p.Start();//启动程序  
                //向cmd窗口写入命令  
                p.StandardInput.WriteLine(cmdText + "&exit");
                p.StandardInput.AutoFlush = true;
                //获取cmd窗口的输出信息  
                StreamReader reader = p.StandardOutput;//截取输出流  
                string line = reader.ReadLine();//每次读取一行  
                sb.Append(line + "n");
                while (!reader.EndOfStream)
                {
                    line = reader.ReadLine();
                    sb.Append(line + "n");
                }
                p.WaitForExit();//等待程序执行完退出进程  
                p.Close();
            }
            return sb.ToString();
        }

  

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章

网站地图xml地图