Что состоит в том, чтобы определить самый быстрый путь, является ли файл играемым видео? Я не обеспокоен им являющийся поврежденным или не, но просто является ли это типом пантомимы, который должен быть играемым на iPad.
Я играл с продвижением файла через a NSURL
как предложено другим вопросом, но это может взять> 1 секунда на файл, который является слишком медленным.
Я в настоящее время смотрю на расширение файла, но очень имел бы что-то, что более бесспорно.
Я хотел бы использовать UTIs внутренне для приложения, но я не нашел выставленного способа прибыть в него от того направления также. Если бы кто-либо знает о способе достигнуть UTI файла на 3,2, который работал бы.
Команда file (1)
(и связанная с ней libmagic
) может выполнять эту работу в стандартных системах Unix; если Apple не включила его в операционную систему телефона, вы, вероятно, сможете самостоятельно запустить его на телефоне. (В моей системе Linux x86-64 библиотека составляет 109 КБ.)
На моем компьютере 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
На таких скоростях, возможно, вы сможете выдержать небольшой шум и вернуться к более медленному механизму; или, возможно, заполнить правила форматами, которые он еще не знает.
Прочитать заголовок и найти сведения о кодеке?
Mediainfo - это анализатор информации о видеофайлах с открытым исходным кодом
Извините, я не знаю ничего, относящегося к ipad
Я бы сказал, что вам нужно получить UTI файла, что на настольном компьютере можно сделать с помощью LaunchServices. Я не знаю, предоставила ли Apple API для этого на iOS.
Помимо проверки расширения файла, нельзя ли просто воспроизвести файл, а объект movie player сообщит делегату, что файл не удалось воспроизвести? Или, в худшем случае, вы можете попробовать отвратительный try/catch.
Обычно первые несколько байтов файла сообщают вам тип файла. Это то, что делают libmagic
и команда file
. Если вы не хотите создавать libmagic для iOS, вы можете просто посмотреть, что он делает, и извлечь нужное вам подмножество таблицы поиска.