代码之家  ›  专栏  ›  技术社区  ›  Marcus S. Zarra

快速确定文件是否为有效视频

  •  8
  • Marcus S. Zarra  · 技术社区  · 15 年前

    确定文件是否可播放视频的最快方法是什么?我不关心它是否被破坏,只关心它是不是一个mime类型 应该 可以在iPad上播放。

    我玩过把文件推过 NSURL 正如另一个问题所建议的那样,但每个文件可能需要1秒钟的时间,这太慢了。

    我目前正在查看文件扩展名,但我更希望有更确定的东西。

    更新

    我很想在应用程序内部使用utis,但我也没有找到任何从这个方向来实现它的方法。如果有人知道3.2版文件的UTI,那就行了。

    5 回复  |  直到 15 年前
        1
  •  7
  •   sarnold    15 年前

    这个 file(1) 命令(和关联的 libmagic )可以在标准的Unix系统上完成这项工作;如果Apple没有将其包含到手机操作系统中,您可能可以让它自己在手机上运行。(在我的x86-64 Linux系统上,库是109K。)

    在我的电脑上,它在7秒内将146个容易访问的视频分为18种不同的格式。(120千兆字节)出现了一些错误:

    $ sort -u /tmp/out
    data
    ISO Media, MPEG v4 system, version 1
    Matroska data
    Microsoft ASF
    MPEG transport stream data
    RIFF (little-endian) data, AVI, 384 x 240, 25.00 fps, video: DivX 5, audio: MPEG-1 Layer 3 (mono, 44100 Hz)
    RIFF (little-endian) data, AVI, 384 x 288, 25.00 fps, video: DivX 3 Low-Motion, audio: DivX (stereo, 44100 Hz)
    RIFF (little-endian) data, AVI, 512 x 272, 25.00 fps, video: XviD, audio: MPEG-1 Layer 3 (stereo, 48000 Hz)
    RIFF (little-endian) data, AVI, 512 x 288, 25.00 fps, video: XviD, audio: MPEG-1 Layer 3 (stereo, 44100 Hz)
    RIFF (little-endian) data, AVI, 512 x 288, 25.00 fps, video: XviD, audio: MPEG-1 Layer 3 (stereo, 48000 Hz)
    RIFF (little-endian) data, AVI, 512 x 328, 25.00 fps, video: DivX 5, audio: MPEG-1 Layer 3 (stereo, 32000 Hz)
    RIFF (little-endian) data, AVI, 512 x 328, 25.00 fps, video: XviD, audio: MPEG-1 Layer 3 (stereo, 32000 Hz)
    RIFF (little-endian) data, AVI, 572 x 304, 25.00 fps, video: XviD, audio: MPEG-1 Layer 3 (stereo, 48000 Hz)
    RIFF (little-endian) data, AVI, 576 x 320, 25.00 fps, video: XviD, audio: MPEG-1 Layer 3 (stereo, 48000 Hz)
    RIFF (little-endian) data, AVI, 608 x 336, 25.00 fps, video: XviD, audio: MPEG-1 Layer 3 (stereo, 48000 Hz)
    RIFF (little-endian) data, AVI, 624 x 352, 25.00 fps, video: XviD, audio: MPEG-1 Layer 3 (stereo, 48000 Hz)
    RIFF (little-endian) data, AVI, 640 x 352, 25.00 fps, video: XviD, audio: MPEG-1 Layer 3 (stereo, 48000 Hz)
    TeX font metric data (\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377
    

    在这样的速度下,也许你可以忍受一点噪音,然后回到一个较慢的机制;或者也许你可以用它还不知道的格式来填写规则。

        2
  •  0
  •   Martin Beckett    15 年前

    读取头并查找编解码器详细信息?
    Mediainfo 是OpenSource视频文件信息分析器

    对不起,我不知道iPad的具体内容

        3
  •  0
  •   Joshua Weinberg    15 年前

    我想说你需要做的是得到文件的uti,在桌面上可以使用launchservices完成。我不知道苹果是否在iOS上公开了API。

        4
  •  0
  •   M. Ryan    15 年前

    除了检查文件扩展名,您是否应该不能简单地播放该文件,并且电影播放器对象将向代理发出无法播放的信号?或者在最坏的情况下,你可以尝试一个讨厌的尝试/捕获。

        5
  •  0
  •   bluesmoon    15 年前

    通常,文件的前几个字节会告诉您文件类型。就是这样 libmagic 以及 file 命令行。如果您不想在iOS上构建libmagic,只需查看它在做什么,然后拉入您关心的查找表的子集。