我注意到 linux 中的文件命令是否将此 mpg 检测为数据?
http://www.berkut13.com/videos/brakeup.mpg
它可以检测到 flv,但是不能检测到这个 mpg 文件。
我希望能够检测 mpg 文件。
我找到了 MPEG 魔术文件的一部分。
# MPEG file
# MPEG sequences
# FIXME: This section is from the old magic.mime file and needs integrating with the rest
0 belong 0x000001BA
>4 byte &0x40
!:mime video/mp2p
>4 byte ^0x40
!:mime video/mpeg
0 belong 0x000001BB
!:mime video/mpeg
0 belong 0x000001B0
!:mime video/mp4v-es
0 belong 0x000001B5
!:mime video/mp4v-es
0 belong 0x000001B3
!:mime video/mpv
0 belong&0xFF5FFF1F 0x47400010
!:mime video/mp2t
0 belong 0x00000001
>4 byte&0x1F 0x07
!:mime video/h264
和文件
$ xxd -p brakeup.mpg | head -n 1
000001ba2100010001800e3b000001bb000c800e3b07e1ffc0c020e0e02e
$ od -x brakeup.mpg | head -n 2
0000000 0000 ba01 0021 0001 8001 3b0e 0000 bb01
0000020 0c00 0e80 073b ffe1 c0c0 e020 2ee0 0000
答案1
该file
命令使用文件定义列表魔法文件(在 Linux 系统上通常是 /usr/share/file/magic,在 Unix 上通常是 /etc/magic)。
该文件中的大多数条目只是“神奇”数字:文件命令将文件的前几个字节与这些条目进行匹配以识别该文件。
尝试从此处添加这些定义魔法文件示例:
#------------------------------------------------------------------------------
# animation: file(1) magic for animation/movie formats
#
# animation formats
# MPEG, FLI, DL originally from [email protected] (VaX#n8)
# FLC, SGI, Apple originally from Daniel Quinlan ([email protected])
# MPEG animation format
0 belong 0x000001b3 MPEG video stream data
#>4 beshort&0xfff0 x (%d x
#>5 beshort&0x0fff x %d)
0 belong 0x000001ba MPEG system stream data
您的 brakeup.mpg 文件以 开头,00,00,01,ba
因此文件命令至少应该将其识别为 MPEG 系统数据。
在基于 Ubuntu 的 Linux 发行版上,/usr/share/file/magic 已经有将该 MPG 文件标识为的定义:
brakeup.mpg: MPEG sequence, v1, system multiplex