Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » VirtualDub

Модерирует : gyra, Maz

Widok (21-01-2009 12:06): лимит страниц. продолжаем здесь  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

Robert_Ingil



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Кто виноват?(Вместо введения)
 
Начну с простого, т. е. с искажения изображения.
VideoLAN 0.8.6(a-d) VirtualDub 1.7.7    
     

Таблица 1. Случай с искажением.

VideoLAN приведён здесь только для примера правильного отображения (ну и, просто это мой любимый плеер), остальные всемозможные проигрыватели при установленных кодеках воспроизводят всё аналогично.
Тут надо вспомнить, что VirtualDud работает только с VFW , что наталкивает на мысль о причине этой беды - разная реализация механизма декодирования у DirectShow и VFW. Кто виноват в этом, к сожалению, не знаю. Зато, источник другой головной боли связанной с FLV известен точно - On2 Technologies, имхо.
FLVPlayer4free VideoLAN 0.8.6 (a-d) VirtualDub (1.7.6-1.7.7) Media Player Classic 6.4.9.0
             

Таблица 2. Билеберда с VP6F.

В этом ролике у мистера Бина проблемы с индейкой. А у нас проблемы с роликом, точнее с VP6F-кодеком (он же FLV4). Почему-то у меня есть сильное подозрение, что упомянутые выше авторы-создатели предоставили немного отличающиеся варианты VP6F для производителей платного ПО (работающего с FLV) и для  всех остальных. Я не случайно привожу пример воспроизведения с использованием разных технологий:
  • Adobe Flash Player 8-... (Естественно, поддерживает все кодеки для Flash Video) - FLVPlayer4free
  • VFW - VirtualDub
  • DirectShow - Media Player Classic
    А VideoLAN 0.8.6(a-d) вообще за счёт своих библиотек,  хотя конкретно VP6F не поддерживает. Правда, до последних версий не все shareware конверторы то осиливали, поэтому оставалась надежда, что как-нибудь, да где-нибудь что-нибудь обновиться (из freeware), и будет всем счастье. Больше всего на VLC возлагалось, потому как другие свободные, известные мне, всё больше кодеко-зависимые... Однако VideoLAN'овцы обещаются только к неведомой 9й версии реализовать поддержку.
     
    Что делать? (Вместо руководства к действию)
     
      Алгоритм 1
    1. Срочно качаем и устанавливаем AVISynth
    2. Пишем простенький скрипт для AVISynth(т. е. текстовый файл с расширением *.AVS), вроде такого (нужное - раскоментировать, ненужное - закоментировать):

      Код:
       
      clip=ConvertToRGB(DirectShowSource("5505709.flv"))
      #В моём конкретном случае понадобилось так, иначе требовалась делимость на 4.
      #clip=DirectShowSource("5505709.flv")
      AudioDubEx(clip,clip)
      #Последние закоментированные строчки на случай, если звук вдруг посторонний прикручивается (особенно не WAV)
      #sound=DirectShowSource("5505709.mp3")
      #AudioDub(clip,sound)
       

    3. Открываем полученный скрипт в VirtualDub
    4. Работаем как с несжатым AVI

    В результате получаем:

    Конечно, с помощью AVISynth'а можно открывать даже дверь (если на неё есть DirectShow фильтр )
    (Да и вообще при всех его возможностях не рационально как-то лишь редкие FLV'шки открывать) Ну а если, больше нечем?
    Короче, применяем Алгоритм 1 только при описанных выше сиптомах.
     
    Для второго случая (когда VFW не при чём) AVISynth нам не понадобится. Можете его удалять с компьютера.
    (Шучу. Такой инструмент без дела долго не пролежит.)
    Направление моих мыслей было таково - попробовать открыть закодированный VP6F файл с помощью другого какого-нибудь кодека , естественно, «близкородственного», благо у On2 их несколько. Вот только мои старания не увенчались успехом, потому что нет у FLV_Driver'а расширенных опций открытия, как для AVI, например. ...

      Алгоритм 2
    1. Открываем в VirtualDub'е наш *.flv как есть.
    2. Выбираем в опциях Video  и Audio обработки Direct stream copy
      Т. е. просто меняем контейнер с FLV на AVI
    3. Сохраняем как AVI.
      Следите за ходом мысли?
    4. Открываем полученный в предыдущем действии файл в VirtualDub'е, не забыв в диалоге открытия поставить галочку рядом с «Ask for extended options after this dialog».
    5. Получаем диалог расширенных опций открытия.
      У нас же теперь AVI;)
    6. Ставим галочку напротив «Force video format FOURCC code to». И там же вводим код желаемого кодека (список этих кодов можно посмотреть вот здесь, например), естественно, он не должен совпадать с «VP6F» или «FLV4»...
      Я не запрещаю эксперементировать, но хочу сократить ваше время. Подходят(?), только VP6'е. При этом без разницы (для нас) какой: VP60, VP61 или VP62

    А дальше возможны два варианта:

      7. Можно закрепить правило открытия нужным кодеком, вписав его в поле рядом с «Force video codec handler FOURCC code to» и сохранив файл методом Direct stream copy.  
    FOURCC в файле можно изменить и другими программами, в конце-концов HEX-редактором каким (встроенным)
    7. Просто открываем. Получаем отражённое, но в остальном правильное изображение.  
    Я же знал, что с On2 не всё гладко    
      8. Открытие файла, с «исправленным» FOURCC в VirtualDub'е или другой программе. Применение отражения по вертикали (если необходимо).  
    Ещё один сюрприз от On2 — исправляется изображение только для VFW-кодеков, для DirectShow же просто отражается
    8. Применяем фильтр Flip Vertical  
     
    9. Работаем с фильмом, как ни в чём ни бывало.


    Проблемный FLV4 (уже в контейнере AVI) ролик, открытый в VirtualDub'е с FOURCC=VP60 и применением «Flip vertical»

     
    Кому на Руси жить хорошо? (Вместо заключения)
     
    А жить хорошо AVISynth'овцам (и не только в РуНете).
    Я так думаю потому, что... да не сочтите это предательством VirtualDub'а... потому, что есть несколько элегантных (на мой взгляд) вариантов решения последней проблемы, при помощи AVISynth'а. (Его же гикто не удалил?)
    Скажем, подменили мы в файле FOURCC на VP60, а теперь откроем при помощи AVISynth'а. Для этого создаём скрипт Ну, файл с расширением *.AVS следующего содержания:

    Код:
     
    clip=AVISource("Mr Bean Turkey Trouble_VP60.avi")
    AudioDubEx(clip,clip)
     


    Кто бы мог подумать, даже отражать не надо...(ох уж мне эти On2 Technolog'и), хотя AVISynth легко мог бы.
    Или ещё лучше. Как только изменили контейнер, сразу пишем скрипт:

    Код:
     
    clip=AVISource("Mr Bean Turkey Trouble.avi", fourCC="VP60")
    AudioDubEx(clip,clip)
     

    Я утверждал, что без разницы на какой VP6 заменить... и следующий скрипт это подтверждает:

    Код:
     
    clip_VP6F=AVISource("Mr Bean Turkey Troubl.avi", fourCC="VP6F")
    clip_VP60=AVISource("Mr Bean Turkey Troubl.avi", fourCC="VP60")
    clip_VP61=AVISource("Mr Bean Turkey Troubl.avi", fourCC="VP61")
    clip_VP62=AVISource("Mr Bean Turkey Troubl.avi", fourCC="VP62")
    clip=StackHorizontal(StackVertical(clip_VP6F,clip_VP60),StackVertical(clip_VP61,clip_VP62))
    AudioDubEx(clip,clip_VP6F)
     


    Думаю, наглядно.
     
    Добалено намного позже
    Хм... А на Linux'е все кодеки  On2 VP6 — это VP6F. Что, наверное, и помогает VideoLAN'у под ним воспроизводить все FLV'шки без проблем.


  • Всего записей: 66 | Зарегистр. 09-10-2006 | Отправлено: 11:39 23-12-2007 | Исправлено: Robert_Ingil, 10:03 08-02-2008
       

    На первую страницук этому сообщениюк последнему сообщению

    Компьютерный форум Ru.Board » Компьютеры » Программы » VirtualDub
    Widok (21-01-2009 12:06): лимит страниц. продолжаем здесь


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru