видеофайлы (компьютерное, линукс)
May. 19th, 2004 02:57 amОх, как же я измучился с этими плейерами и конвертерами разных видеоформатов за последние два дня.
Привык, что mplayer хоть и монстр, зато играет практически всё, что ему дают. Ну и хорошо. А тут скачал за последние пару дней много фильмов и мультфильмов. Некоторые из них хочу смотреть и другим показывать на телевизоре в гостиной, а не на компьютерном экране. Там у меня DVD-плейер; правда, DVD-writer'а у меня нет, но плейер умеет также показывать фильмы, записанные на CD в формате SVCD. Казалось бы, простая задача: есть исходный файл .AVI, нужно получить образ для записи SVCD на диск. Наверняка где-то должна быть умная программа, которой даёшь файл и она всё, что нужно делает, правда? Ага, как же.
Ненормальное количество библиотек и утилит (я о Линуксе говорю, кстати), совершенно непонятно, какие из них лучше, как их использовать. Документация везде очень убогая, предполагает, что читатель все технические термины знает как свои пять пальцев. В общем, много времени утекло, пока я не разобрался наконец, что мне нужно что-то вроде следующей командной строки:
Эта последовательность команд вытаскивает видео-поток из input.avi, переводит его в промежуточный формат yuv пакета mjpegtools (ох, какую я ошибку допустил, попробовав вначале делать это через промежуточные файлы... этот .yuv съел у меня всё свободное место на диске за пару минут), потом yuvscaler переводит его в размеры, подходящие для SVCD, одновременно сжимая из формата 16:9 в телевизионный формат 4:3 (опция -M WIDE2STD), потом mpeg2enc переводит это всё в формат MPEG-2, причём надо ему ещё сказать правильный framerate (опция -F 1 в данном случае), который в промежуточном формате yuv не сохраняется, так что нужно самому посмотреть в исходном файле и подобрать нужную опцию. И ещё много всяких нужных опций подобрать.
Потом надо то же самое сделать для звука, только с mp2enc вместо yuvscaler и mpeg2enc, а потом ещё надо использовать mplex для мультиплексирования всего этого вместе в один файл, а потом vcdimager, чтобы из этого файла сделать образ для CD. Всего шесть программ.
Но тут ещё оказалось, что ffmpeg не умеет читать файлы субтитров (которые к данному фильму у меня лежат в формате VobSub отдельно). И вообще никто практически не умеет. Умеет mplayer, который их правильно показывает. Что ж, пришлось разбираться в опциях mplayer, чтобы заставить его вместо показа экспортировать видео и звук в каких-нибудь удобных форматах. Там свои сотни опций, но к счастью оказалось, что есть скрипт mencvcd, внутри пакета mplayer, который запускает все нужные программы: mplayer с опциями экспорта видео в yuv и аудио в wav, yuvscaler и mpeg2enc как описано выше, mp2enc для кодирования звука, и потом mplex и vcdimager. Правда, у этого скрипта свои 20 опций, которые он использует для того, чтобы правильно передавать опции всем остальным, но уже хотя бы только 20. После нескольких попыток он стал правильно переводить видео (сохраняя нужные размеры, а не искажая картинку при переводе в размеры SVCD), и сейчас корпит над этим злосчастным фильмом.
Но как это всё, простите, через задницу. И нигде нет нормального подробного guide'а, который объяснил бы процесс и все термины для новичков. Есть несколько страниц в сети, в разной степени устаревших, с очень плохими объяснениями или вообще без объяснений, с инструкциями типа "делай так и не задумывайся, что это делает и как работает". Одна из них рассказывает про то, как это всё делать с помощью transcode, ещё одного огромного пакета для перевода всего во всё; он у меня вообще работать отказался.
И с этими субтитрами дурацкими. Вот в моём случае я ужимаю широкоформатный (16:9) фильм к размеру 4:3 . Снизу и сверху от картинки на экране будут чёрные полосы. Вот туда же самое место субтитры поместить, чтобы не мешали картинке! Но не получается никак, потому что субтитры накладывает mplayer ещё до того, как yuvscaler пережимает картинку в новый размер и добавляет чёрные полосы. Если делать это правильно, то, по-моему, о субтитрах должен знать mplex, мультиплексер, который соединяет картинку и звук (а может и несколько картинок): ему бы эти файлы VobSub дать, чтобы он их поставил на чёрные полосы. Но он не умеет. И в Windows то же самое, кажется: субтитры накладывает программа-плейер до того, как программа-encoder получает картинку и меняет размерность.
Теперь я знаю о таких вещах, как AVI, MPEG-2, SVCD, NTSC/PAL (резолюции разные у них в SVCD! 480x480 и 480x576), aspect ratio, framerate, MP2, и ещё многих словах и сокращениях, гораздо больше, чем мне хотелось бы знать.
В Windows, кстати, здесь рассказывают, как то же самое сделать (перевести divx записанный в avi в образ SVCD, наложив субтитры VobSub при этом). Тоже не подарочек, между прочим.
А ещё у меня есть очень наивный вопрос. Что мне нужно, чтобы я мог видео-файлы играть на компьютере (причём стандартными какими-нибудь плейерами, тем же mplayer в Линуксе, или Windows Media Player в Windows) а показывались они при этом чтобы сразу на телевизоре? Такое ведь делается как-то? Что нужно для этого купить с точки зрения hardware, что куда воткнуть, что установить с точки зрения software (особенно в Линуксе было бы полезно)? Если кто-то расскажет или даст ссылку хорошую, буду благодарен.
Привык, что mplayer хоть и монстр, зато играет практически всё, что ему дают. Ну и хорошо. А тут скачал за последние пару дней много фильмов и мультфильмов. Некоторые из них хочу смотреть и другим показывать на телевизоре в гостиной, а не на компьютерном экране. Там у меня DVD-плейер; правда, DVD-writer'а у меня нет, но плейер умеет также показывать фильмы, записанные на CD в формате SVCD. Казалось бы, простая задача: есть исходный файл .AVI, нужно получить образ для записи SVCD на диск. Наверняка где-то должна быть умная программа, которой даёшь файл и она всё, что нужно делает, правда? Ага, как же.
Ненормальное количество библиотек и утилит (я о Линуксе говорю, кстати), совершенно непонятно, какие из них лучше, как их использовать. Документация везде очень убогая, предполагает, что читатель все технические термины знает как свои пять пальцев. В общем, много времени утекло, пока я не разобрался наконец, что мне нужно что-то вроде следующей командной строки:
ffmpeg -i input.avi -f yuv4mpegpipe - |yuvscaler -v 0 -n p -O SVCD -M WIDE2STD |mpeg2enc -v 0 -f 4 -n p -F 1 -o output.mpv
Эта последовательность команд вытаскивает видео-поток из input.avi, переводит его в промежуточный формат yuv пакета mjpegtools (ох, какую я ошибку допустил, попробовав вначале делать это через промежуточные файлы... этот .yuv съел у меня всё свободное место на диске за пару минут), потом yuvscaler переводит его в размеры, подходящие для SVCD, одновременно сжимая из формата 16:9 в телевизионный формат 4:3 (опция -M WIDE2STD), потом mpeg2enc переводит это всё в формат MPEG-2, причём надо ему ещё сказать правильный framerate (опция -F 1 в данном случае), который в промежуточном формате yuv не сохраняется, так что нужно самому посмотреть в исходном файле и подобрать нужную опцию. И ещё много всяких нужных опций подобрать.
Потом надо то же самое сделать для звука, только с mp2enc вместо yuvscaler и mpeg2enc, а потом ещё надо использовать mplex для мультиплексирования всего этого вместе в один файл, а потом vcdimager, чтобы из этого файла сделать образ для CD. Всего шесть программ.
Но тут ещё оказалось, что ffmpeg не умеет читать файлы субтитров (которые к данному фильму у меня лежат в формате VobSub отдельно). И вообще никто практически не умеет. Умеет mplayer, который их правильно показывает. Что ж, пришлось разбираться в опциях mplayer, чтобы заставить его вместо показа экспортировать видео и звук в каких-нибудь удобных форматах. Там свои сотни опций, но к счастью оказалось, что есть скрипт mencvcd, внутри пакета mplayer, который запускает все нужные программы: mplayer с опциями экспорта видео в yuv и аудио в wav, yuvscaler и mpeg2enc как описано выше, mp2enc для кодирования звука, и потом mplex и vcdimager. Правда, у этого скрипта свои 20 опций, которые он использует для того, чтобы правильно передавать опции всем остальным, но уже хотя бы только 20. После нескольких попыток он стал правильно переводить видео (сохраняя нужные размеры, а не искажая картинку при переводе в размеры SVCD), и сейчас корпит над этим злосчастным фильмом.
Но как это всё, простите, через задницу. И нигде нет нормального подробного guide'а, который объяснил бы процесс и все термины для новичков. Есть несколько страниц в сети, в разной степени устаревших, с очень плохими объяснениями или вообще без объяснений, с инструкциями типа "делай так и не задумывайся, что это делает и как работает". Одна из них рассказывает про то, как это всё делать с помощью transcode, ещё одного огромного пакета для перевода всего во всё; он у меня вообще работать отказался.
И с этими субтитрами дурацкими. Вот в моём случае я ужимаю широкоформатный (16:9) фильм к размеру 4:3 . Снизу и сверху от картинки на экране будут чёрные полосы. Вот туда же самое место субтитры поместить, чтобы не мешали картинке! Но не получается никак, потому что субтитры накладывает mplayer ещё до того, как yuvscaler пережимает картинку в новый размер и добавляет чёрные полосы. Если делать это правильно, то, по-моему, о субтитрах должен знать mplex, мультиплексер, который соединяет картинку и звук (а может и несколько картинок): ему бы эти файлы VobSub дать, чтобы он их поставил на чёрные полосы. Но он не умеет. И в Windows то же самое, кажется: субтитры накладывает программа-плейер до того, как программа-encoder получает картинку и меняет размерность.
Теперь я знаю о таких вещах, как AVI, MPEG-2, SVCD, NTSC/PAL (резолюции разные у них в SVCD! 480x480 и 480x576), aspect ratio, framerate, MP2, и ещё многих словах и сокращениях, гораздо больше, чем мне хотелось бы знать.
В Windows, кстати, здесь рассказывают, как то же самое сделать (перевести divx записанный в avi в образ SVCD, наложив субтитры VobSub при этом). Тоже не подарочек, между прочим.
А ещё у меня есть очень наивный вопрос. Что мне нужно, чтобы я мог видео-файлы играть на компьютере (причём стандартными какими-нибудь плейерами, тем же mplayer в Линуксе, или Windows Media Player в Windows) а показывались они при этом чтобы сразу на телевизоре? Такое ведь делается как-то? Что нужно для этого купить с точки зрения hardware, что куда воткнуть, что установить с точки зрения software (особенно в Линуксе было бы полезно)? Если кто-то расскажет или даст ссылку хорошую, буду благодарен.
no subject
Date: 2004-05-18 05:01 pm (UTC)На ноутбуке я подключаю ПК+телевизор через S-Video, плюс ПК к саунд-системе 5.1. После этого в свойствах дисплея на Windows говорим ему, что появился телевизор и картинка с экрана начинает транслироваться заодно на ТВ (у меня 1024x768 максимум, видимо, нужен HDTV для более высоких разрешений).
Там еще есть такой маразм под Windows, что на каждый плейер картинку воспроизведет на TV-экран с AVI/MPEG/WMV-файла. Т.е. вроде на мониторе показывает, а на телевизоре пустое место. Итого приходится хранить джентльменский набор из Windows Media Player, WinAmp, IrfanView с кодеками, Media Player Classic и Real Player, так как иногда картинку удачно на ТВ транслирует только один из них.
no subject
Date: 2004-05-18 09:09 pm (UTC)В свойствах видеокарты надо просто указать, какой из дисплеев primary, какой secondary. Видеопоток обычно выводится на primary. Это может называться по-разному в зависимости от видеокарточки, конечно, но общая идея именно такая. Поверьте человеку, уже года три обеспечивающему техподдержку научных конференций, на которых то и дело кому-нибудь приспичивает показать с ноутбука бесценные видеокадры :)
no subject
Date: 2004-05-19 04:17 am (UTC)no subject
Date: 2004-05-18 05:23 pm (UTC)и все эти программы, как всегда, хоть там хоть там будут не совершенны. это соврешенно понятно почему, кстати, формата ДВД, к примеру, никто не знает, этот большой секрет выдается только под NDA за деньги, что, естественно, вообще не позволяет легально написать нормальный свободный двд проигрыватель или там утилиты для создания или разбора ДВД. Соотвественно все программы что у нас есть - это то что получено через reverse engineering, так что надежность у них соотвественная. www.doom9.org - лучший сайт для видолюбителей, кстати.
а для того чтобы смотреть видео на тв нужна всего-лишь видеокарточка с видео-выходом, например любая Radeon пойдет, кажется.
no subject
Date: 2004-05-18 09:26 pm (UTC)no subject
Date: 2004-05-18 10:21 pm (UTC)Они сами (про VideoLAN) на своей странице пишут
"The use and distribution of the libdvdcss library is controversial in a few countries such as the United States because of a law called the DMCA (Digital Millennium Copyright Act). If you are unsure about the legality of using and distributing this library in your country, please consult your lawyer. "
no subject
Date: 2004-05-18 05:52 pm (UTC)что там под линуксом - не знаю, но подозреваю, что такой же страшенный бардак :)
пробовал искать себе на работу софт под макинтоши - вообще всё плохо :) там даже нормального mp3-encoder'а (или хотя бы frontend-а к LAME) днём с огнём не найти - я как-то раз три свободных вечера на research убил - nihil
no subject
Date: 2004-05-18 10:23 pm (UTC)no subject
Date: 2004-05-18 07:44 pm (UTC)в самых общих чертах:
- если уже есть "двухголовая" видеокарта -- подключить видеовыход [низкочастотный, a.k.a. RCA или "тюльпан"; или S-Video; со SCARTами на видеокартах на сталкивался] к видеовходу на ТВ/Видео, потом включить видеовыход [драйвера, control panel, может потребоваться перезагрузка]; удостовериться, что в телевизоре есть картинка. если картинки нет -- биться головой обо всё подряд, пока нужная картинка не появится. ;)
- некоторые карты умеют работать в разных режимах: "clone" и "multiple head" [на видеовыход поступает либо та же картинка, что и на основной монитор, либо "вторая голова"] -- выбрать наиболее удобный. в принципе, вполне подойдёт clone [тогда будет работать любой софт]
- поиграться с настройками разрешения и sync rates, пока картинка не станет искомого размера/качества [рекомендую не включать разрешение выше 800x600, качество может пострадать]
- перепробовать имеющийся софт на предмет умения играть на "второй голове" [обычно умеет. если не умеет -- скорее всего, помойка]. этот шаг можно пропустить, если включён "clone".
- не забыть про звук: выход саундкарты подключить к аудиовходу ТВ/Видео [обратить внимание на уровни сигналов, если используется speaker out, а не line out]. есть ещё тонкости вроде многоканального звука, но со старыми мультиками об этом можно смело забыть. ;)
если нет охоты так
евозиться, можно купить т.н. scan converter. с ними всё проще -- чётко по инструкции и без возни со всякими драйверами/софтом. выход с монитора на вход скан-конва, выход скан-конва на вход ящика, минимум настроек, отдельно звук -- и готово. нюанс: скан-конвы обычно стоят довольно дорого, как минимум не дешевле приличной видеокарты. с дешёвыми моделями возможны неприятные сюрпризы из-за качества изображения. если в .il так бывает -- купить, попробовать, вернуть в магазин если не понравится.bonus level: если хочется
выеособенно отличиться, можно купить ещё вот такого типа мульку и передавать изображение без проводов на телевизор в соседней комнате. качество изображения будет зависеть от наличия помех и качества самой железки. в противном случае, в соседнюю комнату можно просто протянуть длинный шланг. да, про шланги не забывать all the way: зайти в местный аналог RadioShack'а и купить достаточной длины и количества (самое главное -- с нужными разъёмами!).hope this helps. если есть более конкретные вопросы -- возможно, смогу помочь.
no subject
Date: 2004-05-18 08:23 pm (UTC)no subject
Date: 2004-05-18 08:36 pm (UTC)no subject
Date: 2004-05-19 04:19 am (UTC)no subject
Date: 2004-05-18 08:27 pm (UTC)no subject
Date: 2004-05-18 10:15 pm (UTC)И ничего перекодировать не надо. Оно вроде само все играет
Про субтитры правда не скажу - не узнавал
no subject
Date: 2004-05-18 11:49 pm (UTC)Что касается комп->TV, то, насколько я понимаю, надо карточку с видеовыходом и шнурок соответствующий к ней и всё. Этого, вроде бы, достаточно. Есть, впрочем, внешние конверторы выхода на дисплей в ТВ, но они довольно дорогие.
no subject
Date: 2004-05-19 12:15 am (UTC).www.dvd2dvd.org
Date: 2004-05-19 01:43 am (UTC)TV out для Линукса
Date: 2004-05-19 04:02 am (UTC)как конкретно это делать зависит от карточки
рассмотрим 2 варианта
НВИДИА
бинарные драйвера НВИДИА от производителя отлично поддерживают ТВ-оут как еще один
дисплей. Есть несколько вариантов конфигурации. все они хорошо описаны
вот тут http://www.bog.pp.ru/work/linux_nvidia.html
я лично создаю еще один Х-сервер с ТВ как монитором и просто запускаю мплайер или ксин на него.
есть так же программа
http://sourceforge.net/projects/nv-tv-out/
которая по идее от драйвера не зависит
у меня с первого тыка не заработала... не разбирался
АТИ
если у тебя старая карточка АТИ ( по Радеон включительно) и ты пользуешься
ванилла драйвером тогда тебе нужно это :
http://www.stud.uni-hamburg.de/users/lennart/projects/atitvout/
если у тебя относительно новая карточка RADEON™ 8500 series и выше
тогда тебе нужен ATI's proprietary Linux driver
(доступен у производителя)
описание конфигурации для ТВ-оут находится тут:
http://www2.ati.com/drivers/linux/Linux_376_Release_Notes.html
желаю удачи
ПЫСЫ.
Вообще-то я профессионально занимаюсь разработкой программ обработки видео под Линуксом, так если есть вопросы по поводу енк/транс кодирования, то милости прошу
Для Windows
Date: 2004-05-19 11:06 am (UTC)VLC
Date: 2004-05-19 01:21 pm (UTC)пользуюсь на всех своих платформах, Windows, Linux, BeOS.
практически для всех форматов, начиная от "закрытого" макинтошевского QuickTime-Sorensen и заканчивая отрытыми и стопроцентно легальными видео и аудиоформатами OGG
а почему комп виноват, если с телевизором задница?
Date: 2004-05-19 06:39 pm (UTC)no subject
Date: 2004-05-19 10:51 pm (UTC)no subject
Date: 2004-05-24 08:33 pm (UTC)Расскажу о своём скромом "форточкином" опыте. Вынь ХР, древнейший дешевый кастрированный 2ой джифорс с видеовыходом (большинство современных карточек его имеют тоже), TvTool - софт для вывода не телевизор (хотя можно и стандартными драйверами выводить, просто мороки больше), стандартный WindowsMediaPlayer, халявный кодек с divx.com. Всё. 90-95% всего видео при таком раскладе можно смотреть на телевизоре - проблемы в основном с хитрыми кодировками аудио. Если поставить на винду Nimo Codec Pack - то смотреть можно вообще практически всё.
з.ы. забыл! Еще есть кабель от видеокарточки до телевизора. S-Video, или как его в народе называют, S-VHS - покупается легко в любом компьютерном/видео магазине.
MacOS X
Date: 2004-05-27 10:58 pm (UTC)iVCD (http://www.mireth.com/pub/ivme.html).
Конечно можно скопилить все программы приведенный выше и ими
делать, но честно говоря мне проще заплатить $25 и не мучаться.
no subject
Date: 2006-09-07 08:43 am (UTC)Из того что там написано мне все ясно, кроме одного. Где взять mpeg2enc? Вроде он должен входить в состав mjpegtools. Я поставил их, но mpeg2enc не появился. И в составе rpm-пакета его нет.
Вы слчайно не знаете, что я думаю не так?