admin 发布的文章

使用WPF和FFmpeg.AutoGen 6.1开发一个为视频添加动态图片水印的工具时,你可以创建一个简单的界面,并使用C#代码实现相应的逻辑。下面是一个简单的示例,涵盖了基本的界面和代码:
首先,确保你已经将FFmpeg.AutoGen 6.1添加到你的项目中。你可以使用NuGet包管理器安装它。
请注意,下述代码仅为基本示例,你可能需要根据实际需求和FFmpeg的使用方式进行调整。确保你的项目中包含了FFmpeg.AutoGen 6.1,并根据你的系统配置正确的FFmpeg可执行文件路径。

<Window x:Class="WpfApp3.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp3"
        mc:Ignorable="d"
        Title="视频水印工具" Height="350" Width="500">
    <Grid>
        <StackPanel Margin="10">
            <TextBlock Text="视频文件路径:"/>
            <TextBox x:Name="txtVideoPath" Margin="0,0,0,10"/>

            <TextBlock Text="水印图片路径:"/>
            <TextBox x:Name="txtWatermarkPath" Margin="0,0,0,10"/>

            <Button Content="选择视频文件" Click="SelectVideoFile_Click"/>
            <Button Content="选择水印图片" Click="SelectWatermark_Click"/>

            <Button Content="开始添加水印" Click="AddWatermark_Click" Margin="0,10,0,0"/>
        </StackPanel>
    </Grid>
</Window>
namespace WpfApp3
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {

        public MainWindow()
        {
            InitializeComponent();
        }

        private void SelectVideoFile_Click(object sender, RoutedEventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.Filter = "视频文件|*.mp4;*.avi;*.mkv|所有文件|*.*";

            if (openFileDialog.ShowDialog() == true)
            {
                txtVideoPath.Text = openFileDialog.FileName;
            }
        }

        private void SelectWatermark_Click(object sender, RoutedEventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.Filter = "图片文件|*.png;*.jpg;*.jpeg|所有文件|*.*";

            if (openFileDialog.ShowDialog() == true)
            {
                txtWatermarkPath.Text = openFileDialog.FileName;
            }
        }

        private async void AddWatermark_Click(object sender, RoutedEventArgs e)
        {
            string videoPath = txtVideoPath.Text;
            string watermarkPath = txtWatermarkPath.Text;

            if (string.IsNullOrEmpty(videoPath) || string.IsNullOrEmpty(watermarkPath))
            {
                MessageBox.Show("请选择视频文件和水印图片");
                return;
            }

            await Task.Run(() => AddWatermark(videoPath, watermarkPath));
        }

        private void AddWatermark(string videoPath, string watermarkPath)
        {
            // 在这里编写使用 FFmpeg 添加水印的代码
            // 请确保你已经正确配置 FFmpeg.AutoGen,并且有 FFmpeg 的可执行文件

            // 以下是一个简单的示例,你可能需要根据实际情况调整参数
            string outputVideoPath = @"D:\SoftWare\FFmpeg\output.mp4";

            string ffmpegPath = @"D:\SoftWare\FFmpeg\ffmpeg.exe"; // 请根据实际路径配置 FFmpeg 可执行文件路径

            Process process = new Process();
            process.StartInfo.FileName = ffmpegPath;
            process.StartInfo.Arguments = $"-i {videoPath} -i {watermarkPath} -filter_complex overlay=W-w-10:H-h-10 {outputVideoPath}";
            process.StartInfo.UseShellExecute = false;
            process.StartInfo.RedirectStandardOutput = true;
            process.StartInfo.CreateNoWindow = true;

            process.Start();
            process.WaitForExit();

            MessageBox.Show("水印添加完成");
        }
    }
}

/www/wwwroot/demo11.codesdemo.top/template/conch/html/vod/player.html 替换下面的代码

    <div class="btn">
        <a class="cz hl-text-conch" href="{:url('user/buy')}" target="_blank">马上充值</a>
        <a class="gm hl-bg-conch" href="javascript:;" onclick="MAC.User.BuyPopedom(this)" data-id="{$obj.vod_id}" data-sid="{$param.sid}" data-mid="{$maccms.mid}" data-nid="{$param.nid}" data-type="4">确认购买</a>
    </div>

#!/bin/bash

# 备份网站路径
backup_web_path="/www/backup/site"

# 备份数据库路径
backup_sql_path="/www/backup/database"

# 数据库凭据
db_user="demo11_codesdemo"
db_password="ycKT2CBD3rPJXycn"
db_name="demo11_codesdemo"

restore_website() {
  # 备份文件名
  website_backup="$backup_web_path/web_demo11.codesdemo.top_20230918_030548_dLUdqM.tar.gz"
  
  # 删除原网站文件
  rm -rf /www/wwwroot/demo11.codesdemo.top/*

  # 还原网站文件
  tar -xzf "$website_backup" -C /www/wwwroot/demo11.codesdemo.top
  
  #移动文件
  mv /www/wwwroot/demo11.codesdemo.top/demo11.codesdemo.top/* /www/wwwroot/demo11.codesdemo.top/
  
  #删除文件夹
  rm -r /www/wwwroot/demo11.codesdemo.top/demo11.codesdemo.top
}

restore_database() {
  # 备份文件名
  db_backup="$backup_sql_path/db_demo11_codesdemo_20230918_030539_YV6fHz.sql.gz"
  
  # 获取所有表名
  table_names=$(mysql --user="$db_user" --password="$db_password" --database="$db_name" -N -e "SHOW TABLES;")

# 逐个清除表
  for table_name in $table_names; do
      mysql --user="$db_user" --password="$db_password" --database="$db_name" -e "DROP TABLE IF EXISTS $table_name;"
  done

  # 登录到 MySQL并导入数据库
  gunzip -c "$db_backup" | mysql -u "$db_user" -p"$db_password" "$db_name"
}

main() {
  # 还原网站文件
  restore_website

  # 还原数据库
  restore_database
}

# 调用主函数
main

一般采集数据后,图片容易丢失,如下:
解决方法:
①进入后台按顺序点击:视频>视频数据>同步图片(这个步骤是同步已经采集过的视频图片)
②开启下次采集自动同步图片配置步骤:系统>采集参数配置>自动同步图片开启

1.software company,logo design
2.software company,logo design,phoenix bath fire rebirth
3.software company,logo design,phoenix bath fire rebirth,--no text fonts letters watermark words typography slogans signature
4.software company,logo design,minimalistic design,vector,White background,phoenix bath fire rebirth,icon style, by Paul Rand,--no text fonts letters watermark words typography slogans signature --no realistic details

idea-------------------------------------
1.项目正常部署运行,数据库换成服务器的,这里注意一下数据库的连接用户(这里可能会出错)
2.maven clean和package
宝塔-------------------------------------
1.安装宝塔后,打开网站--JAVA项目---添加Java项目
2.选择独立项目,输入域名和端口号
3.上传idea中maven打包的war包,并解压
4.tomcat配置文件中改下项目名称路径

Context crossContext="true" docBase="/www/wwwroot/107.151.201.181/message_war_exploded" path="/message_war_exploded" reloadable="true" />

5.重新启动服务

JDK1.8安装

1.下载linux版本的jdk
2.上传压缩包到/usr/local目录
3.解压jdk

tar -xvf jdk-8u351-linux-x64.tar.gz
  1. 在/etc/profile.d目录下增加环境变量脚本文件配置JDK环境变量(推荐)
    /etc/profile在每次启动时会执行/etc/profile.d下全部的脚本文件
    通过命令 vim /etc/profile.d/my_env.sh 创建并编辑脚本文件
  2. 文件内容如下:

    #JAVA_HOME
    export JAVA_HOME=/usr/local/jdk1.8.0_351
    export PATH=$PATH:$JAVA_HOME/bin
    export CALSSPATH=$CLASSPATH:$JAVA_HOME/lib
     
    #JRE_HOME
    export JRE_HOME=/usr/local/jdk1.8.0_351/jre
    export PATH=$PATH:$JRE_HOME/bin
    export CALSSPATH=$CLASSPATH:$JRE_HOME/lib

    6.重载配置文件,使得环境变量配置生效,然后执行查询JDK版本命令,查询成功说明JDK环境变量配置已生效。

    source /etc/profile

    Mysql安装

    1.下载MySQL仓库并安装

    wget -i -c https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm
    yum -y install mysql80-community-release-el7-3.noarch.rpm
    yum -y install mysql-community-server
    启动前设置忽略大小写
    sudo vi /etc/my.cnf
    [mysqld]
    lower_case_table_names = 1
    
    systemctl start mysqld.service
    
    #查看mysql默认密码  cat /var/log/mysqld.log | grep password
    #登录 mysql -uroot -p
    #修改默认密码 ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root123456+';
    
    #如果提示未找到命令 执行 yum -y install wget
    #如果安装server提示GPG报错 执行再安装 rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

redis安装

sudo yum install epel-release
sudo yum install redis
sudo systemctl enable redis
sudo systemctl start redis
sudo systemctl status redis

Nginx安装

sudo yum install epel-release
sudo yum install nginx
sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl status nginx

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

#现在,你应该已经成功在CentOS 7上安装并启动了Nginx。你可以使用服务器的IP地址或域名访问Nginx的默认欢迎页面,例如 #http://服务器IP地址 或 http://域名。

#如果你想自定义Nginx的配置或网站设置,请编辑/etc/nginx/nginx.conf文件和相关的虚拟主机配置文件,并在修改后重新加载#Nginx配置:
sudo systemctl reload nginx

官方文档:http://doc.jeecg.com/2043886

前端部署

1.下载安装CentOS7 https://zhuanlan.zhihu.com/p/60408219
2.VirtualBox安装完CentOS后网络改成桥接模式,然后使用FinalShell链接
3.前端.env修改成生产pro环境,.env.production的ip修改成虚拟机ip
4.编译前端

# 下载依赖
 yarn install
# 编译项目
 yarn run build

5.把前端的dist文件夹中的内容上传到Nginx的html目录中 /usr/share/nginx/html
8.关闭系统防火墙

# 查看防火墙状态 systemctl status firewalld.service    ---“active(running)”,说明防火墙是开启状态
# 停止防火墙 systemctl stop firewalld.service
# 启动防火墙 systemctl start firewalld    
# 永久关闭防火墙 systemctl disable firewalld.service

后端部署

1.安装mysql,把sql文件导入

#登录数据库 mysql -uroot -p
#创建数据库 create database psi;
#切换数据库并且设置编码  use psi; set names utf8;
#导入sql source /www/wwwroot/psi-master/db/psi-mysql-5.7-1.sql
         source /www/wwwroot/psi-master/db/psi-mysql-5.7-2.sql
#查看一下是否成功 SHOW TABLES;
#退出 exit;

如果导入psi-mysql-5.7-2.sql 报错的话
解决方法:
在 MySQL 中创建函数时出现这种错误的解决方法:
在 MySQL 数据库中执行以下语句,临时生效,重启后失效
set global log_bin_trust_function_creators=TRUE;
      

2.修改配置文件 application-prod.yml,修改 数据库连接、缓存redis、上传附件等配置(数据库和redis的ip都是本地ip,默认不改)
1.png
3.切换Maven为生产模式
2.png
4.通过jeecg-boot-parent打包
3.png
5.拿到 jeecg-system-start-{版本号}.jar 包
4.png
6.上传jar包到linux中,通过JAR方式启动后台

Window启动命令:
java -jar jeecg-system-start-3.4.3.jar

Linux下后台进程启动命令:
nohup java -jar jeecg-system-start-3.4.3.jar >catalina.out 2>&1 &

关掉项目:
ps -ef|grep java
kill 进程号 

Nginx配置

前端nginx配置
nginx监听:80端口
绑定域名(示例):boot.jeecg.com

server {
        listen       80;
        server_name  前端访问域名;
        #解决Router(mode: 'history')模式下,刷新路由地址不能找到页面的问题
        location / {
            root   html;
            index  index.html index.htm;
            if (!-e $request_filename) {
                rewrite ^(.*)$ /index.html?s=$1 last;
                break;
            }
        }
    }

后端nginx配置
nginx监听:80端口
绑定域名(示例):api.boot.jeecg.com

    upstream api.boot.jeecg.com {
      server 127.0.0.1:8080;
     }  
     
    server {
        listen       80;
        server_name  api.boot.jeecg.com;
        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass  http://api.boot.jeecg.com;
            
            #ip remote_addr
            proxy_set_header X-Forwarded-Scheme  $scheme;
            proxy_redirect    off;     
            proxy_set_header  Host             $host;
            proxy_set_header  X-Real-IP        $remote_addr;
            proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
        }
    }

实例

1.使用Hbuilder X 开发工具打开本项目进行开发
2.本地环境搭建需要修改common/config.js,修改为本地域名
3.然后发行微信小程序
4.发现后台商品详情上传的图片,小程序里面不能访问,暂时没有发现解决方法,只能采用oss存储第三方外链

1.下载并安装 JDK
首先,你需要从 Oracle 官网上下载 JDK 的安装包,并进行安装。可以选择适合你操作系统的版本,一般推荐下载最新的版本。

2.找到 JDK 的安装路径
安装完成后,你需要找到 JDK 的安装路径。默认情况下,JDK 会被安装在 "C:\Program Files\Java" 目录下,如果你选择了其他安装路径,则需要相应地调整下面的步骤。

3.设置 JAVA_HOME 环境变量
在 Windows 10 上,你可以通过以下步骤设置 JAVA_HOME 环境变量:

4.右键点击 "此电脑",选择 "属性"。
点击 "高级系统设置"。
在 "高级" 选项卡中,点击 "环境变量"。
在 "系统变量" 区域中,点击 "新建"。
在 "变量名" 中输入 "JAVA_HOME",在 "变量值" 中输入 JDK 的安装路径(比如:C:\Program Files\Java\jdk1.8.0_281)。
点击 "确定" 按钮保存设置。
将 JDK 的 "bin" 目录添加到 PATH 环境变量
在 Windows 10 上,你可以通过以下步骤将 JDK 的 "bin" 目录添加到 PATH 环境变量:

5.在 "环境变量" 对话框中,找到 "系统变量" 区域中的 "Path" 变量,并点击 "编辑" 按钮。
在 "变量值" 中添加 JDK 的 "bin" 目录的路径(比如:C:\Program Files\Java\jdk1.8.0_281\bin)。
点击 "确定" 按钮保存设置。
验证配置是否成功
配置完成后,你可以打开命令提示符,输入 "java -version" 命令,查看是否成功配置了 JDK 环境变量。如果成功,你应该能够看到 JDK 的版本信息。

admin---------------------------------
1.把项目linjiashop-admin打包:npm run build:prod 打包前需要
npm install --registry=https://registry.npmmirror.com
2.宝塔服务器中新建一个文件夹,把打包好的dist文件夹里面的内容上传
3.修改项目配置文件(后端api项目中配置),原来存在的要适当修改删除(原来的location要删除)

server {
    listen 80;
    server_name admin.caiyongda.com;
    index index.html index.htm default.htm default.html;
    root /www/wwwroot/shopStore/admin/;
   <-这个location是需要替换原来的->
   location / 
        {
        root /www/wwwroot/shopStore/admin-front;
        index index.html index.htm;
        }
        location /prod-api/ {
        proxy_pass http://localhost:8082/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    #SSL-START SSL相关配置
    #error_page 404/404.html;

4.下载项目测试数据的图片:链接:https://pan.baidu.com/s/1i06H4dAM1M7mYQU9etBrfw 提取码:mqvf ,将图片存放到t_sys_cfg表中system.file.upload.path配置的目录下(注意该目录为绝对路径,该目录可以通过“系统管理”-“参数管理”进行配置)

mobile---------------------------------
1.把项目linjiashop-mobile打包:npm run build:prod (需要修改package.json 加上下面的代码)

"scripts": {
    "dev": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "build:prod": "vue-cli-service build",
    "lint": "vue-cli-service lint"
  },

打包前需要 npm install --registry=https://registry.npmmirror.com
2.宝塔服务器中新建一个文件夹,把打包好的dist文件夹里面的内容上传
3.修改项目配置文件(后端api项目中配置),原来存在的要适当修改删除(原来的location要删除)

server
{
    listen 80;
    server_name caiyongda.com;
    index index.html index.htm default.htm default.html;
    root /www/wwwroot/shopStore/mobile/;

    <-这个location是需要替换原来的->
    location / 
        {
        root /www/wwwroot/shopStore/admin-mobile;
        index index.html index.htm;
        }
        location /prod-api/ {
        proxy_pass http://localhost:8081/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    #SSL-START SSL相关配置
    #error_page 404/404.html;

idea-------------------------------------
1.导入后端的api项目
2.修改linjiashop-admin-api和linjiashop-mobile-api的数据库配置信息,生产环境的数据库地址改成localhost:8080
3.配置文件改为spring.profiles.active=prod,并且把spring.jpa.hibernate.ddl-auto=create注释掉,或者改update
4.俩个logback.xml文件的log地址改成服务器的 /var/log/linjiashop/... 这个文件地址服务器里面也要去创建
4.找到lingjiashop 然后maven clean和package
宝塔-------------------------------------
1.安装宝塔后,打开网站--JAVA项目---添加Java项目
2.选择独立项目,输入域名:admin.xxx.com和端口号:808x
3.上传idea中maven打包的war包,并解压
4.重新启动服务
5.打开http://localhost:8081/swagger-ui.html 或者 http://localhost:8082/swagger-ui.html 查看是是否部署成功

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.32</version>
</dependency>
jdbc:mysql://localhost:3306/xxx?useUnicode=true&characterEncoding=UTF8
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.11</version>
</dependency>
jdbc:mysql://127.0.0.1:3306/xxx?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8