Delphi를 사용하여 일반적인 비디오 변환 도구를 작성하여 비디오 형식 변환을 더 쉽게 만듭니다.

TComboBox, TOpenDialog 및 TSaveDialog 구성 요소를 사용하여 변환 형식을 선택하고 소스 비디오 파일을 선택하고 대상 비디오 파일을 선택하는 Delphi로 작성된 간단한 비디오 형식 변환 프로그램입니다. 이 프로그램은 또한 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