1、我用的ffmpeg,但是很慢,
2、我有个文件夹里有很多文件,比如,图片,视频,
图片是很快,直接能预览了,
但是视频的话,要先截取视频里面的一帧,才能预览出来
所以,有什么其他思路能提高视频预览图的效率吗
没。
第一帧读出来后缓存起来呗,下次就不用了。
注意黑场帧哦。
windows自带的预览,他的速度就非常快,
还是说,视频本身自带预览图,只是我们没注意
@一首歌听到忘世:
视频本身是没有预览图的。
ffmpeg也不慢啊,解码,取到第一个非黑场帧,几十毫秒的事。
不用ffmpeg用啥,用Media Foundation?学来干嘛。
@日暮青色: 我整个取帧时间,到预览显示,要花,将近1秒钟,200多兆的视频
@一首歌听到忘世: ....你逗我
@日暮青色: 我是认真的,,不然我不会人为这是慢的了,,,
@一首歌听到忘世: 怎么用的ffmpeg啊
@日暮青色:
应该是这么做的吧
private string GenThupImage(string videoPath) { string ffmpegPath = @"C:\Users\wesly\Desktop\ffmpeg.exe";//为ffmpeg的全路径 string oriVideoPath = videoPath;//为视频的全路径 int frameIndex = 1;//为帧处在的秒数 int thubWidth = 200;//为缩略图的宽度 int thubHeight = 100; //为缩略图的高度 string thubImagePath = @"D:\2.jpg";//为生成的缩略图所在的路径 string command = string.Format("\"{0}\" -i \"{1}\" -ss {2} -vframes 1 -r 1 -ac 1 -ab 2 -s {3}*{4} -f image2 \"{5}\"", ffmpegPath, oriVideoPath, frameIndex, thubWidth, thubHeight, thubImagePath); Execute(command); return thubImagePath; } /// <summary> /// 调用cmd命令 /// </summary> /// <param name="str"></param> private void Execute(string str) { System.Diagnostics.Process p = new System.Diagnostics.Process(); p.StartInfo.FileName = "cmd.exe"; p.StartInfo.UseShellExecute = false; //是否使用操作系统shell启动 p.StartInfo.RedirectStandardInput = true;//接受来自调用程序的输入信息 p.StartInfo.RedirectStandardOutput = true;//由调用程序获取输出信息 p.StartInfo.RedirectStandardError = true;//重定向标准错误输出 p.StartInfo.CreateNoWindow = true;//不显示程序窗口 p.Start();//启动程序 //向cmd窗口发送输入信息 p.StandardInput.WriteLine(str + "&exit"); p.StandardInput.AutoFlush = true; //获取cmd窗口的输出信息 string output = p.StandardOutput.ReadToEnd(); p.WaitForExit();//等待程序执行完退出进程 p.Close(); }
@一首歌听到忘世: 难怪,我P/Invoke调用的动态库,包含黑场帧检测,几十毫秒吧。
@日暮青色: 能教我吗
@一首歌听到忘世: 同学,加油吧。ffmpeg相关的资料很多。
@日暮青色: 我找资料的能力有问题,,windows 下我用mingw编译ffmpeg,然后
输入
./configure --enable-shared --disable-static --enable-memalign-hack
显示的是Unkuow option “--enable-memalign-hack”。
我也不知道这几个指令代表的是什么意思。
配置不成功。更别说编译了
windows自带的视频预览和速度非常块完全不搭界.
能知道windows自带的视频预览的原理吗