Невозможно определить тип видеофайла mp4 (Видеорегистратор с линуксом на борту выдает непонятные видеофайлы)

Разные проблемы звука, видео, обсуждение разных устройств и т.д.

Модератор: aim

Аватара пользователя
MihanEntalpo
Сообщения: 8
ОС: Linux Debian Squeeze 6.0

Невозможно определить тип видеофайла mp4

Сообщение MihanEntalpo »

Здравствуйте, уважаемые специалисты. По возможности стараюсь разбираться во всем сам, и прошу помощи в крайне редких случаях. И этот случай - тот самый.

Предыстория: Друзья ездившие в Китай на каникулы приобрели по моей просьбе видеорегистратор на 8 видеокамер. Видеорегистратор - NoName. Точнее какой-то нэйм у него все-таки есть, но он на китайском

Внутри видеорегистратора установлено некое устройство, имеющее VGA-видеовывод, SATA-порт для винта, куда успешно подключен винт на 1ТБ. После снятия винта и попытки анализа его содержимого дома, выяснилось что он разбит на 4 раздела ext3 и они забиты кучей мелких файлов рассортированных по дате. Из чего можно сделать вывод о наличии некоего линукса или просто *nix'а на борту девайса.

Проблема возникла именно с файлами. Они имеют расширение MP4, однако mplayer и многие другие проигрыватели отказываются это воспринимать.

Итак, вот пища для ума:

0) Для желающих посмотреть - вот сам файл: http://bit.ly/xeg73K (находится на яндекс.народе)

1) Вывод mplayer'а:

Код: Выделить всё

 Playing /tmp/file1.mp4.
 Seek failed
 libavformat file format detected.
 [mp3 @ 0xaf76750] Header missing
 Last message repeated 555 times
 [mp3 @ 0xaf757b0] max_analyze_duration reached
 [mp3 @ 0xaf757b0] Estimating duration from bitrate, this may be inaccurate
 [lavf] stream 0: audio (mp1), -aid 0
 ============================================================ ==============
 Opening audio decoder: [mp3lib] MPEG layer-2, layer-3
 AUDIO: 22050 Hz, 2 ch, s16le, 288.0 kbit/40.82% (ratio: 36000->88200)
 Selected audio codec: [mp3] afm: mp3lib (mp3lib MPEG layer-2, layer-3)
 ============================================================ ==============
 AO: [alsa] 22050Hz 2ch s16le (2 bytes per sample)
 Video: no video
 Starting playback...
 big_values too large!


2) при запуске SMPlayer'ом слышно быстрый жужжащий звук

3) проверял запускать с помощью xine, и в винде: kmplayer, media player classic со всеми кодеками K-Lite (наверное это не панацея, но я попытался)

4) найдена аналогичная проблема: http://linuxvideo.ru/forum/viewthread.php?thread_id=12

5) из предыдущей темы найдена такая история: http://www.moviecodec.com/file-types/how-to-play-cctv-dv4-fi le-format-in-pc-8511...

6) из последнего адреса удалось выкопать следующую инфу: Все плейеры которые там рекомендовались - или канули в лету, или не работают, или не открывают данный файл, КРОМЕ: elecard AVC HD Player, который, разумеется, под винду. Файлы он открывает и почти хорошо читает (во время воспроизведения иногда останавливается по непонятным причинам)

7) Вышеупомянутый elecard сообщает о том, что файл имеет формат MPEG4 AVC HD (типа того) но поискав на эту тему я пришел к выводу что видимо это какая-то проприетарная версия лично этого Элекарда. Скачать демо-версию можно тут: http://www.elecard.com/assets/files/distribs/avchd-player/EA VC_HD_Player.zip (но только если у вас есть винда)

8 ) Сам элекард в Wine заставить работать не удалось, валится и все тут. Ни на winehq ни где-то еще нет пытавшихся его запустить под вайном, так как этот виндовый плейер никому нафиг не нужен.

9) Конвертировать винт в fat32 или ntfs невозможно, ибо у меня нет чистого винта на 1 ТБ, а конвертировать "на живую" я боюсь

10) Единственная надежда - подключить винт к линуксовуму компу, расшарить через самбу и смотреть видео на виндовой машине по сети. Но это неудобно и изврат.

Итак: Я в тупике, и прошу вашей помощи, друзья.

Спасибо уже за то уделили время читая мое сообщение.
Спасибо сказали:

Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: Невозможно определить тип видеофайла mp4

Сообщение eddy »

Если на борту линукс, это еще не значит, что файлы не будут как-то огорожены. Вполне возможно, что они шифрованы, либо вообще разбросаны кусочками и для проигрывания надо как-то хитро эти куски соединить.
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:

Аватара пользователя
sspphheerraa
Сообщения: 1375
ОС: Gentoo

Re: Невозможно определить тип видеофайла mp4

Сообщение sspphheerraa »

MihanEntalpo писал(а):
21.01.2012 14:05
Предыстория: Друзья ездившие в Китай на каникулы приобрели по моей просьбе видеорегистратор на 8 видеокамер. Видеорегистратор - NoName. Точнее какой-то нэйм у него все-таки есть, но он на китайском

Как говорят у нас в Украине "Дэшэва рибка - х**ова юшка".

Тот файл, что вы выложили на яндексе, у меня под линуксом нигде не играется. И mediainfo выдает о файле только это:

Код: Выделить всё

General
Complete name                            : F-20110426-121335.mp4
File size                                : 3.73 MiB

В полне возможно, что там стоит какой-нибудь шифратор. Специально для того, чтобы вы использовали то, что вам предлагают (винду и этот ваш проигрыватель).
Что можно посоветовать? Ну, попробуйте написать в багзиллу вайна, может там кто поможет запустить сабж (там dll'ки может какие-нибудь специфические подогнать или еще чего).
Sspphheerraa
Спасибо сказали:

Аватара пользователя
taaroa
Сообщения: 1319

Re: Невозможно определить тип видеофайла mp4

Сообщение taaroa »

sspphheerraa писал(а):
21.01.2012 20:29
В полне возможно, что там стоит какой-нибудь шифратор.

огорожено с помощью DirectShow® filter
http://www.elecard.com/ru/download/products.html
sspphheerraa писал(а):
21.01.2012 20:29
Специально для того, чтобы вы использовали то, что вам предлагают (винду и этот ваш проигрыватель)

в "венде" (из опенсорс и фриваре) никто не смог проиграть/отобразить это. увы.
divx plus прямо так и сказал: загугли за директшоу, найди elecard и купи.
:wq
Спасибо сказали:

Аватара пользователя
romuil
Сообщения: 2095
Статус: Ромунцель
ОС: ALTLinux Sisyphus

Re: Невозможно определить тип видеофайла mp4

Сообщение romuil »

MihanEntalpo отвечаю кратко и лаконично: для просмотра этих файлов нужен плейер с платными кодеками Elecard, коих достать либо купить, либо варез - а сие тут не обсуждается. Совсем не факт, что плейер с этим кодеком заработает под wine.
Увы, Linux тут ничем не поможет.
Спасибо сказали:

Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: Невозможно определить тип видеофайла mp4

Сообщение eddy »

Кстати, можно попробовать поXORить "шапку" файла с разными однобайтовыми последовательностями. Например, приемники "триколора" "кодируют" файлы простым 0xAA, для "декодирования" я пользовался своим велосипедом.
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:

Аватара пользователя
MihanEntalpo
Сообщения: 8
ОС: Linux Debian Squeeze 6.0

Re: Невозможно определить тип видеофайла mp4

Сообщение MihanEntalpo »

Большое спасибо всем ответившим за труд. Несмотря на то, что положительного ответа видимо нет, появилось более четкое осознание догадок которые имелись с самого начала.

Насколько я понимаю, вариантов у меня остается немного, подведу краткое резюме для тех несчастных кто тоже столкнется с этой проблемой
1) Пытаться реверсинжинирить элекардовский фильтр
2) Пытаться запустить элекард под вайном
3) Сконвертировать мой большой винт в НТФС
4) Подключить сетевую папку с винтом из линукса к виндовой машине с помощью самбы, даже возможно поставить виртуальную машину с виндой.
и
5) Попытаться проанализировать способ шифрования файла.

из них:
1 и 2 - маловероятно
3 и 4 - муторно и извратно, однако возможно (кстати варез тут непричем, ибо винда лицензионная есть, а Элекард плейер есть в виде демо-версии, котрой вполне хватит)

Но остается еще и 5:
Теперь вопрос на счет "попытаться проанализировать способ шифрования":

Подскажите, где мне найти информацию о том, какими должны быть заголовки основных контейнеров типа avi, mkv, и других, ведь я даже не знаю, что именно я должен увидеть в шестнадцатеричном редакторе чтобы понять, что "мне удалось расшифровать и это похоже на видеофайл!!!!"
Опять же, зная как эти заголовки должны выглядеть - проще написать программу перебирающую всевозможные способы того-же XOR'а, вместо того чтобы генерить 65536 видеофайлов и пытаться их всех воспроизвести.

Спасибо за уделенное внимание.
Спасибо сказали:

Аватара пользователя
Kido
Сообщения: 949
Статус: Космический Засланец
ОС: ArchLinux x86_64 Current

Re: Невозможно определить тип видеофайла mp4

Сообщение Kido »

Закинул его в MKV Merge GUI - полученный на выходе .mkv файл smplayer проиграть смог, но без звука.
Есть предположение, что это не mp4-контейнер а что-то свое. Думаю стоит смотреть в сторону копания в файле через hex-редактор.
Полученный файл: http://www.mediafire.com/?d64fvf5q6ycegky
Спасибо сказали:

Аватара пользователя
sspphheerraa
Сообщения: 1375
ОС: Gentoo

Re: Невозможно определить тип видеофайла mp4

Сообщение sspphheerraa »

Kido писал(а):
22.01.2012 17:09
Закинул его в MKV Merge GUI - полученный на выходе .mkv файл smplayer проиграть смог, но без звука.
Есть предположение, что это не mp4-контейнер а что-то свое. Думаю стоит смотреть в сторону копания в файле через hex-редактор.
Полученный файл: http://www.mediafire.com/?d64fvf5q6ycegky

MPEG-4 Part 10 ES - элементарный поток.
Звук вообще должен быть?
Sspphheerraa
Спасибо сказали:

Аватара пользователя
romuil
Сообщения: 2095
Статус: Ромунцель
ОС: ALTLinux Sisyphus

Re: Невозможно определить тип видеофайла mp4

Сообщение romuil »

Код: Выделить всё

libavformat file format detected.
[matroska,webm @ 0x8e92c60] Estimating duration from bitrate, this may be inaccurate
[lavf] stream 0: video (h264), -vid 0
VIDEO:  [H264]  352x288  0bpp  25.000 fps    0.0 kbps ( 0.0 kbyte/s)
Load subtitles in ./
==========================================================================
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
Selected video codec: [ffh264] vfm: ffmpeg (FFmpeg H.264)
==========================================================================
Audio: no sound
Starting playback...


Вот так, в нем видимо нет звука вообще.
Спасибо сказали:

Аватара пользователя
sspphheerraa
Сообщения: 1375
ОС: Gentoo

Re: Невозможно определить тип видеофайла mp4

Сообщение sspphheerraa »

ТС в первом посте пишет вывод mplayer'а. Там в роде бы звук определяется:

Код: Выделить всё

Playing /tmp/file1.mp4.
 Seek failed
 libavformat file format detected.
 [mp3 @ 0xaf76750] Header missing
 Last message repeated 555 times
 [mp3 @ 0xaf757b0] max_analyze_duration reached
 [mp3 @ 0xaf757b0] Estimating duration from bitrate, this may be inaccurate
 [lavf] stream 0: audio (mp1), -aid 0
 ============================================================ ==============
 Opening audio decoder: [mp3lib] MPEG layer-2, layer-3
 AUDIO: 22050 Hz, 2 ch, s16le, 288.0 kbit/40.82% (ratio: 36000->88200)
 Selected audio codec: [mp3] afm: mp3lib (mp3lib MPEG layer-2, layer-3)
 ============================================================ ==============
 AO: [alsa] 22050Hz 2ch s16le (2 bytes per sample)
 Video: no video
 Starting playback...
 big_values too large!
Sspphheerraa
Спасибо сказали:

Аватара пользователя
MihanEntalpo
Сообщения: 8
ОС: Linux Debian Squeeze 6.0

Re: Невозможно определить тип видеофайла mp4

Сообщение MihanEntalpo »

Большое спасибо за наводку и за данную надежду на лучшее будущее :)
Звука там действительно быть не должно, так как видеорегистратор звук не пишет. Извиняюсь, что сразу не уточнил этого.

Попробовал тоже загрузить исходный файл в MkvMerge GUI, и получилось тоже самое что и у Kido, файл проигрывается. Звука нет и быть не должно.

MkvMerge GUI при открытии сообщило что файл является элементарным mp4/h.264 потоком, и сказало что не знает его частоту кадров. В соответствии с этим возникает еще 2 вопроса:
1) Может ли это означать что этот файл (исходный) является обрубком нормального mp4 без заголовка, сделанным просто путем нарезки mp4 файла на кусочки не обращая внимания на его содержимое?
2) Каким образом можно воспроизвести "элементарный поток" с помощью штатных средств таких как mplayer не упаковывая файл в контейнер ?
Поискал сейчас на счет упаковки mp4/h.264 в контейнер и выяснил что оказывается и mencoder и avidemux должны это уметь. Вообще достаточно даже mkvMerge. Проблема в том,что максимально желательно было бы просматривать файлы в чистом виде, не преобразовывая их, так как их там по объему - 1ТБ, а по количеству - пара миллионов. И хотя данный файл на 3.5 мега mmg упаковал молниеносно, там попадаются файлы до 200 мегов.
Если бы не большие файлы - можно было бы использовать скрипт который при запуске это "неведомого" файла упаковывает его в mkv и открывает mplayer'ом, но некоторые файлы будут упаковываться так весьма долго, как мне кажется.
3) Или при упаковке в контейнер никакого анализа не происходит, и это просто добавление заголовка к элементарным потокам?
Сказывается незнание мною фундаментальных основ в области компьютерного видео...

Большое спасибо за уделенное внимание, и потраченные силы.

Спасибо сказали:

sciko
Сообщения: 1743
Статус: Ъ-участник
ОС: Debian/Ubuntu/etc

Re: Невозможно определить тип видеофайла mp4

Сообщение sciko »

MihanEntalpo писал(а):
23.01.2012 08:34
1) Может ли это означать что этот файл (исходный) является обрубком нормального mp4 без заголовка, сделанным просто путем нарезки mp4 файла на кусочки не обращая внимания на его содержимое?
Да. Но некоторые ребята делают по другому: отрезают кусок файла от конца и приставляют его к началу. Т.е. было "h123" стало "3h12" (здесь h -- заголовок).


Спасибо сказали:

Аватара пользователя
MihanEntalpo
Сообщения: 8
ОС: Linux Debian Squeeze 6.0

Re: Невозможно определить тип видеофайла mp4

Сообщение MihanEntalpo »

Проэкспериментировал - если переименовать исходный файл в *.264 то smplayer почти что открывает его, т.е. разрешение изображения определяется правильно, и на черном фоне отображаются кусочки в которых можно узнать элементы реального изображения. Правда время определяется как отрицательное. Желающие могут посмотреть на файл упакованый в матрешку: http://narod.ru/disk/38576179001/F-20110426-121335.mkv.html , и переименовать ИСХОДНЫЙ файл в *.264 после чего посмотреть его - увидите нечто общее.
По всей видимости SMPlayer сам определяет тип файла по расширению и передает его mplayer'у.

Вопросы:
1) Как самому передать mplayer'у параметры для воспроизведения "элементраного потока" ? Я выяснил что кодек mplayer'a для воспроизведения такого потока - libx264, однако параметры -vc или -vcodec никак не действуют
2) Если знаете какую-нибудь страницу с FAQ'ом по применению различных ключей mplayer'а - подскажите, man mplayer я почитал, но извлек оттуда информацию о том лишь, что можно открывать файлы с битыми индексами, либо AVI-контейнеры с битыми заголовками. Как открывать файлы вообще без заголовка но с указанием кадров в секунду, кодека и размеров картинки - не нашел после 2 часов гугления на русском и англицком...
Спасибо сказали:

sciko
Сообщения: 1743
Статус: Ъ-участник
ОС: Debian/Ubuntu/etc

Re: Невозможно определить тип видеофайла mp4

Сообщение sciko »

Приведённый файл у меня прекрасно открывает и показывает mplayer
Лог:
$ mplayer F-20110426-121335.mkv
MPlayer SVN-r1.0~rc3+svn20090426-4.4.3 © 2000-2009 MPlayer Team
mplayer: could not connect to socket
mplayer: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.

Playing F-20110426-121335.mkv.
[mkv] Track ID 1: video (V_MPEG4/ISO/AVC), -vid 0
[mkv] Will play video track 1.
[mkv] No audio track found/wanted.
Matroska file format detected.
VIDEO: [avc1] 352x288 24bpp 25.000 fps 0.0 kbps ( 0.0 kbyte/s)
open: No such file or directory
[MGA] Couldn't open: /dev/mga_vid
open: No such file or directory
[MGA] Couldn't open: /dev/mga_vid
[VO_TDFXFB] This driver only supports the 3Dfx Banshee, Voodoo3 and Voodoo 5.
[VO_3DFX] Unable to open /dev/3dfx.
==========================================================================
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
Selected video codec: [ffh264] vfm: ffmpeg (FFmpeg H.264)
==========================================================================
Audio: no sound
Starting playback...
VDec: vo config request - 352 x 288 (preferred colorspace: Planar YV12)
VDec: using Planar YV12 as output csp (no 0)
Movie-Aspect is 1.22:1 - prescaling to correct movie aspect.
VO: [xv] 352x288 => 352x288 Planar YV12
V: 0.0 0/ 0 ??% ??% ??,?% 0 0

Exiting... (End of file)
И время правильное: 43 сек.

Кстати, файл из первого поста открывается и даже воспроизводится командой

Код: Выделить всё

mplayer 'F-20110426-121335.mp4' -demuxer h264es -fps 25
но срёт в консоль ошибками. Как избавиться от ошибок оставляю как ДЗ для ТС.

Спасибо сказали:

Аватара пользователя
MihanEntalpo
Сообщения: 8
ОС: Linux Debian Squeeze 6.0

Re: Невозможно определить тип видеофайла mp4

Сообщение MihanEntalpo »

Спасибо вам, Sciko, именно такую команду я и хотел отыскать. Знал что какая-то простая команда должна решать проблему, но не мог правильно сформулировать.
Глядя на эту простую строчку невольно начинаю чувствовать себя тормозом, хотя быстро нарыть в манах "ту самую команду" было бы трудно.

Тему можно считать закрытой.

Для тех кто зайдет сюда за решением, да и для меня самого на будущее, команда:

Код: Выделить всё

mplayer '%1' -demuxer h264es -fps 25


А ошибки в консоли - не смертельны, и не особенно важны.

Еще раз спасибо, процесс самовыноса мозга растянувшийся на 2 недели наконец-то кончился :)
Спасибо сказали: