Пара технических вопросов по ogg (Vorbis).

Список разделов Ogg Vorbis Тех-поддержка

Описание: Инструменты, кодеки, сопроводительная информация, алгоритмы, программирование.

Сообщение #1 Akad » 01.06.2009, 14:15

1. Сделал свой сплиттер для ogg. Как заставить "Vorbis Decode Filter" (05A1D945-A794-44EF-B41A-2F851A117155) “цепляться” за него? У меня на выходном пине всегда правильный медиатип, но кодек не всегда "соглашается" на него. Заметил, что если играться с настройками ffdshow, то при каких-то определенных играться будет, при других - нет. Но причем здесь ffdshow?
2. По какому принципу можно "склеить" 2 vorbis файла в ogg контейнере? Файлы имеют одинаковые параметры(каналы, битрейт и пр.) что еще нужно, кроме как прибавить в каждом пакете второго файла GRANULE_POS последнего пакета из первого, и выризать данные о потоке второго файла? И можно ли не вырезать эту информацию, но что бы все основные плееры играли корректно, и что для этого нужно?
Akad
Репутация: 0
С нами: 14 лет 9 месяцев

Сообщение #2 Returned » 01.06.2009, 17:01

1. Этот вопрос лучше задать разработчику "сплитера" (то есть самому себе). Наверное дело в том, что в системе установлено два декодера?
2. Разберём.

По какому принципу можно "склеить" 2 vorbis файла в ogg контейнере?
По принципу копирования одного в другой. Как это сделать описано тут.

что еще нужно, кроме как прибавить в каждом пакете второго файла GRANULE_POS последнего пакета из первого, и вырЕзать данные о потоке второго файла?
Ууу... а зачем? То есть сделать то можно, но есть более естественные методы, один из них описан в первом ответе. Ещё можно просто сконвертировать нужные дорожки в режиме монолитного трека, такой трек увидят все плеера, но в плейлисте он естественно будет отображён как один трек.

И можно ли не вырезать эту информацию, но что бы все основные плееры играли корректно, и что для этого нужно?
Что бы основные плееры играли корректно, нужно ихним разработчикам дать ложкой по лбу (можно несколько раз), чтобы они шевелились быстрей и включали в свои плеера полноценную поддержку. Можно поступить менее радикальным способом, написать самому плагин к любимому плееру.
Returned
Куратор
Аватара
Откуда: Россия, Москва
Репутация: 1
С нами: 17 лет 10 месяцев

Сообщение #3 Akad » 01.06.2009, 18:18

Returned:1. Этот вопрос лучше задать разработчику "сплитера" (то есть самому себе). Наверное дело в том, что в системе установлено два декодера?
Мммм... Какое отношение имеют другие декодеры к Vorbis Decode Filter? Как убрать "их влияние"? Не соединятеся ни в graphedit, ни программно.
Один и тот-же медиатип (в точности до бита) то цепляется, то нет. Более того этот декодер не всегда цепляется к энкодеру из этого же пакета кодеков (самого что не на есть официального, на сколько я понимаю). Когда к энкодеру цепляется, цепляется и к моему фильтру, когда нет, то нет. Пробовал на разных машинах правда только под XP. Результат всегда не предсказуем и зависит каким-то образом от настройки декодирования vorbis в ffdshow. Если там несколько раз поменять настройку, то возможно начнет цепляться. Это проявляется на нескольких последних пакетах oggcodecs.ххх.exe. На каком-то старом (не помню) - работало всегда, но пользователя заставлять качать древний пакет - не правильно.
Returned:[quote]что еще нужно, кроме как прибавить в каждом пакете второго файла GRANULE_POS последнего пакета из первого, и вырЕзать данные о потоке второго файла?
Ууу... а зачем? То есть сделать то можно, но есть более естественные методы, один из них описан в первом ответе. Ещё можно просто сконвертировать нужные дорожки в режиме монолитного трека, такой трек увидят все плеера, но в плейлисте он естественно будет отображён как один трек.
[/quote]
Спасибо за ответ. Но это не совсем то. У меня задача сохранить единым потоком радиостанцию. Если я захватываю "в лоб" весь трафик, то трафик не играется нормально ни одним известным мне плеером. После всех моих экспериментов с Granule position, Bitstream serial number,Page sequence number и т.д. я добился того, что играется нормально только первый трек. или первый и второй, но не до конца (эталон для меня foobar2000, так же проверяю через aimp и directshow фильтры).
Не могу найти документации как правильно определять (и соответственно изменять когда надо) длительность трека, и как правильно соединять несколько треков в один на программном уровне, что бы посмотреть что в трафике не то и поправить.
Akad
Репутация: 0
С нами: 14 лет 9 месяцев

Сообщение #4 Returned » 01.06.2009, 18:32

У меня задача сохранить единым потоком радиостанцию. Если я захватываю "в лоб" весь трафик, то трафик не играется нормально ни одним известным мне плеером.
Это как так? А чем захватывается? Если не играют плера, значит поток кривой, и захватывается через какой то самопал. Я вообще не понял, что требуется, проиграть просто ogg файл, или проиграть с разбитием на треки? Если с разбитием на треки, то я уже написал, это поддерживает только фубар на данный момент.
Returned
Куратор
Аватара
Откуда: Россия, Москва
Репутация: 1
С нами: 17 лет 10 месяцев

Сообщение #5 Akad » 01.06.2009, 18:41

Returned:[quote]У меня задача сохранить единым потоком радиостанцию. Если я захватываю "в лоб" весь трафик, то трафик не играется нормально ни одним известным мне плеером.
Это как так? А чем захватывается? Если не играют плера, значит поток кривой, и захватывается через какой то самопал. Я вообще не понял, что требуется, проиграть просто ogg файл, или проиграть с разбитием на треки? Если с разбитием на треки, то я уже написал, это поддерживает только фубар на данный момент.[/quote]
Я пишу модуль для прослушивания/записи ogg для одной программы. Играется через фильтр "core vorbis" без проблем (сплиттер мой собственный), а вот с записью проблемы. Почему-то этот поток, который я без проблем декодирую, ни один другой плеер декодировать нормально не в состоянии. Максимум - первые 2 трека, да и то не до конца.
Akad
Репутация: 0
С нами: 14 лет 9 месяцев

Сообщение #6 Returned » 01.06.2009, 18:51

Если есть возможность выложить небольшой кусок, я бы посмотрел, а так пока нечего добавить.
Returned
Куратор
Аватара
Откуда: Россия, Москва
Репутация: 1
С нами: 17 лет 10 месяцев


Вернуться в Тех-поддержка