04.30.08

lunux cd/dvd recovery.

Posted in linux, multimedia, ubuntu at 11:32 pm by viliar

Принесла мне хорошая девушка пару дисков dvd с кучей записанных фоток. Один диск читался очень долго и нудно, с множеством ошибок, второй не читался вобще. С первым все решилось довольно просто. Монтировался нормально, и далее просто копировались файлы cp с ключом force или rsync. Потери составили около 30Mb на 4,xGb. Причем процесс шел довольно шустро, сравнительно с теми часами, которые это занимало в windows. А вот со вторым все было плохо. Диск не монтировался. К счастью, nerolinux видел и записанную дорожку и даже названия папок/файлов с указанием для последних занимаемого места. Стал смотреть, что мы имеем для восстановления такого чуда. В первую очередь в голову естественно пришел dd для считывания данных в iso образ. Но увы и ах, несмотря на явным образом заданный объем для считывания, а также опцию conv=noerror процесс заканчивался копированием двух пустых килобайт. Несмотря на указание bs=1M и seek=xx, skip=xx.  У диска, судя по всему, было повреждено начало, поэтому дальше этих двух килобайт процесс в принципе не шёл. Чуть позже нашлась совершенно замечательная  по описаниям утилита - ddrescue. Которая даже в репозитариях ubuntu есть. Среди важных отличий от dd, указывалась возможность действительно игнорировать ошибки чтения, забивать нечитаемые сектора в output нулями и даже reverse read. То, чего мне первое пришло в голову искать с dd, но чего в оном не оказалось. И тем не менее, та же история. Читаем первые два килобайта и умираем. Уж не знаю, может быть опция -r работает не так, как я об этом полагал. Стал думать, а нельзя ли это дело еще как нибудь на уровне raw доступа считать, и уже дальше разбираться с образом. На http://openkazan.info/node/1009 нашел нужные опции к cdrdao
cdrdao read-cd –read-raw –device /dev/sr0 dump.toc

которые при желании находятся в мане. Не выходит каменный цветок.

/dev/scd0: _NEC DVD_RW ND-3520A Rev: 1.04
Using driver: Generic SCSI-3/MMC - Version 2.0 (options 0×0000)

Reading toc and track data…
ERROR: Cannot read disk toc.
Может быть покрутив что-нибудь с опциями и можно было сделать, но эти опции не просматривались в досягаемом материале. То, что просмотр дорожки под nerolinux показывал вполне себе не пустой диск, а какие-то данные, если перемотать чуть-чуть вперед - заставляло меня продолжать поиск.
В погоне за результатом опустился до виндовых программ, запускаемых из под wine (0.9.60 под amd64). ОС Windows сама у меня на компьютере некоторое время соседствовал (для игр) c Linux, но года три назад перестала отягощать винчестер совсем. Посему это воспринялось мной как некое отступление. Всегда предпочитаю искать нативное решение и в большинстве случаев такие решения находились. Как практика показывала, они оказывались даже лучше. Но здесь мне нужен был результат, и желательно быстрый. Погуглив, нашел Cdroller и Cdcheck, которые принципиально не дружили с wine. Их хватило только на установку. Результата я добился в итоге с помощью (да, пусть это будет некоторой рекламой этой хорошей программе) Diskinternals CD-DVD recovery. Её совсем не смутило, что запуск был из под вайна. Спокойно нашла привод и прочитала, по-моему, практически все файлы. На данный момент уже восстановлена бОльшая их часть:

$ du -hs /home/media/temp/recover
3,7G    /home/media/temp/recover

Уверен, что под windows есть и другие замечательные программы, которые позволят с легкостью решить такую задачу и которые даже могут быть freeware в отличии от названной. Но будут ли они дружить с wine - не знаю. Искренне надеюсь, что все-таки со временем найдутся нативные решения под линукс. Мимо которых скорее всего я просто прошел. Абсолютно не принципиально, будут ли они консольные или гуевые. Главное, чтоб были.

02.11.08

ubuntu+amr.

Posted in multimedia, ubuntu at 3:01 am by viliar

Собственно, ничего нового здесь я не открою, просто немного обобщу свой опыт в разрешении данного вопроса. Сразу отмечу, что не смотря на десктопную жизнь в убунту - знаю ее не очень хорошо. Redhat-подобные системы мне ближе,
да и с серверами я больше времени провожу, нежелю тюню свой десктоп. Посему не обессудьте, если есть косяки или неточности. А еще по некоторым местам я прошелся вскользь. Это скорее такая заметка на память.

В связи с покупкой нового мобильника появилась необходимость в просмотре и прослушивании на компе материалов, отснятых с мобилы. Как ни странно, в убунте по умолчанию поддержки формата arm, в котором кодируется звук, нету.

Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders
Cannot find codec ‘amr_nb’ in libavcodec…
ADecoder init failed :(
ADecoder init failed :(

Погуглив выяснилось следующее:

1) Ходят слухи, что вроде бы в репозитарии medibuntu библиотека libavcodec собрана уже с поддержкой amr. Но, согласно забитому в багзилле ubuntu
- mplayer использует свою декодера libavc, с которым собирался,  а не из библиотеки, которая стоит в системе. И правда:

$ ldd /usr/bin/mplayer | grep -i avc
$

2) Вот эту библиотеку http://ftp.penguin.cz/pub/users/utx/amr/ можно уже найти в репозитарии debian:

http://ftp.acc.umu.se/mirror/debian-multimedia/pool/main/a/amrnb/
http://ftp.acc.umu.se/mirror/debian-multimedia/pool/main/a/amrwb/

После установки останется только найти только mplayer, собранный с поддержкой amr, чтоб не мучиться с перекомпиляцией mplayer и доустановкой всех dev пакетов для его компиляции. Собственно, уже такая сборка есть на замечательном сайте getdeb.net:
http://www.getdeb.net/app/MPlayer
И для amd64 и для i386.
Однако, несмотря на уверения самой проги
# /usr/bin/mplayer -ac help | grep amr
ffamrnb ffmpeg working AMR Narrowband [libamr_nb]
ffamrwb ffmpeg working AMR Wideband [libamr_wb]

Оно не задействует ни стоящие в системе библиотеки
$ ldd /usr/bin/mplayer | grep -i amr
$
и не хочет проигрывать звук в 3gp файлах, закодированных звуковым кодеком amr.

3) Остается мучаться пересборкой mplayer.

Можно так: http://tolik.org/articles/amr.html, так как до выхода версии mplayer rc2 нужно было скачивать с сайта 3gpp.org дополнительные пакеты. Иначе
получалось что-нибудь типа
amr.c:72:34: error: amr_float/interf_dec.h: No such file or directory

Однако уже в rc2 версии
* AMR now handled via libamr wrapper (http://www.penguin.cz/~utx/amr)

apt-get source mplayer здесь бесполезен, так как он вытаскивает версию rc1. Поэтому я качал с оф. сайта http://www.mplayerhq.hu.
Используя штатную утилиту разруливаем зависимости:
apt-get build-dep mplayer
У меня далее было выкачивание около 70Mb dev пакетов.
И сборка. При сборке я только поправил debian/rules, добавив
–enable-libamr_nb
–enable-libamr_nb

После dpkg-buildpackage (могут понадобиться флаги типа -na -nc ) поставил в систему пакет и вуаля:

# ldd /usr/bin/mplayer | grep amr
libamrnb.so.3 => /usr/lib/libamrnb.so.3 (0×00002b5ab8b4d000)
libamrwb.so.3 => /usr/lib/libamrwb.so.3 (0×00002b5ab8d8b000)

Звук есть. Конечно это не решает проблему со звуком ни с xine, ни c totem, но для просмотра 3gp вполне достаточно одного видеопроигрывателя. Кроме того, ничего не мешает их (3gp) mencoder’ом перекодировать и смотреть где захочется. В upcoming version ubuntu (8.04) уже используется версия rc2 mplayer’а, с которой либо уже они включили проигрывание amr, либо сделают это чуть позже. Надеюсь, что и в остальных видеопроигрывателях через
стандартную либу это сделают тоже. Что сделает данную заметку совсем
не нужной :-)

Miscalleneous)
Поставить себе RealPlayer или HelixPlayer. Или вытащить нужное из других дистров, в которых все ок. Типа ASPlinux. Не пробовал.

15 queries. 0.284 seconds