C# 使用ffmpeg视频截图_angzhuo9931的博客-程序员秘密

技术标签: c#  ui  ffmpeg  

<appSettings>
 <add key="ffmpeg" value="E:\ffmpeg\ffmpeg-20141012-git-20df026-win32-static\bin\ffmpeg.exe" />
 <add key="CatchFlvImgSize" value="240x180" />
</appSettings>
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.IO;
using System.Threading;

public partial class cut_Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            string path = Server.MapPath("~/resource/flv/");
            string imagePath = CatchImg(path);
            if (!string.IsNullOrEmpty(imagePath))
            {
                Response.Write("从视频截取图片成功!!!!!");
            }
        }
    }

    public string CatchImg(string vFileName)
    {

        //取得ffmpeg.exe的路径,路径配置在Web.Config中,如:<add key="ffmpeg" value="E:\ffmpeg\ffmpeg.exe" />

        string ffmpeg = System.Configuration.ConfigurationSettings.AppSettings["ffmpeg"];

        if ((!System.IO.File.Exists(ffmpeg)))
        {
            return "";
        }

        //获得图片相对路径/最后存储到数据库的路径,

        //如:/Web/FlvFile/User1/00001.jpg

        //string flv_img = System.IO.Path.ChangeExtension(vFileName, ".jpg");

        //图片绝对路径,如:D:\Video\Web\FlvFile\User1\0001.jpg

        string flv_img_p = vFileName + "ttt.png";//HttpContext.Current.Server.MapPath(flv_img);


        //截图的尺寸大小,配置在Web.Config中,如:<add key="CatchFlvImgSize" value="240x180" />

        string FlvImgSize = System.Configuration.ConfigurationSettings.AppSettings["CatchFlvImgSize"];

        System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(ffmpeg);

        startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;

        //此处组合成ffmpeg.exe文件需要的参数即可,此处命令在ffmpeg 0.4.9调试通过

        //-ss后跟的时间单位为秒
        startInfo.Arguments = " -i " + vFileName + "1.flv" + " -y -f image2 -ss 6 -t 0.001 -s " + FlvImgSize + " " + flv_img_p;

        try
        {

            System.Diagnostics.Process.Start(startInfo);

        }
        catch
        {

            return "";

        }

        ///注意:图片截取成功后,数据由内存缓存写到磁盘需要时间较长,大概在3,4秒甚至更长;

        ///这儿需要延时后再检测,我服务器延时8秒,即如果超过8秒图片仍不存在,认为截图失败;

        ///此处略去延时代码.如有那位知道如何捕捉ffmpeg.exe截图失败消息,请告知,先谢过!
        ///

        //Thread.Sleep(10000);

        if (System.IO.File.Exists(flv_img_p))
        {
            return flv_img_p;
        }

        return "";
    }
}

 

#region 视频缩略图
        /// <summary>
        /// 截图视频
        /// </summary>
        /// <param name="videoPath">视频路径</param>
        /// <returns></returns>
        public string MarkVideoThumb(string videoPath)
        {


            string ffmpeg = System.Configuration.ConfigurationSettings.AppSettings["ffmpeg"];
if ((!System.IO.File.Exists(ffmpeg))) { return ""; } string filename = SysUtil.GUID + ".jpg"; string flv_img_p = Path.GetDirectoryName(videoPath) + @"\" + filename; //截图的尺寸大小,配置在Web.Config中,如:<add key="CatchFlvImgSize" value="240x180" /> string FlvImgSize = System.Configuration.ConfigurationSettings.AppSettings["CatchFlvImgSize"]; if (string.IsNullOrEmpty(FlvImgSize)) { FlvImgSize = "240x180"; } System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(ffmpeg); startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; //-ss后跟的时间单位为秒 startInfo.Arguments = " -i " + videoPath + " -y -f image2 -ss 5 -t 0.001 -s " + FlvImgSize + " " + flv_img_p; try { //System.Diagnostics.Process.Start(startInfo); System.Diagnostics.Process p = new System.Diagnostics.Process(); p.StartInfo = startInfo; p.Start(); p.WaitForExit(); } catch { return ""; } if (System.IO.File.Exists(flv_img_p)) { return filename; } return ""; } #endregion

 

 

 

ffmpeg一些命令:

ffmpeg非常强大,轻松几条命令就可以完成你的工作。

把darkdoor.[001-100].jpg序列帧和001.mp3音频文件利用mpeg4编码方式合成视频文件darkdoor.avi:
$ ffmpeg -i 001.mp3 -i darkdoor.%3d.jpg -s 1024x768 -author skypp -vcodec mpeg4 darkdoor.avi

ffmpeg还支持mov格式:
$ ffmpeg -i darkdoor.%3d.jpg darkdoor.mov

要查看你的ffmpeg支持哪些格式,可以用如下命令:
$ ffmpeg -formats | less

还可以把视频文件导出成jpg序列帧:
$ ffmpeg -i bc-cinematic-en.avi example.%d.jpg

debian下安装ffmpeg很简单:
#apt-get install ffmpeg

视频文件截图

  • 截取一张352x240尺寸大小的,格式为jpg的图片
ffmpeg -i test.asf -y -f image2 -t 0.001 -s 352x240 a.jpg
  • 把视频的前30帧转换成一个Animated Gif
ffmpeg -i test.asf -vframes 30 -y -f gif a.gif
  • 截取指定时间的缩微图
ffmpeg -i test.avi -y -f image2 -ss 8 -t 0.001 -s 350x240 test.jpg
-ss后跟的时间单位为秒
  • 转换文件为3GP格式
ffmpeg -y -i test.mpeg -bitexact -vcodec h263 -b 128 -r 15 -s 176x144 
-acodec aac -ac 2 -ar 22500 -ab 24 -f 3gp test.3gp
ffmpeg -y -i test.wmv -ac 1 -acodec libamr_nb -ar 8000 -ab 12200 -s 176x144 -b 128 -r 15 test.3gp

视频格式转换

  • 如何使用 ffmpeg 编码得到高质量的视频
ffmpeg.exe -i "D:VideoFearlessFearless.avi" -target film-dvd -s 720x352
-padtop 64 -padbottom 64 -maxrate 7350000 -b 3700000 -sc_threshold 1000000000
-trellis -cgop -g 12 -bf 2 -qblur 0.3 -qcomp 0.7 -me full -dc 10 -mbd 2
-aspect 16:9 -pass 2 -passlogfile "D:Videoffmpegencode" -an -f mpeg2video "D:Fearless.m2v"
  • 转换指定格式文件到FLV格式
ffmpeg.exe -i test.mp3 -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:test.flv 
ffmpeg.exe -i test.wmv -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:test.flv
  • 转码解密的VOB
ffmpeg -i snatch_1.vob -f avi -vcodec mpeg4 -b 800 -g 300 -bf 2 -acodec mp3 -ab 128 snatch.avi
上面的命令行将vob的文件 转化成avi文件,mpeg4的视频和mp3的音频。注意命令中使用了B帧,所以mpeg4流是divx5兼容的。GOP大小是300意味着29.97帧频下每10秒就有INTRA帧。该映射在音频语言的DVD转码时候尤其有用。
  • 同时编码到几种格式并且在输入流和输出流之间建立映射
ffmpeg -i /tmp/a.wav -ab 64 /tmp/a.mp2 -ab 128 /tmp/b.mp2 -map 0:0 -map 0:0
上面的命令行转换一个64Kbits 的a.wav到128kbits的a.mp2 ‘-map file:index’在输出流的顺序上定义了哪一路输入流是用于每一个输出流的。
  • 转换文件为3GP格式
ffmpeg -i test.avi -y -b 20 -s sqcif -r 10 -acodec amr_wb -ab 23.85 -ac 1 -ar 16000 test.3gp
注:如果要转换为3GP格式,则ffmpeg在编译时必须加上–enable-amr_nb –enable-amr_wb,详细内容可参考: 转换视频为3GPP格式

屏幕录制

  • 使用ffmpeg录像屏幕
ffmpeg -vcodec mpeg4 -b 1000 -r 10 -g 300 -vd x11:0,0 -s 1024x768 ~/test.avi

:其中,-vd x11:0,0 指录制所使用的偏移为 x=0 和 y=0,-s 1024×768 指录制视频的大小为 1024×768。录制的视频文件为 test.avi,将保存到用户主目录中

如果你只想录制一个应用程序窗口或者桌面上的一个固定区域,那么可以指定偏移位置和区域大小。使用xwininfo -frame命令可以完成查找上述参数。
  • 重新调整视频尺寸大小
ffmpeg -vcodec mpeg4 -b 1000 -r 10 -g 300 -i ~/test.avi -s 800×600 ~/test-800-600.avi
注:ffmpeg的屏幕录制功能只能在Linux环境下有效。

视频采集

  • 把摄像头的实时视频录制下来,存储为文件
ffmpeg  -f video4linux -s 320*240 -r 10 -i /dev/video0  test.asf
三、ffmepg使用

各种转换例子见:
FFmpeg Howto
程序下载:
Unofficial FFmpeg Win32 Builds(需要使用代理访问)
或:
FFMPEG FULL SDK V3.0

The generic syntax is:

ffmpeg [[infile options][`-i' infile]]… {[outfile options] outfile}…

As a general rule, options are applied to the next specified file. Therefore, order is important, and you can have the same option on the command line multiple times. Each occurrence is then applied to the next input or output file.

* To set the video bitrate of the output file to 64kbit/s:

ffmpeg -i input.avi -b 64k output.avi

* To force the frame rate of the input and output file to 24 fps:

ffmpeg -r 24 -i input.avi output.avi

* To force the frame rate of the output file to 24 fps:

ffmpeg -i input.avi -r 24 output.avi

* To force the frame rate of input file to 1 fps and the output file to 24 fps:

ffmpeg -r 1 -i input.avi -r 24 output.avi

The format option may be needed for raw input files.

By default, FFmpeg tries to convert as losslessly as possible: It uses the same audio and video parameters for the outputs as the one specified for the inputs.

转换文件为3GP格式
ffmpeg -y -i test.mpeg -bitexact -vcodec h263 -b 128 -r 15 -s 176x144 -acodec aac -ac 2 -ar 22500 -ab 24 -f 3gp test.3gp

ffmpeg -y -i test.mpeg -ac 1 -acodec amr_nb -ar 8000 -s 176x144 -b 128 -r 15 test.3gp

转换指定格式文件到FLV格式

ffmpeg.exe-i test.mp3 -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:test.flv
ffmpeg.exe-i test.wmv -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:test.flv
***************************************************************************
ffmpeg -i F:toolsffmpeg.rev10464test.avi -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 F:toolsffmpeg.rev10464test.flv
ffmpeg -i "F:toolsffmpeg.rev10464test.flv" -y -f image2 -ss 8 -t 0.001 -s 350x240 "test.jpg"


字体变小字体变大

 

ffmpeg.exe-i F:闪客之家闪客之歌.mp3 -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:11.flv
ffmpeg -i F:01.wmv -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:test.flv
使用-ss参数 作用(time_off set the start time offset),可以从指定时间点开始转换任务。如:
转换文件格式的同时抓缩微图:
ffmpeg -i "test.avi" -y -f image2 -ss 8 -t 0.001 -s 350x240 'test.jpg'
对已有flv抓图:
ffmpeg -i "test.flv" -y -f image2 -ss 8 -t 0.001 -s 350x240 'test.jpg'
-ss后跟的时间单位为秒
Ffmpeg转换命令
ffmpeg -y -i test.mpeg -bitexact -vcodec h263 -b 128 -r 15 -s 176x144 -acodec aac -ac 2 -ar 22500
-ab 24 -f 3gp test.3gp
或者
ffmpeg -y -i test.mpeg -ac 1 -acodec amr_nb -ar 8000 -s 176x144 -b 128 -r 15 test.3gp


ffmpeg参数设定解说
-bitexact 使用标准比特率
-vcodec xvid 使用xvid压缩
-s 320x240 指定分辨率
-r 29.97 桢速率(可以改,确认非标准桢率会导致音画不同步,所以只能设定为15或者29.97)
画面部分,选其一
-b <比特率> 指定压缩比特率,似乎ffmpeg是自动VBR的,指定了就大概是平均比特率,比如768,1500这样的
就是原来默认项目中有的
-qscale <数值> 以<数值>质量为基础的VBR,取值0.01-255,约小质量越好
-qmin <数值> 设定最小质量,与-qmax(设定最大质量)共用,比如-qmin 10 -qmax 31
-sameq 使用和源同样的质量
声音部分
-acodec aac 设定声音编码
-ac <数值> 设定声道数,1就是单声道,2就是立体声,转换单声道的TVrip可以用1(节省一半容量),高品质
的DVDrip就可以用2
-ar <采样率> 设定声音采样率,PSP只认24000
-ab <比特率> 设定声音比特率,前面-ac设为立体声时要以一半比特率来设置,比如192kbps的就设成96,转换
君默认比特率都较小,要听到较高品质声音的话建议设到160kbps(80)以上
-vol <百分比> 设定音量,某些DVDrip的AC3轨音量极小,转换时可以用这个提高音量,比如200就是原来的2倍
这样,要得到一个高画质音质低容量的MP4的话,首先画面最好不要用固定比特率,而用VBR参数让程序自己去
判断,而音质参数可以在原来的基础上提升一点,听起来要舒服很多,也不会太大(看情况调整


例子:ffmpeg -y -i "1.avi" -title "Test" -vcodec xvid -s 368x208 -r 29.97 -b 1500 -acodec aac -ac 2 -ar 24000 -ab 128 -vol 200 -f psp -muxvb 768 "1.***"

解释:以上命令可以在Dos命令行中输入,也可以创建到批处理文件中运行。不过,前提是:要在ffmpeg所在的目录中执行(转换君所在目录下面的cores子目录)。
参数:
-y(覆盖输出文件,即如果1.***文件已经存在的话,不经提示就覆盖掉了)
-i "1.avi"(输入文件是和ffmpeg在同一目录下的1.avi文件,可以自己加路径,改名字)
-title "Test"(在PSP中显示的影片的标题)
-vcodec xvid(使用XVID编码压缩视频,不能改的)
-s 368x208(输出的分辨率为368x208,注意片源一定要是16:9的不然会变形)
-r 29.97(帧数,一般就用这个吧)
-b 1500(视频数据流量,用-b xxxx的指令则使用固定码率,数字随便改,1500以上没效果;还可以用动态码率如:-qscale 4和-qscale 6,4的质量比6高)
-acodec aac(音频编码用AAC)
-ac 2(声道数1或2)
-ar 24000(声音的采样频率,好像PSP只能支持24000Hz)
-ab 128(音频数据流量,一般选择32、64、96、128)
-vol 200(200%的音量,自己改)
-f psp(输出psp专用格式)
-muxvb 768(好像是给PSP机器识别的码率,一般选择384、512和768,我改成1500,PSP就说文件损坏了)
"1.***"(输出文件名,也可以加路径改文件名)

机器强劲的话,可以多开几个批处理文件,让它们并行处理。
E:ffmpeg.exe-i I:1.wmv -b 360 -r 25 -s 320x240 -hq -deinterlace -ab 56 -ar 22050 -ac 1 D:2.flv
===========================================
ffmpeg.exe-i F:闪客之家闪客之歌.mp3 -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:11.flvffmpeg -i F:01.wmv -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:test.flv使用-ss参数 作用(time_off set the start time offset),可以从指定时间点开始转换任务。如:
转换文件格式的同时抓缩微图:
ffmpeg -i "test.avi" -y -f image2 -ss 8 -t 0.001 -s 350x240 'test.jpg'
对已有flv抓图:
ffmpeg -i "test.flv" -y -f image2 -ss 8 -t 0.001 -s 350x240 'test.jpg'
-ss后跟的时间单位为秒 Ffmpeg转换命令
ffmpeg -y -i test.mpeg -bitexact -vcodec h263 -b 128 -r 15 -s 176x144 -acodec aac -ac 2 -ar 22500 -ab 24 -f 3gp test.3gp
或者
ffmpeg -y -i test.mpeg -ac 1 -acodec amr_nb -ar 8000 -s 176x144 -b 128 -r 15 test.3gp ffmpeg参数设定解说
-bitexact 使用标准比特率
-vcodec xvid 使用xvid压缩
-s 320x240 指定分辨率
-r 29.97 桢速率(可以改,确认非标准桢率会导致音画不同步,所以只能设定为15或者29.97)


画面部分,选其一
-b <比特率> 指定压缩比特率,似乎ffmpeg是自动VBR的,指定了就大概是平均比特率,比如768,1500这样的就是原来默认项目中有的
-qscale <数值> 以<数值>质量为基础的VBR,取值0.01-255,约小质量越好
-qmin <数值> 设定最小质量,与-qmax(设定最大质量)共用,比如-qmin 10 -qmax 31
-sameq 使用和源同样的质量 声音部分
-acodec aac 设定声音编码
-ac <数值> 设定声道数,1就是单声道,2就是立体声,转换单声道的TVrip可以用1(节省一半容量),高品质的DVDrip就可以用2
-ar <采样率> 设定声音采样率,PSP只认24000
-ab <比特率> 设定声音比特率,前面-ac设为立体声时要以一半比特率来设置,比如192kbps的就设成96,转换君默认比特率都较小,要听到较高品质声音的话建议设到160kbps(80)以上
-vol <百分比> 设定音量,某些DVDrip的AC3轨音量极小,转换时可以用这个提高音量,比如200就是原来的2倍 这样,要得到一个高画质音质低容量的MP4的话,首先画面最好不要用固定比特率,而用VBR参数让程序自己去判断,而音质参数可以在原来的基础上提升一 点,听起来要舒服很多,也不会太大(看情况调整 例子:ffmpeg -y -i "1.avi" -title "Test" -vcodec xvid -s 368x208 -r 29.97 -b 1500 -acodec aac -ac 2 -ar 24000 -ab 128 -vol 200 -f psp -muxvb 768 "1.***"

解释:以上命令可以在Dos命令行中输入,也可以创建到批处理文件中运行。不过,前提是:要在ffmpeg所在的目录中执行(转换君所在目录下面的cores子目录)。
参数:
-y(覆盖输出文件,即如果1.***文件已经存在的话,不经提示就覆盖掉了)
-i "1.avi"(输入文件是和ffmpeg在同一目录下的1.avi文件,可以自己加路径,改名字)
-title "Test"(在PSP中显示的影片的标题)
-vcodec xvid(使用XVID编码压缩视频,不能改的)
-s 368x208(输出的分辨率为368x208,注意片源一定要是16:9的不然会变形)
-r 29.97(帧数,一般就用这个吧)
-b 1500(视频数据流量,用-b xxxx的指令则使用固定码率,数字随便改,1500以上没效果;还可以用动态码率如:-qscale 4和-qscale 6,4的质量比6高)
-acodec aac(音频编码用AAC)
-ac 2(声道数1或2)
-ar 24000(声音的采样频率,好像PSP只能支持24000Hz)
-ab 128(音频数据流量,一般选择32、64、96、128)
-vol 200(200%的音量,自己改)
-f psp(输出psp专用格式)
-muxvb 768(好像是给PSP机器识别的码率,一般选择384、512和768,我改成1500,PSP就说文件损坏了)
"1.***"(输出文件名,也可以加路径改文件名)

P.S. 版主机器强劲的话,可以多开几个批处理文件,让它们并行处理。 E:ffmpeg.exe-i I:1.wmv -b 360 -r 25 -s 320x240 -hq -deinterlace -ab 56 -ar 22050 -ac

转载于:https://www.cnblogs.com/zoro-zero/p/4220377.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/angzhuo9931/article/details/101931713

智能推荐

Oracle Package用法详解_B先生2012的博客-程序员秘密

<br />OraclePackage有哪些作用呢?<br />简化应用设计、提高应用性能、实现信息隐藏、子程序重载。<br />下面是Package部分代码。<br />create or replace Package FirstPage is<br />  -- Author  : MECON<br />  -- Created : 2006-7-20 上午 09:34:44<br />  -- Purpose : 用来处理首页各个模块的显示情况<br />  <br />  -- Public ty

【Element-UI】解决el-tree在v-for中获取不到getCheckedNodes_elementui 表格里放树接口抓取不到_红枫忆梦的博客-程序员秘密

解决 element-ui 2.13.2版本中 el-tree 在 v-for 中使用,获取不到 getCheckedNodes() 和 getCheckedKeys(),报错 Error in v-on handler: "TypeError: this.$refs.tree.getCheckedNodes is not a function"

Vue Cli安装和node-sass、less-loader、sass-loader安装_安装sass-loader_longfei815的博客-程序员秘密

CLI全程是Command-Line Interface,命令行界面,俗称脚手架,可以帮我们快速的创建vue项Vue Cli的使用必须依赖node环境和webpack管理员方式打开cmd进行安装,安装命令:npm i -g @vue/cli查看版本C:Windowssystem32&gt;vue [email protected]/cli 4.5.13二、node-sass安装vue项目如果没有采用vue-cli方式创建,那么在项目下载之后,需要安装node-sass,不然会报错。安装后再进行编译npm in

数据结构三大查找算法(二分查找、插值查找、斐波那契数列查找)C语言实现_Yengi的博客-程序员秘密

文章目录查找二分查找(折半查找)插值查找斐波拉契查找注意:查找查找是在大量的信息里面寻找一个特定的信息元素(1)静态查找和动态查找;静态或者动态都是针对查找表而言的。动态表指查找表中有删除和插入操作的表(2)无序查找和有序查找。无序查找:被查找数列有序无序均可;有序查找:被查找数列必须为有序数列。二分查找(折半查找)说明:元素必须是有序的,如果是无序的则要先进行排序操作基本思想:也称为是折半查找,属于有序查找算法。用给定值k先与中间结点的关键字比较,中间结点把线形表分成两个子表,若相等

java 字符串转换成十六进制字符串_java 字符串转换成十六进制编码和转换十六进制编码为字符串..._动词打次咚的博客-程序员秘密

package test;public class StringTest {public static String toHexString(String s) {String str = "";for (int i = 0; i &lt; s.length(); i++) {int ch = (int) s.charAt(i);String s4 = Integer.toHexString(ch...

【Unity】11.4 车轮碰撞体(Wheel Collider)_weixin_34419326的博客-程序员秘密

分类:Unity、C#、VS2015 创建日期:2016-05-02 一、简介 车轮碰撞体 (Wheel Collider)专门用于创建汽车或其他移动交通工具。 车轮碰撞体是一种针对地面车辆的特殊碰撞体。它有内置的碰撞检测、车轮物理系统及有滑胎摩擦的参考体。除了车轮,该碰撞体也可用于其他的游戏对象。 二、相关属性 1、Mass 质量。该项用于设置车轮碰撞体的质量。 2、Radus 半径。该项用于设...

随便推点

python3 打开文件失败的异常处理的问题_python打开文件失败异常处理_jasonLee_lijiaqi的博客-程序员秘密

解决方法主要使用了locals()具体问题如下#coding = utf-8try: f = open('一个不存在的文件.txt','r') print(f.read())except OSError as reason: print('出错啦!'+ str(reason))finally: f.close()''' 代码会产生这样的提示错...

Tomcat启动报错:java.net.BindException: Cannot assign requested address: JVM_Bind_Hi_Shook的博客-程序员秘密

  Tomcat启动报错:java.net.BindException: Cannot assign requested address: JVM_Bind  Tomcat Cannot assign requested address: JVM_Bind 非端口占用冲突严重: StandardServer.await: create[8005]: java.net.BindExc...

以太坊私有网络环境部署与实践_dianle9968的博客-程序员秘密

以太坊私有网络环境部署与实践 如果想要试试在以太坊上的操作,可以直接在官网下载个客户端,然后选择网络为私有网络即可。此时,你就可以通过客户端创建账户、挖矿、转账、部署智能合约、调用智能合约等等。如果希望命令行部署,可以接着往下看。notice:下面内容讲的是...

org.springframework.orm.hibernate3.HibernateSystemException: Found two represent_feiyan19880116的博客-程序员秘密

org.springframework.orm.hibernate3.HibernateSystemException: Found two representations of same collection: com.kuandai.t4.pojo.UserInfo.moveInfos; nested exception is org.hibernate.HibernateExce...

MySQL主从篇:死磕主从复制中数据同步原理与优化_mysql 主从同步优化_Java技术攻略的博客-程序员秘密

不论任何技术栈,但凡一提高可用、高性能、高稳定这些词汇,必然会牵扯到集群、主从架构的概念,如任何技术栈中都会有,而MySQL中同样不例外,官方也提供了主从架构的支持,通过调整多个MySQL节点的配置信息,即可将一个节点的数据同步给另一个或多个节点,但这种方式同步的是所有数据!有人也许会疑惑:为什么要同步所有数据呀?难道不能对数据作分片,不同的节点同步不同的数据嘛?

推荐文章

热门文章

相关标签