用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;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ShellAPI;
type
TForm1 = 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;
var
Form1: TForm1;
implementation
{$R *.dfm}
function TForm1.GetDosCommand(Command: string): string;
begin
// 将命令转换为可执行的DOS命令
Result := 'cmd.exe /c ' + Command;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Command, SourceFile, TargetFile: string;
begin
// 显示打开文件对话框,选择源视频文件
if OpenDialog1.Execute then
SourceFile := OpenDialog1.FileName
else
Exit;
// 显示保存文件对话框,选择目标视频文件
if SaveDialog1.Execute then
TargetFile := SaveDialog1.FileName
else
Exit;
// 根据ComboBox的选项获取转换命令
case ComboBox1.ItemIndex of
0: Command := 'ffmpeg -i ' + SourceFile + ' -vcodec copy -f mpegts ' + TargetFile; // H264视频转ts视频流
1: Command := 'ffmpeg -i ' + SourceFile + ' -vcodec copy -f mp4 ' + TargetFile; // H264视频转mp4
2: Command := 'ffmpeg -i ' + SourceFile + ' -acodec copy -vcodec copy -f mp4 ' + TargetFile; // ts视频转mp4
3: Command := 'ffmpeg -i ' + SourceFile + ' -acodec copy -vcodec copy -f flv ' + TargetFile; // mp4视频转flv
4: 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格式 v2
else
ShowMessage('请选择一个转换格式');
Exit;
end;
// 将Edit1中的参数添加到命令中
if Trim(Edit1.Text) <> '' then
Command := 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
结果: