用Delphi编写一个通用视频转换工具,让视频格式转换变得更简单
用Delphi编写的简单视频格式转换程序,它使用TComboBox、TOpenDialog和TSaveDialog组件来选择转换格式、选择源视频文件和选择目标视频文件。程序还使用TEdit组件允许用户输入参数,然后将这些组件中的信息拼接成转换命令并在DOS窗口中运行它。
procedure TForm1.FormCreate(Sender: TObject);
begin// 添加选项到ComboBox下拉框中ComboBox1.Items.Add('H264视频转ts视频流');ComboBox1.Items.Add('H264视频转mp4');ComboBox1.Items.Add('ts视频转mp4');ComboBox1.Items.Add('mp4视频转flv');ComboBox1.Items.Add('转换文件为3GP格式');ComboBox1.Items.Add('转换文件为3GP格式 v2');
end;
unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, ShellAPI;typeTForm1 = class(TForm)ComboBox1: TComboBox;Button1: TButton;OpenDialog1: TOpenDialog;SaveDialog1: TSaveDialog;Edit1: TEdit;Edit2: TEdit;Label1: TLabel;Label2: TLabel;procedure Button1Click(Sender: TObject);private{ Private declarations }function GetDosCommand(Command: string): string;public{ Public declarations }end;varForm1: TForm1;implementation{$R *.dfm}function TForm1.GetDosCommand(Command: string): string;
begin// 将命令转换为可执行的DOS命令Result := 'cmd.exe /c ' + Command;
end;procedure TForm1.Button1Click(Sender: TObject);
varCommand, SourceFile, TargetFile: string;
begin// 显示打开文件对话框,选择源视频文件if OpenDialog1.Execute thenSourceFile := OpenDialog1.FileNameelseExit;// 显示保存文件对话框,选择目标视频文件if SaveDialog1.Execute thenTargetFile := SaveDialog1.FileNameelseExit;// 根据ComboBox的选项获取转换命令case ComboBox1.ItemIndex of0: Command := 'ffmpeg -i ' + SourceFile + ' -vcodec copy -f mpegts ' + TargetFile; // H264视频转ts视频流1: Command := 'ffmpeg -i ' + SourceFile + ' -vcodec copy -f mp4 ' + TargetFile; // H264视频转mp42: Command := 'ffmpeg -i ' + SourceFile + ' -acodec copy -vcodec copy -f mp4 ' + TargetFile; // ts视频转mp43: Command := 'ffmpeg -i ' + SourceFile + ' -acodec copy -vcodec copy -f flv ' + TargetFile; // mp4视频转flv4: Command := 'ffmpeg -y -i ' + SourceFile + ' ' + Edit1.Text + ' ' + TargetFile; // 转换文件为3GP格式 5: Command := 'ffmpeg -y -i ' + SourceFile + ' -ac 1 -acodec libamr_nb -ar 8000 -ab 12200 -s 176x144 -b 128 -r 15 ' + TargetFile; // 转换文件为3GP格式 v2elseShowMessage('请选择一个转换格式');Exit;end;// 将Edit1中的参数添加到命令中if Trim(Edit1.Text) <> '' thenCommand := Command + ' ' + Edit1.Text;// 在DOS窗口中运行转换命令Command := GetDosCommand(Command);ShellExecute(Handle, 'open', 'cmd.exe', PChar(Command), nil, SW_HIDE);
end;end.
在上述代码中,我们使用TComboBox组件允许用户选择转换格式,使用TOpenDialog和TSaveDialog组件选择源视频和目标视频文件,并使用TEdit组件允许用户输入参数。在Button1的OnClick事件中,我们根据ComboBox的选项获取要执行的转换命令,并将Edit1中的参数添加到命令中。最后,我们在DOS窗口中运行转换命令。
按下图操作:C:\delphisource\mytools\runpythoncode\Unit1.pas

比如选择mp4转flv类型生成的命令如下:
C:\Users\86182\AppData\Local\JianyingPro\Apps\4.3.1.10241\ffmpeg.exe -i "C:\myApp\deepfakelivetemp\DeepFaceLive_NVIDIA\_internal\DeepFaceLive\build\samples\Asian woman.mp4" -acodec copy -vcodec copy -f flv C:\myimages\outputs\output.flv
结果:

相关文章:
用Delphi编写一个通用视频转换工具,让视频格式转换变得更简单
用Delphi编写的简单视频格式转换程序,它使用TComboBox、TOpenDialog和TSaveDialog组件来选择转换格式、选择源视频文件和选择目标视频文件。程序还使用TEdit组件允许用户输入参数,然后将这些组件中的信息拼接成转换命令并在DOS窗口中运行它。 procedure…...
Kafka系列之:安装Know Streaming详细步骤
Kafka系列之:安装Know Streaming详细步骤 一、相关技术博客二、安装elasticsearch1.下载elasticsearch2.创建数据目录3.创建es用户4.修改最大文件数5.解压elasticsearch6.赋予es用户目录权限7.修改es配置8.切换es用户启动elasticsearch三、安装KnowStreaming1.下载KnowStreami…...
绝杀 GETPOST 嵌套的 JSON 参数
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于Web应用程序中的数据传输。在HTTP数据包信息传递时,JSON扮演着非常正常的角色,因为它是一种通用的数据格式,可以被多种编程语言和应用程…...
Spring 项目过程及如何使用 Spring
文章目录 1.创建 Spring 项目步骤1.1 创建 Maven 项目1.2添加 Spring 框架支持1.3 添加启动项2.如何使用 Spring2.1 存储 Bean 对象2.1.1 创建 Bean对象2.1.2 将 Bean对象注册到容器中 2.2 获取并使用 Bean对象2.2.1 使用 ApplicationContext 获取对象2.2.2 使用 BeanFactory 获…...
信息学奥赛一本通——1258:【例9.2】数字金字塔
文章目录 题目【题目描述】【输入】【输出】【输入样例】【输出样例】 AC代码 题目 【题目描述】 观察下面的数字金字塔。写一个程序查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以从当前点走到左下方的点也可以到达右下方的点。 在上面…...
selenium官网文档阅读总结(day 2)
1.selenium元素定位方法 1.1selenium命令 当我们使用chormdriver打开网页后,接下来就要用python操作元素,模拟用户会作出的操作,这些操作元素的方法就是命令。比如 (1) click:点击(按钮,单选框ÿ…...
VMware虚拟机安装VMware tools
一、挂载光驱 执行以下命令来创建 /mnt/cdrom 目录: mkdir -p /mnt/cdrom-p 参数会确保如果 /mnt/cdrom 的上级目录(例如 /mnt)不存在的话也会被创建。 然后,你可以再次尝试挂载光盘: mount /dev/sr0 /mnt/cdrom这次…...
【Linux命令200例】rm用来删除文件或目录(谨慎使用)
🏆作者简介,黑夜开发者,全栈领域新星创作者✌,阿里云社区专家博主,2023年6月csdn上海赛道top4。 🏆本文已收录于专栏:Linux命令大全。 🏆本专栏我们会通过具体的系统的命令讲解加上鲜…...
行云管家荣获CFS第十二届财经峰会 “2023产品科技创新奖”
7月26日至27日,CFS第十二届财经峰会暨2023可持续商业大会在京盛大召开。峰会主题为“激活高质量发展澎湃活力”,超1000位政商领袖、专家学者、企业及媒体代表出席了本次盛会,共同分享新技术新产品新趋势、研判全球新挑战与新变局下企业的机遇…...
uniapp禁止页面滚动
用 touchmove.stop.prevent“moveHandle”,moveHandle 可以用来处理 touchmove 的事件,也可以是一个空函数。 <viewclass“mask” touchmove.stop.prevent“moveHandle”>...
ModuleNotFoundError: No module named ‘_sqlite3‘
前言 遇到报错信息如下: ModuleNotFoundError: No module named _sqlite3解决方式 参考解决方式: https://blog.csdn.net/jaket5219999/article/details/53512071 find / -name _sqlite*.socp /usr/lib64/python3.6/lib-dynload/_sqlite3.cpython-36…...
Rust的入门篇(下)
这篇博客是rust入门篇下 45. 生命周期注释 // 生命周期// 下面代码不能通过编译 // longer 函数取 s1 和 s2 两个字符串切片中较长的一个返回其引用值 // 返回值引用可能会返回过期的引用 // fn longer(s1: &str, s2: &str) -> &str { // if s2.len() >…...
PYTHON-logging-工具类-支持中文字符控制台输出和文件写入-不会导致乱码
import logging import sys import os import time from logging.handlers import RotatingFileHandler import iodef get_logger(tag):# 创建一个新的输出流,并指定编码为UTF-8sys.stdout io.TextIOWrapper(sys.stdout.buffer, encodingutf-8)accPath logsif not…...
对gpt的简单认识
1.gpt是什么? GPT(Generative Pre-trained Transformer 生成式预训练Transformer模型)是一种基于Transformer架构的预训练语言模型,由OpenAI开发。GPT模型以无监督学习的方式使用大规模语料库进行预训练,并具有生成文…...
java类和对象详解(1)
面向对象的初步认知 什么是面向对象 Java是一门纯面向对象的语言(Object Oriented Program, 简称OOP),在面向对象的世界里,一切皆为对象。面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。 用面向对象的思想来涉及程序,更…...
RxJava 倒计时,轮询器
笔记 倒计时 /*** 短信倒计时** param s*/private Subscription subscription30;public void startCountdownFinishRx30(int s) {clearFinishSubscription30();subscription30 Observable.interval(0, 1, TimeUnit.SECONDS).take(s 1).map(new Func1<Long, Long>() {O…...
SE-Net注意力机制
📌本次任务:了解SE-Net原理 SE-Net 是 ImageNet 2017(ImageNet 收官赛)的冠军模型,是由WMW团队发布。具有复杂度低,参数少和计算量小的优点。且SENet 思路很简单,很容易扩展到已有网络结构如 Inception 和 ResNet 中。(这篇论文是2019年的,应该是后续做了更新) 一…...
【Lua学习笔记】Lua进阶——垃圾回收
按照唐老师的课程本来要讲自带库的,但是想想这东西能看文档,ctrl左键还能看注解,并且最重要的许多自带库的方法基本大部分语言都有,其实看看就能懂了。所以还是重点讲讲垃圾回收 文章目录 GC辅助垃圾回收collectgarbage增量模式分…...
session和cookie
cookie和session结合使用 web开发发展至今,cookie和session的使用已经出现了一些非常成熟的方案。在如今的市场或者企业里,一般有两种存储方式: 1、存储在服务端:通过cookie存储一个session_id,然后具体的数据则是保…...
P7243 最大公约数
题目 思路 利用曼哈顿原理求离(x,y)最远的点 代码 #include<bits/stdc.h> using namespace std; #define int long long #define INF 0x3f3f3f3f const int maxn2005; int gcd(int a,int b) { return b?gcd(b,a%b):a; } int n,m; i…...
别再死记硬背ATT报文了!用Wireshark抓包实战,带你搞懂BLE通信里Handle和UUID的映射过程
实战拆解BLE通信:用Wireshark透视Handle与UUID的动态映射 当你第一次看到BLE设备通信时,那些十六进制数字在屏幕上闪烁,就像在看天书。Handle、UUID、ATT报文——这些概念在文档里写得清清楚楚,但真正抓包分析时,却总感…...
SeqGPT-560M部署教程:Linux服务器环境配置+GPU驱动适配完整指南
SeqGPT-560M部署教程:Linux服务器环境配置GPU驱动适配完整指南 1. 项目概述 SeqGPT-560M是一个专门为企业级信息抽取需求设计的高性能AI系统。与常见的聊天模型不同,这个系统专注于从非结构化文本中精准提取关键信息,比如人名、公司名称、时…...
BGE-M3快速入门:多语言文本相似度分析从零到一
BGE-M3快速入门:多语言文本相似度分析从零到一 1. 引言:从“关键词匹配”到“语义理解” 你有没有遇到过这样的场景?在搜索引擎里输入“苹果”,结果既出现了水果,也出现了手机公司。或者,你想找“如何学习…...
ChatGLM3-6B-128K部署指南:Ollama环境配置避坑大全
ChatGLM3-6B-128K部署指南:Ollama环境配置避坑大全 本文面向需要处理长文本任务的开发者和研究者,手把手教你如何快速部署ChatGLM3-6B-128K模型,避开环境配置中的常见坑点。 1. 环境准备与快速部署 在开始部署之前,我们先简单了解…...
FLUX.1-dev实战教程:像素幻梦中多LoRA叠加与风格混合生成技巧
FLUX.1-dev实战教程:像素幻梦中多LoRA叠加与风格混合生成技巧 1. 像素幻梦工坊简介 Pixel Dream Workshop(像素幻梦工坊)是基于FLUX.1-dev扩散模型构建的专业像素艺术生成工具。与传统AI绘图工具不同,它专为像素艺术创作优化&am…...
MedGemma 1.5开源医疗模型:本地化部署满足等保2.0三级与GDPR双合规要求
MedGemma 1.5开源医疗模型:本地化部署满足等保2.0三级与GDPR双合规要求 1. 项目概述与核心价值 MedGemma 1.5是基于Google Gemma架构开发的医疗专用AI模型,专门针对医学问答、病理分析和术语解释场景优化。这个4B参数规模的模型经过PubMed、MedQA等专业…...
智能网联汽车(CAV)缩略语大全:从C-V2X到VRUCW,一文搞懂所有专业术语
智能网联汽车(CAV)术语全解析:从技术原理到场景应用 在智能交通系统快速发展的今天,智能网联汽车(Connected-Automated Vehicle, CAV)已经成为行业变革的核心驱动力。无论是汽车工程师、软件开发人员还是交通规划者,都需要掌握这一领域的关键…...
LingBot-Depth实操手册:Gradio API返回JSON结构解析与字段含义
LingBot-Depth实操手册:Gradio API返回JSON结构解析与字段含义 1. 引言:为什么需要了解API返回结构 当你使用LingBot-Depth处理深度图像时,最让人困惑的可能就是API返回的那一串JSON数据。这些数据到底代表什么?每个字段有什么含…...
华三路由器远程管理全攻略:Telnet/SSH/FTP三种方式配置避坑指南
华三路由器远程管理全攻略:Telnet/SSH/FTP三种方式配置避坑指南 当你面对一台全新的华三路由器时,远程管理配置往往是第一个需要解决的问题。作为运维人员,我们既需要考虑操作便捷性,又必须兼顾安全性。本文将带你深入探索Telnet、…...
某高校学生考微软MOS认证加学分
临近毕业季,到底是谁的学分还没有修够?微软MOS认证证书也可以加学分,每天学习两个小时,一周就可以完成考试,当天就出证书!📌关于难度选择版本难度:2016 < 2019 < 365ÿ…...
