Comments (5)
Seeing how it's done in the matcher functions with matching against only the 2 bytes, I've changed mine to this:
Mp3(buf []byte) bool {
return len(buf) > 2 &&
((buf[0] == 0x49 && buf[1] == 0x44 && buf[2] == 0x33) ||
(buf[0] == 0xFF && buf[1] == 0xfa) ||
(buf[0] == 0xFF && buf[1] == 0xfb))
}
The line with 0xfa is added with no other changes. That now works for me on the files that were previously failing.
Thanks!
from filetype.
Thanks for reporting this. What you mention makes absolute sense. The prefered way is using or logical operator.
from filetype.
There may be more possibilities for that second byte. See spec here: http://www.mpgedit.org/mpgedit/mpeg_format/mpeghdr.htm
Edit: I've been looking into this further. We only want MPEG-1 Layer III for MP3 audio, which leaves 0xFA and 0xFB depending on whether the 'protection' bit is set, so this is sufficient. Layer II would be MP2 files so another test.
from filetype.
I modified my local matcher function in this way to check the first bit only once:
func Mp3(buf []byte) bool {
return len(buf) > 2 &&
((buf[0] == 0x49 && buf[1] == 0x44 && buf[2] == 0x33) || // ID3v2
// Final bit (has crc32) may be or may not be set.
(buf[0] == 0xFF && (buf[1] == 0xFA || buf[1] == 0xFB)))
}
Would that be preferable?
from filetype.
I would suggest the same. One check is perfect.
from filetype.
Related Issues (20)
- filetype.IsApplication isn't defined ? HOT 1
- Tar filetype doesn't match for Pre-POSIX.1-1988 tar headers HOT 1
- Add AVIF image filetype HOT 2
- m4a mime type HOT 2
- tar file not being recognized HOT 1
- fatal error: magic.h: No such file or directory
- directory not recognized HOT 1
- ASCII Text Files Starting With Letters "BM" Are Treated As BMP Image Files
- Why ppt matcher return false for a ppt file
- Add MPEG-TS video format
- docx file is recognised as zip file HOT 3
- Easy way to recognize new formats?
- Many mime types not recognized
- deb file incorrectly matching to ar HOT 1
- Cannot install package HOT 1
- password producted file file match not working
- How do I get the http streaming file type HOT 1
- run all the time with no result, if the file name is 'console'
- xlsx类型的文件解析为zip格式
- avif file detecting is not stable
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from filetype.