unit Proga;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls,
Vcl.Imaging.pngimage;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit5: TEdit;
Edit4: TEdit;
Edit3: TEdit;
Edit2: TEdit;
Label5: TLabel;
Label4: TLabel;
Label3: TLabel;
Label2: TLabel;
Label1: TLabel;
Edit6: TEdit;
Edit7: TEdit;
Label6: TLabel;
Label7: TLabel;
Image1: TImage;
procedure Filter(Sender: TObject; var Key: Char);
procedure Start(Sender: TObject);
procedure BitRate(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure Size(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure Time(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure FrPerSec(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure AudioBitRate(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure VideoBitRate(Sender: TObject; var Key: Word; Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
var
Tm, eFPS, BR, Sz, aBR, vBR: Real;
Fr: Integer;
procedure TForm1.Filter(Sender: TObject; var Key: Char);
begin
if not(Key in ['0'..'9', ',', #8]) then
Key:= #0;
end;
procedure TForm1.FrPerSec(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if Edit2.Text <> then
eFPS:=StrToFloat(Edit2.Text)
else
eFPS:=23.976;
if Edit3.Text <> then
Tm:=StrToFloat(Edit3.Text)
else
Tm:=1;
Edit4.Text:=FloatToStr(Round(eFPS*Tm));
end;
procedure TForm1.Size(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if Edit1.Text <> then
Sz:=StrToFloat(Edit1.Text)
else
Sz:=0;
if Edit3.Text <> then
Tm:=StrToFloat(Edit3.Text)
else
Tm:=1;
Edit6.Text:= '0';
Edit7.Text:= '0';
Edit5.Text:= FloatToStr(Sz*8/Tm);
end;
procedure TForm1.Start(Sender: TObject);
begin
Sz:=StrToInt(Edit1.Text);
eFPS:=StrToFloat(Edit2.Text);
Tm:=StrToFloat(Edit3.Text);
Edit4.Text:=FloatToStr(Round(eFPS*Tm));
Edit5.Text:=FloatToStr(Sz*8/Tm);
end;
procedure TForm1.Time(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if Edit1.Text <> then
Sz:=StrToFloat(Edit1.Text)
else
Sz:=0;
if Edit2.Text <> then
eFPS:=StrToFloat(Edit2.Text)
else
eFPS:=23.976;
if Edit3.Text <> then
Tm:=StrToFloat(Edit3.Text)
else
Tm:=1;
Edit4.Text:=FloatToStr(Round(eFPS*Tm));
Edit5.Text:=FloatToStr(Sz*8/Tm);
end;
procedure TForm1.BitRate(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if Edit1.Text <> then
Sz:=StrToFloat(Edit1.Text)
else
Sz:=0;
if Edit3.Text <> then
Tm:=StrToFloat(Edit3.Text)
else
Tm:=1;
if Edit5.Text <> then
BR:=StrToFloat(Edit5.Text)
else
BR:=1;
Edit6.Text:='0';
Edit7.Text:='0';
Edit1.Text:=FloatToStr((Br/8)*Tm);
end;
procedure TForm1.VideoBitRate(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Edit3.Text <> then
Tm:= StrToFloat(Edit3.Text)
else
Tm:= 1;
if Edit5.Text <> then
BR:= StrToFloat(Edit5.Text)
else
BR:= 0;
if Edit7.Text <> then
vBR:= StrToFloat(Edit7.Text)
else
vBR:= 0;
Edit6.Text:= FloatToStr(BR-vBR);
end;
procedure TForm1.AudioBitRate(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Edit3.Text <> then
Tm:= StrToFloat(Edit3.Text)
else
Tm:= 1;
if Edit5.Text <> then
BR:= StrToFloat(Edit5.Text)
else
BR:= 0;
if Edit6.Text <> then
aBR:= StrToFloat(Edit6.Text)
else
aBR:= 0;
Edit7.Text:= FloatToStr(BR-aBR)
end;
end.
Прошлый там >>1169486
Знания:
https://github.com/pituz/webm-thread/wiki
https://wiki.installgentoo.com/index.php/WebM
https://8ch.net/webm/res/2573.html
Тулзы:
https://kagami.github.io/webm.js/
https://gitgud.io/nixx/WebMConverter
https://ffmpeg.org/download.html
Ограничения:
WEBM / MP4
20Mb
:3