Rumah >pembangunan bahagian belakang >tutorial php >PHP Master | Ekstrak petikan dari fail wav

PHP Master | Ekstrak petikan dari fail wav

Jennifer Aniston
Jennifer Anistonasal
2025-02-24 10:39:14841semak imbas

PHP Master | Extract an Excerpt from a WAV File

Walaupun PHP dikenali untuk membina laman web dan aplikasi, ia mempunyai lebih banyak daripada itu. Saya baru -baru ini perlu mengekstrak audio secara dinamik dari fail WAV dan membolehkan pengguna memuat turunnya melalui penyemak imbas. Saya cuba mencari perpustakaan yang sesuai dengan keperluan saya, tetapi saya tidak berjaya dan terpaksa menulis kod saya sendiri. Ini adalah peluang yang baik untuk menggali struktur fail WAV. Dalam siaran ini, saya akan menggariskan format fail WAV secara ringkas dan menerangkan perpustakaan yang saya usahakan: Audero WAV Extractor.

mata utama

    Format fail audio gelombang (WAV) adalah standard yang digunakan oleh Microsoft untuk menyimpan data audio digital dan terdiri daripada blok yang mewakili bahagian yang berlainan dari fail audio. "Riff", "FMT" dan "Data" adalah blok yang paling penting.
  • Audero WAV Extractor adalah perpustakaan PHP yang membolehkan pengekstrakan serpihan dari fail WAV. Ia memerlukan Php 5.3 atau lebih baru, dan boleh menyimpan serpihan ke cakera keras tempatan, memuat turunnya melalui penyemak imbas pengguna, atau mengembalikannya sebagai rentetan untuk pemprosesan kemudian.
  • Perpustakaan Extractor Audero WAV mengandungi kaedah seperti
  • ,
  • , dan downloadChunk() untuk menguruskan proses pengekstrakan. Setiap kaedah memerlukan pengekstrakan parameter permulaan dan akhir serpihan. saveChunk() getChunk() Tempoh fail WAV boleh dikira menggunakan formula berikut:
  • . Maklumat ini, bersama -sama dengan data penting lain, boleh diambil dari blok "data" dan "FMT" fail WAV.
  • <code>time = dataChunkSize / (sampleRate * channelsNumber * bitsPerSample / 8)</code>
Gambaran Keseluruhan Format WAV

Format fail audio gelombang, juga dikenali sebagai Wave atau WAV, adalah standard format fail yang digunakan oleh Microsoft untuk menyimpan data audio digital. Fail WAV terdiri daripada satu set pelbagai jenis blok yang mewakili bahagian yang berlainan dari fail audio. Anda boleh memikirkan format ini sebagai halaman HTML: Blok pertama adalah seperti bahagian <section></section> halaman web, jadi di dalamnya anda dapat menemui beberapa maklumat mengenai fail itu sendiri, sementara blok yang mengandungi data audio itu sendiri adalah Terletak di bahagian . Dalam kes ini, "Blok" merujuk kepada bahagian data yang terkandung dalam fail. Blok format yang paling penting adalah "riff", yang mengandungi bilangan bait fail; Setiap blok mesti mempunyai sekurang -kurangnya dua bidang: Id dan saiz. Di samping itu, setiap WAV yang sah mesti mempunyai sekurang -kurangnya dua blok: FMT dan data. Yang pertama biasanya pada permulaan fail, tetapi selepas riff. Setiap blok mempunyai format dan medan sendiri, dan satu bidang membentuk sub-bahagian blok. Format WAV tidak ditentukan sepenuhnya pada masa lalu, yang menyebabkan fail mempunyai tajuk yang tidak mematuhi peraturan. Oleh itu, apabila anda bekerja pada audio, anda mungkin mendapati bahawa fail mempunyai satu atau lebih bidang, dan bahkan bidang yang paling penting ditetapkan kepada nilai sifar atau salah. Untuk memberi anda idea tentang apa yang ada di dalam blok, blok pertama setiap fail WAV adalah riff. 4 bait pertama mengandungi rentetan "riff", dan 4 bait seterusnya mengandungi saiz fail tolak 8 bait yang digunakan oleh kedua -dua bahagian data ini. 4 bait terakhir blok riff mengandungi rentetan "gelombang". Anda mungkin meneka apa tujuan data ini. Dalam kes ini, anda boleh menggunakannya untuk mengenal pasti sama ada fail yang anda parsing sebenarnya adalah fail WAV, seperti yang saya lakukan dalam kaedah <section></section> kelas WAV perpustakaan. Satu lagi perkara yang menarik untuk dijelaskan ialah cara mengira tempoh fail WAV. Semua maklumat yang anda perlukan boleh diambil dari dua blok yang diperlukan sebelum ini, iaitu: saiz blok data, kadar persampelan, bilangan saluran, dan bilangan bit setiap sampel. Formula untuk mengira masa fail (dalam saat) adalah seperti berikut: setFilePath()

<code>time = dataChunkSize / (sampleRate * channelsNumber * bitsPerSample / 8)</code>
Katakan kita mempunyai:

<code>dataChunkSize = 4498170
sampleRate = 22050
channelsNumber = 16
bitsPerSample = 1</code>
Gunakan nilai -nilai ini ke formula dan kami mendapat:

<code>time = 4498170 / (22050 * 1 * 16 / 8)</code>
Hasilnya ialah 102 saat (bulat). Penjelasan mendalam tentang struktur fail WAV adalah di luar skop artikel ini. Jika anda ingin mengkajinya lebih jauh, baca halaman ini yang saya hadapi semasa berurusan dengan ini:

  • https://www.php.cn/link/21c1da87c1afdd4ed2836bdb521bea78
  • https://www.php.cn/link/3493d96f8fcb16313a77ecfd294734c9

Apa itu Audero Wav Extractor

Audero WAV Extractor adalah perpustakaan PHP yang membolehkan anda mengekstrak serpihan dari fail WAV. Anda boleh menyimpan serpihan yang diekstrak ke cakera keras tempatan anda, memuat turunnya melalui penyemak imbas pengguna, atau mengembalikannya sebagai rentetan untuk pemprosesan kemudian. Satu -satunya keperluan khas untuk perpustakaan ini ialah Php 5.3 atau lebih baru kerana ia menggunakan ruang nama. Semua kelas perpustakaan berada di direktori Wavextractor, tetapi anda akan melihat bahawa terdapat direktori loader tambahan di mana anda boleh mencari autoloader perpustakaan. Titik masuk pemaju adalah kelas Auderowavextractor, yang mempunyai tiga kaedah utama dalam projek:

  • downloadChunk(): Muat turun klip
  • saveChunk(): Simpan ke cakera keras
  • getChunk(): Cari serpihan sebagai rentetan

Dua parameter pertama dari semua kaedah ini adalah sama: $start dan $end, yang mewakili masa permulaan dan akhir (dalam milisaat) bahagian yang akan diekstrak, masing -masing. Di samping itu, downloadChunk() dan saveChunk() menerima parameter ketiga pilihan untuk menetapkan nama serpihan yang diekstrak. Jika tiada nama disediakan, kaedah ini menghasilkan nama itu sendiri dalam format "InputFileName-start-end.wav". Dalam direktori Wavextractor, terdapat dua subfolder: utiliti, yang mengandungi kelas penukar dengan kaedah utiliti tertentu; Yang terakhir mengandungi kelas wav, bahagian, dan chunkfield. Yang pertama, seperti yang anda harapkan, mewakili fail WAV, yang terdiri daripada satu atau lebih blok (jenis bahagian). Kelas ini membolehkan anda mengambil tajuk WAV, tempoh audio, dan beberapa maklumat berguna yang lain. Kaedah yang paling penting ialah getWavChunk(), yang mengambil bahagian audio yang ditentukan dengan membaca bait dalam fail. Kelas Chunk mewakili blok fail WAV yang dilanjutkan oleh kelas khusus yang terkandung dalam folder Chunk. Yang terakhir ini tidak menyokong semua jenis blok yang sedia ada, hanya jenis blok yang paling penting. Bahagian yang tidak dikenali diuruskan oleh kelas umum dan hanya diabaikan sepanjang proses. Kelas terakhir yang diterangkan ialah Chunkfield. Seperti yang saya katakan, setiap blok mempunyai jenis dan medan sendiri, dan setiap bidang mempunyai panjang yang berbeza (dalam bait) dan format. Ini adalah mesej yang sangat penting kerana anda perlu lulus parameter yang betul untuk menghuraikan bait dengan betul menggunakan fungsi PHP pack() dan unpack(), jika tidak, anda akan menerima ralat. Untuk membantu menguruskan data, saya memutuskan untuk membungkusnya ke dalam kelas yang memegang format, saiz, dan nilai setiap bidang.

cara menggunakan pengekstrakan wav audero

Anda boleh mendapatkan "Audero Wav Extractor" melalui komposer, tambahkan baris berikut ke fail composer.json anda dan jalankan arahan pemasangannya:

<code>time = dataChunkSize / (sampleRate * channelsNumber * bitsPerSample / 8)</code>

Komposer akan memuat turun dan meletakkan perpustakaan dalam direktori vendor/audero projek. Sebagai alternatif, anda boleh memuat turun perpustakaan secara langsung dari repositori. Untuk mengekstrak serpihan dan muat turun ke pelayar pengguna, anda akan menulis kod yang serupa dengan yang berikut:

<code>time = dataChunkSize / (sampleRate * channelsNumber * bitsPerSample / 8)</code>

Pada baris pertama, saya memasukkan autoloader komposer dan kemudian tetapkan nilai yang akan saya gunakan. Seperti yang anda lihat, saya menyediakan fail sumber, laluan output termasuk nama fail, dan julat masa yang saya mahu ekstrak. Kemudian saya membuat contoh AuderowaveXtractor, mengambil fail sumber sebagai parameter, dan memanggil kaedah downloadChunk(). Perhatikan bahawa kerana laluan output diluluskan dengan rujukan, anda sentiasa perlu menetapkannya sebagai pembolehubah. Mari lihat contoh lain. Saya akan menunjukkan kepada anda bagaimana untuk memilih julat masa dan simpan fail ke cakera keras tempatan anda. Juga, saya akan menggunakan autoloader yang termasuk dalam projek ini.

<code>dataChunkSize = 4498170
sampleRate = 22050
channelsNumber = 16
bitsPerSample = 1</code>

Selain konfigurasi loader, coretan kod ini sangat mirip dengan coretan kod sebelumnya. Malah, saya hanya membuat dua perubahan: yang pertama adalah kaedah yang dipanggil, saveChunk() bukannya downloadChunk(), dan yang kedua ialah saya tidak menetapkan nama fail output (ia akan menggunakan format lalai yang dijelaskan sebelumnya).

Kesimpulan

Dalam siaran ini, saya menunjukkan kepada anda "Audero WAV Extractor" dan bagaimana dengan mudah mengekstrak satu atau lebih serpihan dari fail WAV yang diberikan. Saya menulis perpustakaan untuk projek kerja yang memerlukan satu set jubin yang sangat sempit, jadi jika WAV atau tajuknya sangat rosak, perpustakaan mungkin gagal, tetapi saya menulis kod untuk mencuba jika mungkin pulih dari kesilapan. Jangan ragu untuk menggunakan demo dan fail yang terkandung dalam repositori, kerana saya telah mengeluarkannya di bawah lesen CC By-NC 3.0.

(Berikut adalah karya pseudo-asal di bahagian FAQ yang asal, yang mengekalkan makna asal dan menyesuaikan bahasa)

FAQs (FAQ) mengenai mengekstrak serpihan dari fail WAV

Bagaimana untuk mengekstrak bahagian tertentu fail WAV?

Untuk mengekstrak bahagian tertentu fail WAV, anda perlu menggunakan perisian penyuntingan audio seperti Audacity. Buka fail WAV dalam Audacity, gunakan alat pemilihan untuk memilih bahagian yang ingin anda ekstrak, dan kemudian pilih Pemilihan Eksport dari menu Fail. Anda kemudian boleh menyimpan bahagian yang dipilih sebagai fail WAV baru.

Bolehkah saya mengekstrak data dari fail WAV dalam bahasa pengaturcaraan?

Ya, anda boleh mengekstrak data dari fail WAV menggunakan bahasa pengaturcaraan seperti Python. Perpustakaan seperti scipy.io.wavfile dan wave boleh digunakan untuk membaca fail WAV dan mengekstrak data. Anda kemudian boleh mengendalikan data ini mengikut keperluan anda.

Bagaimana untuk mengekstrak maklumat rahsia dari fail audio?

Mengekstrak maklumat rahsia dari fail audio melibatkan proses yang dipanggil steganografi. Proses ini melibatkan menyembunyikan maklumat dalam teks atau data bukan rahsia. Terdapat pelbagai perisian dan alat yang dapat membantu anda mengekstrak mesej tersembunyi dari fail audio.

Bolehkah saya mengeluarkan suara atau suara dari fail wav?

Mengekstrak bunyi dari fail WAV adalah tugas yang kompleks yang melibatkan pemisahan sumber audio atau pemisahan pertuturan. Ini boleh dicapai dengan menggunakan teknik pemprosesan isyarat lanjutan dan algoritma pembelajaran mesin. Perisian seperti Audacity boleh membantu sedikit sebanyak, tetapi untuk tugas yang lebih kompleks, anda mungkin perlu menggunakan alat atau perkhidmatan yang lebih maju.

Fungsi yang mana dalam R mengekstrak nilai db dari fail WAV?

Dalam R, anda boleh menggunakan pakej penala untuk membaca fail WAV dan mengekstrak data. Fungsi readWave() boleh digunakan untuk membaca fail WAV, dan objek yang dihasilkan boleh digunakan untuk mengakses nilai DB. Walau bagaimanapun, anda mungkin perlu menukar nilai amplitud ke DB menggunakan formula matematik yang sesuai.

Bagaimana untuk mengekstrak maklumat frekuensi dari fail WAV?

Mengekstrak maklumat kekerapan dari fail WAV melibatkan melakukan transformasi Fourier pada data. Ini boleh dilakukan menggunakan perpustakaan Numpy di Python atau perpustakaan FFT di R. Hasil transformasi Fourier akan memberi anda komponen kekerapan isyarat audio.

Bolehkah saya mengekstrak metadata dari fail WAV?

Ya, anda boleh mengekstrak metadata dari fail WAV. Ini mungkin termasuk maklumat seperti kadar persampelan, kedalaman bit, bilangan saluran dan tempoh. Ini boleh dilakukan dengan menggunakan perpustakaan pemprosesan audio dalam pelbagai bahasa pengaturcaraan.

Bagaimana untuk mengekstrak pelbagai bahagian dari fail wav?

Untuk mengekstrak pelbagai bahagian dari fail WAV, anda boleh menggunakan perisian penyuntingan audio seperti Audacity. Anda boleh memilih setiap bahagian yang anda mahu mengekstrak dan mengeksportnya sebagai fail baru. Proses ini boleh diulang untuk setiap bahagian untuk diekstrak.

Bolehkah saya mengeluarkan audio dari fail video dan simpan sebagai fail wav?

Ya, anda boleh mengekstrak audio dari fail video dan simpan sebagai fail WAV. Ini boleh dilakukan menggunakan perisian penyuntingan video atau alat penukaran. Proses ini melibatkan pembukaan fail video, mengekstrak trek audio, dan menyimpannya sebagai fail WAV.

Bagaimana untuk menukar fail WAV ke format audio lain?

Untuk menukar fail WAV ke format audio lain, anda boleh menggunakan perisian atau alat penukaran audio. Alat ini membolehkan anda membuka fail WAV dan menyimpannya dalam format lain, seperti MP3, FLAC, atau AAC. Proses penukaran biasanya melibatkan memilih format output dan menetapkan jisim atau kadar bit yang diperlukan.

Atas ialah kandungan terperinci PHP Master | Ekstrak petikan dari fail wav. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn