用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;

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 

结果:

猜你喜欢

转载自blog.csdn.net/winniezhang/article/details/132048674