


Introduction to the method of determining whether a video is in mp3 format using python
In the project, the mp3 format is used for sound effect playback. When an mp3 file is encountered, the sound cannot be played in the program. Finally, it is found that it is a file in wav format, but ends with mp3. To determine the mp3 format of a resource, how to determine it? Using the .mp3 suffix is definitely unreliable. We know that the extension can be modified arbitrarily. We have to judge from the encoding format. The method is as follows:
-
mp3 encoding
MP3 file is a streaming media file format, so there is no file header. Format formats with file headers such as AVI and WAV are easy to judge. They all start with RIFF. Just compare the RIFF strings to find out whether they are AVI or WAV, while mp3 can only analyze the encoding format. Here is a brief introduction to the mp3 encoding rules. For detailed information, please refer to this article
MP3 files are generally divided into three parts: TAG_V2(ID3V2), audio data, TAG_V1(ID3V1)
a). ID3V2 is at the beginning of the file, starting with ID3, and contains information such as author, composer, album, etc. The length is not fixed, extending the amount of information of ID3V1, and is optional
b). A series of frames of audio data , in the middle of the file, the number is determined by the file size and frame length; each frame starts with FFF, the length may not be fixed, or may be fixed, determined by the bitrate; each frame is divided into a frame header and There are two parts of the data entity; the frame header records the bit rate, sampling rate, version and other information of the mp3, and each frame is independent of each other.
c). ID3V1 is located at the end of the file, starting with TAG, and contains author, composer, album and other information. The length is 128Byte and is optional.
ID3V2
Contains author, composer, album and other information, the length is not fixed, expanding the amount of information of ID3V1.
Frame
.
.
.
Frame
A series of frames, the number is determined by the file Determined by size and frame length
The length of each FRAME may not be fixed, or may be fixed, and is determined by the bitrate
Each FRAME is divided into two parts: frame header and data entity
The frame header records the bit rate, sampling rate, version and other information of mp3, and each frame is independent of each other.
ID3V1
Contains author, composer, album and other information, and is 128BYTE in length.
In other words, based on the beginning information in the three structures of TAG_V2 (ID3V2), audio data, and TAG_V1 (ID3V1), you can determine whether it is an mp3-encoded file.
2.python code
# coding: utf-8 import os #mp3filePath是否是mp3格式的 def isMp3Format(mp3filePath): #读取文件内字符串 f = open(mp3filePath, "r"); fileStr = f.read(); f.close(); head3Str = fileStr[:3]; #判断开头是不是ID3 if head3Str == "ID3": return True; #判断结尾有没有TAG last32Str = fileStr[-32:]; if last32Str[:3] == "TAG": return True; #判断第一帧是不是FFF开头, 转成数字 # fixme 应该循环遍历每个帧头,这样才能100%判断是不是mp3 ascii = ord(fileStr[:1]); if ascii == 255: return True; return False; #遍历folderPath看看是不是都是mp3格式的, #是就true,不是就是false, 并返回是mp3的list,不是MP3的list def isMp3FolderTraverse(folderPath): mp3List = []; notMp3List = []; isAllMpFormat = True; for dirpath, dirnames, filenames in os.walk(folderPath): for filename in filenames: path = dirpath + os.sep + filename; isMp3 = isMp3Format(path); #判断是不是mp3结尾的 并且 是mp3格式的 if isMp3 == False and str.endswith(path, ".mp3") == True: # print("--warning: file " + path + " is not mp3 format!--"); notMp3List.append(path); isAllMpFormat = False; else: mp3List.append(path); return isAllMpFormat, mp3List, notMp3List; if __name__ == '__main__': isMp3Format("s_com_click1.mp3"); isAllMp3, mp3List, notMp3List = isMp3FolderTraverse("sound"); print isAllMp3; print mp3List; print notMp3List;
The above is the detailed content of Introduction to the method of determining whether a video is in mp3 format using python. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics











PHP is mainly procedural programming, but also supports object-oriented programming (OOP); Python supports a variety of paradigms, including OOP, functional and procedural programming. PHP is suitable for web development, and Python is suitable for a variety of applications such as data analysis and machine learning.

PHP is suitable for web development and rapid prototyping, and Python is suitable for data science and machine learning. 1.PHP is used for dynamic web development, with simple syntax and suitable for rapid development. 2. Python has concise syntax, is suitable for multiple fields, and has a strong library ecosystem.

To run Python code in Sublime Text, you need to install the Python plug-in first, then create a .py file and write the code, and finally press Ctrl B to run the code, and the output will be displayed in the console.

PHP originated in 1994 and was developed by RasmusLerdorf. It was originally used to track website visitors and gradually evolved into a server-side scripting language and was widely used in web development. Python was developed by Guidovan Rossum in the late 1980s and was first released in 1991. It emphasizes code readability and simplicity, and is suitable for scientific computing, data analysis and other fields.

Python is more suitable for beginners, with a smooth learning curve and concise syntax; JavaScript is suitable for front-end development, with a steep learning curve and flexible syntax. 1. Python syntax is intuitive and suitable for data science and back-end development. 2. JavaScript is flexible and widely used in front-end and server-side programming.

Golang is better than Python in terms of performance and scalability. 1) Golang's compilation-type characteristics and efficient concurrency model make it perform well in high concurrency scenarios. 2) Python, as an interpreted language, executes slowly, but can optimize performance through tools such as Cython.

Writing code in Visual Studio Code (VSCode) is simple and easy to use. Just install VSCode, create a project, select a language, create a file, write code, save and run it. The advantages of VSCode include cross-platform, free and open source, powerful features, rich extensions, and lightweight and fast.

Running Python code in Notepad requires the Python executable and NppExec plug-in to be installed. After installing Python and adding PATH to it, configure the command "python" and the parameter "{CURRENT_DIRECTORY}{FILE_NAME}" in the NppExec plug-in to run Python code in Notepad through the shortcut key "F6".
