PDA

View Full Version : سوال: کپی قسمتی از فایل صوتی در فایل صوتی دیگر



mbshareat
یک شنبه 19 آذر 1391, 17:49 عصر
سلام
آیا ممکن هست که قسمتی از یه فایل Mp3 یا Wav رو مثلا از میلی ثانیه فلان تا فلان کپی بگیریم بریزیم در انتهای یه فایل صوتی دیگه؟
دوستم امروز یه فایل صوتی بهم داد که سه بار تکرارش کنم.
برنامه صوتی داریم که بشه کپی گرفت و سه بار در یه فایل جدید الصاق کرد اما ممکنه آدم حواسش پرت شه تعداد رو اشتباه کنه یا محل مناسب رو کپی نگیره و تداخل محدوده پیش بیاد.
أیا کسی راهی سراغ داره که من قسمتی از فایل رو بگیرم وبه انتهای یه فایل صوتی که تقریبا خالیه اضافه کنم؟

BORHAN TEC
یک شنبه 19 آذر 1391, 18:13 عصر
سلام
باز مهم من اومدم با معرفی یک لینک انگلیسی دیگه!!! :لبخند:
اگر به تاپیک زیر نگاهی بیاندازی بدون شک مشکلت حل میشه:
http://stackoverflow.com/questions/6263680/how-to-mix-mp3-files

mbshareat
یک شنبه 19 آذر 1391, 21:28 عصر
یک لینک انگلیسی
وای! وای!
انگلیسی صفر کیلومترم. نکنه باید کامپوننت استفاده کنم؟ یه کد ساده (مثلا دوخطی!!!) نداره؟

BORHAN TEC
یک شنبه 19 آذر 1391, 22:03 عصر
یه کد ساده (مثلا دوخطی!!!) نداره؟
همین الان یه روش خیلی با حال اختراع کردم که واقعاً جواب داد! باور می کنی؟؟؟ :متعجب::قهقهه:
من از کد زیر برای این کار استفاده کردم:
procedure TForm4.Button1Click(Sender: TObject);
var
m, m2: TMemoryStream;
begin
m := TMemoryStream.Create;
m2 := TMemoryStream.Create;
try
m.LoadFromFile('D:\music2\1.mp3');
m2.LoadFromFile('D:\music2\2.mp3');
m.Position := m.Size;
m.CopyFrom(m2, m2.Size);
m.SaveToFile('c:\3.mp3');
finally
m.Free;
m2.Free;
end;
end;

Felony
دوشنبه 20 آذر 1391, 04:28 صبح
همین الان یه روش خیلی با حال اختراع کردم که واقعاً جواب داد! باور می کنی؟؟؟
:لبخندساده: بهتره در مورد ساختار فايل ها تحقيق كنيد ، اين موضوع عجيبي نيست ، تا جايي كه يادمه تو بخش نمونه سورس ها تو صفحات اول هم همچين نمونه كدي وجود داشت .

mbshareat
دوشنبه 20 آذر 1391, 08:23 صبح
سلام

واقعاً جواب داد

مثلا از میلی ثانیه فلان تا فلان کپی بگیریم
من میخوام موقعیت کپی رو بر حسب میلی ثانیه تعیین کنم و قسمتی از وسط فایل رو کپی کنم.

بهتره در مورد ساختار فايل ها تحقيق كنيد
من که نمیخوام به طور حرفه ای برای خوندن و نوشتن فایل صوتی برنامه بنویسم.راستش نمی دونم چی رو جستجو بدم دیشب کلی جستجو کردم اما به نتیجه نرسیدم.آیا راهی هست که با داشتن Position از شیء MediaPlayer به موقعیت در فایل دست پیدا کنیم.آیا اگر بشه اون وقت میشه به سادگی از روش آقای عشایری استفاده کرد یا فوت وفنی داره؟

Felony
دوشنبه 20 آذر 1391, 08:36 صبح
من که نمیخوام به طور حرفه ای برای خوندن و نوشتن فایل صوتی برنامه بنویسم.
پشنهاد مطالعه در مورد ساختار فایل ها برای این بود که بدونید چرا این نوع فایل ها به این سادگی قابل تغییر هستند .


.آیا راهی هست که با داشتن Position از شیء MediaPlayer به موقعیت در فایل دست پیدا کنیم.آیا اگر بشه اون وقت میشه به سادگی از روش آقای عشایری استفاده کرد یا فوت وفنی داره؟
نه به این سادگی نیست ، وقتی بخواین به ثانیه خاصی به اون شیوه ( Position در Stream ) برید مباحثی مثل Bit Rate فایل صوتی و فرمت فایل ( مثلا فایل های MP3 فشرده هستند ) مطرح میشه .

mbshareat
دوشنبه 20 آذر 1391, 10:04 صبح
از صحت این کد اطمینان ندارم(از این آدرس (http://stackoverflow.com/questions/5757707/how-to-get-mp3-file-bitrate-delphi) شبیه این کد رو برداشتم):

Function M3BitRate(FileName:String):Integer;
const
BIT_RATE_TABLE: array [0..15] of Integer =
(0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 0);

var
B: Byte;
begin
with TFileStream.Create(FileName, fmOpenRead) do begin
try
Position := 0;
repeat
Read(B, 1);
until B = 255;
Position := Position + 1;
Read(B, 1);
Result:=BIT_RATE_TABLE[B shr 4];
finally
Free;
end;
end;
End;
procedure TForm1.FormCreate(Sender: TObject);
begin
ShowMessage(IntToStr(M3BitRate('C:\bset017.mp3'))) ;
end;

BitRate همون تعداد بیت در ازای هر میلی ثانیه هست؟
اگه این مقدار رو بدست بیاریم به راحتی میتونیم قسمتی از فایل رو کپی کنیم؟در ابتدای فایل Mp3 چند بایت اطلاعات در مورد نوع فایل و اطلاعات جانبی و توضیحی هست که در پیدا کردن موقعیت باید اونها رو هم رد کنیم(یعنی به میلی ثانیه ضرب در BitRate اضافه کنیم)؟

Felony
دوشنبه 20 آذر 1391, 10:15 صبح
ساختار فایل های Wav و MP3 متفاوت هست ، اگر هدف خوندن Bit Rate باشه بهتره یک ساختار متناسب با فرمت فایل مورد نظر با توجه به توضیحات توسعه دهندگان اون فرمت برای دلفی پیاده کنید تا به دیگر خصوصیات فایل هم دسترسی داشته باشید و هدر فایل رو با توجه به فرمت تعریف شده بخونی ، پست آخر همون لینکی که دادی هم این موضوع رو گفته .


BitRate همون تعداد بیت در ازای هر میلی ثانیه هست؟

Bitrate, as the name implies, describes the rate at which bits are transferred from one location to another. In other words, it measures how much data is transmitted in a given amount of time. Bitrate is commonly measured in bits per second (bps), kilobits per second (Kbps), or megabits per second (Mbps).

اطلاعات بیشتر :
http://en.wikipedia.org/wiki/Bit_rate