cygwin fileコマンドはmpgを検出しませんか?


1

Linuxのファイルコマンドがこのmpgをデータとして検出していることに気づきましたか?

http://www.berkut13.com/videos/brakeup.mpg

flv okは検出しますが、この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

制限された形式なので、Linuxが扱いにくいのは驚くことではありません。w32codecsパッケージとffmpegが正しくインストールされていますか?
ブロムクヴィスト

ここで正常に動作します。$ file brakeup.mpg brakeup.mpg: MPEG sequence, v1, system multiplex
イグナシオバスケス-エイブラムス

ここに魔法のファイル sendspace.com/file/i0qu6hがあります。今ではcygwinだったことを覚えています。タイトルとタグを更新しました。
-barlop

回答:


2

このfileコマンドは、マジックファイル(通常、Linuxシステムでは/ usr / share / file / magic、Unixでは/ etc / magic)のファイル定義のリストを使用します。

そのファイルのエントリのほとんどは単なる「魔法の」数字です。ファイルコマンドは、ファイルの最初の数バイトをこれらのエントリと照合してファイルを識別します。

このマジックファイルの例からこれらの定義を追加してみてください。

#------------------------------------------------------------------------------
# animation:  file(1) magic for animation/movie formats
#
# animation formats
# MPEG, FLI, DL originally from vax@ccwf.cc.utexas.edu (VaX#n8)
# FLC, SGI, Apple originally from Daniel Quinlan (quinlan@yggdrasil.com)

# 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ため、fileコマンドは少なくともMPEGシステムデータとして識別する必要があります。

UbuntuベースのLinuxディストリビューションでは、/ usr / share / file / magicには、そのMPGファイルを次のように識別する定義が既にあります。

brakeup.mpg: MPEG sequence, v1, system multiplex

おかげで、魔法のファイルにリンクするコメントを追加して質問を更新しました
-barlop

その行を見つけるための+1 ..マジックファイルには0x000001BAがありますが、「#FIXME:このセクションは古いmagic.mimeファイルからのものであり、残りと統合する必要があります」と表示されます。 BSDマニュアルを言う。そして、5.5と報告されます
-barlop

fileはBSDコマンドであり、5.05を意味すると思います。
イグナシオバスケス-エイブラムス

@Ignacioはい、そうです、5.05
barlop
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.