LINUX.ORG.RU

Проблема с mplayer и потоками.

 , ,


0

2

Здравствуйте. Пользуюсь mplayer в Linux, в минималистичном дистрибутиве. Проблема такая: у меня есть небольшой скрипт-wrapper для mplayer с нужными параметрами. Определенное время его хватало, но недавно я попробовал запустить несколько новых фильмов (более новых) и возникла проблема с рассинхронизацией, медленной скоростью и сообщением в консоли о том, что у меня «медленная машина». Между тем машина у меня если и медленная, то не для видео-плеера. Это препятствие я решил добавлением опции -lavdopts threads=4 в wrapper. Новые фильмы заработали отлично, но... перестали запускать старые. Опытным путем выяснилось, что старые фильмы в формате AVI с новым скриптом wrapper показывают черный экран, а в ошибки сыплют сообщениями типа get_buffer() failed [stride changed]. Звук идет нормально. При указании количества threads=1 или при удалении опции они запускаются. (Но тогда плохо работают новые фильмы, которым нужно больше вычислительных ресурсов.) Я думал, что может, не хватает pth. Поставил его, но это не помогло. Думал, что может быть, есть разница в кодеках между файлами, которые играют с threads=4 и которые нет. Я взял небольшую выборку и проверил ffmpeg, но на первый взгляд как рабочие, так нерабочие фильмы - иногда различаются, а иногда практически полностью совпадают по параметрам. Никакой корреляции.

Вопрос, почему mplayer и AVI так плохо дружат с multithreading, если при этом фильмы в формате MP4, с теми же кодеками с этой же опцией отлично работают (и именно благодаря ней)?

Некоторое дерьмо: MPlayer 1.1-4.9.1

фильм, который смог:

Input #0, avi, from 'Avatar.avi':
  Metadata:
    encoder         : VirtualDubMod 1.5.10.2 (build 2542/release)
  Duration: 02:35:05.04, start: 0.000000, bitrate: 1862 kb/s
    Stream #0:0: Video: mpeg4 (XVID / 0x44495658), yuv420p, 704x400 [SAR 1:1 DAR 44:25], 25 tbr, 25 tbn, 25 tbc
    Stream #0:1: Audio: ac3 ([0] [0][0] / 0x2000), 48000 Hz, 5.1(side), fltp, 384 kb/s
фильм, который не смог:
Input #0, avi, from 'Johnny English.avi':
  Metadata:
    encoder         : VirtualDubMod 1.5.4.1 (build 2178/release)
  Duration: 01:23:50.04, start: 0.000000, bitrate: 2332 kb/s
    Stream #0:0: Video: mpeg4 (XVID / 0x44495658), yuv420p, 720x384 [SAR 1:1 DAR 15:8], 25 tbr, 25 tbn, 25 tbc
    Stream #0:1: Audio: ac3 ([0] [0][0] / 0x2000), 48000 Hz, 5.1(side), fltp, 384 kb/s

В mplayer много всяких багов, попробуйте собрать последний, может уже исправили.

mky ★★★★★ ()

MPlayer протух. Попробуй MPV — это его форк (точнее форк MPlayer2, который является форком обычного).

Psych218 ★★★★★ ()
Ответ на: комментарий от Psych218

Да я слышал. Просто мне лень собирать из сырцов, так как в репозитории пакета нет, а в этом дистрибутиве собирать что-то из сырцов - иногда значит подтягивать зависимости тоже из сырцов, и так ad infinitum. Поэтому я стараюсь масштабные проекты собирать пореже, когда без них никак. А сейчас я сделал костыль, он работает, я радуюсь) ничего собирать не надо.

Scampada ()
Ответ на: комментарий от anonymous

В этом есть свой резон. Если умеешь костылять, то можно и забагованным продуктом пользоваться, главное знать как компенсировать его баги костылями. Чай, не синьор-проект ваяем, а просто фильмики смотрим.

Scampada ()

Плюсую mpv, хавать явно нерабочий код называя его стабильным — явный неадекват.

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.