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

PHP Master | Ekstrak petikan dari fail wav

Feb 24, 2025 am 10:39 AM

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>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Katakan kita mempunyai:

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

<code>time = 4498170 / (22050 * 1 * 16 / 8)</code>
Salin selepas log masuk
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>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

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>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

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>
Salin selepas log masuk
Salin selepas log masuk

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 Laman Web ini
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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1662
14
Tutorial PHP
1261
29
Tutorial C#
1234
24
Terangkan jenis ralat yang berbeza dalam PHP (notis, amaran, ralat maut, ralat parse). Terangkan jenis ralat yang berbeza dalam PHP (notis, amaran, ralat maut, ralat parse). Apr 08, 2025 am 12:03 AM

Terdapat empat jenis kesilapan utama dalam PHP: 1.Notice: yang paling sedikit, tidak akan mengganggu program, seperti mengakses pembolehubah yang tidak ditentukan; 2. Amaran: Serius daripada notis, tidak akan menamatkan program, seperti tidak mengandungi fail; 3. FatalError: Yang paling serius, akan menamatkan program ini, seperti tidak memanggil fungsi; 4. ParseError: Kesalahan sintaks, akan menghalang program daripada dilaksanakan, seperti lupa untuk menambah tag akhir.

PHP dan Python: Membandingkan dua bahasa pengaturcaraan yang popular PHP dan Python: Membandingkan dua bahasa pengaturcaraan yang popular Apr 14, 2025 am 12:13 AM

PHP dan Python masing -masing mempunyai kelebihan mereka sendiri, dan memilih mengikut keperluan projek. 1.PHP sesuai untuk pembangunan web, terutamanya untuk pembangunan pesat dan penyelenggaraan laman web. 2. Python sesuai untuk sains data, pembelajaran mesin dan kecerdasan buatan, dengan sintaks ringkas dan sesuai untuk pemula.

Terangkan hashing kata laluan yang selamat di PHP (mis., Password_hash, password_verify). Mengapa tidak menggunakan MD5 atau SHA1? Terangkan hashing kata laluan yang selamat di PHP (mis., Password_hash, password_verify). Mengapa tidak menggunakan MD5 atau SHA1? Apr 17, 2025 am 12:06 AM

Dalam php, kata laluan_hash dan kata laluan 1) password_hash menjana hash yang mengandungi nilai garam untuk meningkatkan keselamatan. 2) Kata Laluan_verify Sahkan kata laluan dan pastikan keselamatan dengan membandingkan nilai hash. 3) MD5 dan SHA1 terdedah dan kekurangan nilai garam, dan tidak sesuai untuk keselamatan kata laluan moden.

PHP dalam Tindakan: Contoh dan aplikasi dunia nyata PHP dalam Tindakan: Contoh dan aplikasi dunia nyata Apr 14, 2025 am 12:19 AM

PHP digunakan secara meluas dalam e-dagang, sistem pengurusan kandungan dan pembangunan API. 1) e-dagang: Digunakan untuk fungsi keranjang belanja dan pemprosesan pembayaran. 2) Sistem Pengurusan Kandungan: Digunakan untuk penjanaan kandungan dinamik dan pengurusan pengguna. 3) Pembangunan API: Digunakan untuk Pembangunan API RESTful dan Keselamatan API. Melalui pengoptimuman prestasi dan amalan terbaik, kecekapan dan pemeliharaan aplikasi PHP bertambah baik.

Apakah kaedah permintaan HTTP (dapatkan, pos, letakkan, padam, dll) dan kapan masing -masing harus digunakan? Apakah kaedah permintaan HTTP (dapatkan, pos, letakkan, padam, dll) dan kapan masing -masing harus digunakan? Apr 09, 2025 am 12:09 AM

Kaedah permintaan HTTP termasuk GET, POST, PUT dan DELETE, yang digunakan untuk mendapatkan, menghantar, mengemas kini dan memadam sumber masing -masing. 1. Kaedah GET digunakan untuk mendapatkan sumber dan sesuai untuk operasi membaca. 2. Kaedah Pos digunakan untuk menyerahkan data dan sering digunakan untuk membuat sumber baru. 3. Kaedah Put digunakan untuk mengemas kini sumber dan sesuai untuk kemas kini lengkap. 4. Kaedah Padam digunakan untuk memadam sumber dan sesuai untuk operasi penghapusan.

PHP: Bahasa utama untuk pembangunan web PHP: Bahasa utama untuk pembangunan web Apr 13, 2025 am 12:08 AM

PHP adalah bahasa skrip yang digunakan secara meluas di sisi pelayan, terutamanya sesuai untuk pembangunan web. 1.PHP boleh membenamkan HTML, memproses permintaan dan respons HTTP, dan menyokong pelbagai pangkalan data. 2.PHP digunakan untuk menjana kandungan web dinamik, data borang proses, pangkalan data akses, dan lain -lain, dengan sokongan komuniti yang kuat dan sumber sumber terbuka. 3. PHP adalah bahasa yang ditafsirkan, dan proses pelaksanaan termasuk analisis leksikal, analisis tatabahasa, penyusunan dan pelaksanaan. 4.Php boleh digabungkan dengan MySQL untuk aplikasi lanjutan seperti sistem pendaftaran pengguna. 5. Apabila debugging php, anda boleh menggunakan fungsi seperti error_reporting () dan var_dump (). 6. Mengoptimumkan kod PHP untuk menggunakan mekanisme caching, mengoptimumkan pertanyaan pangkalan data dan menggunakan fungsi terbina dalam. 7

Bagaimana PHP mengendalikan fail memuat naik dengan selamat? Bagaimana PHP mengendalikan fail memuat naik dengan selamat? Apr 10, 2025 am 09:37 AM

PHP mengendalikan fail muat naik melalui pembolehubah fail $ \ _. Kaedah untuk memastikan keselamatan termasuk: 1. Semak kesilapan muat naik, 2. Sahkan jenis dan saiz fail, 3. Mencegah penindasan fail, 4. Pindahkan fail ke lokasi storan tetap.

Terangkan perbezaan antara diri ::, ibu bapa ::, dan statik :: dalam php oop. Terangkan perbezaan antara diri ::, ibu bapa ::, dan statik :: dalam php oop. Apr 09, 2025 am 12:04 AM

Dalam phpoop, diri :: merujuk kepada kelas semasa, ibu bapa :: merujuk kepada kelas induk, statik :: digunakan untuk mengikat statik lewat. 1.Self :: digunakan untuk kaedah statik dan panggilan berterusan, tetapi tidak menyokong pengikatan statik lewat. 2.Parent :: digunakan untuk subkelas untuk memanggil kaedah kelas induk, dan kaedah peribadi tidak dapat diakses. 3.Static :: Menyokong pengikatan statik lewat, sesuai untuk warisan dan polimorfisme, tetapi boleh menjejaskan kebolehbacaan kod.

See all articles