| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > Потоковое вещание видео |
| Автор: Lеstat 17.9.2006, 17:15 |
| Вобщем есть такая штука как NSV Если кто не знаком с этим, то кратко объясню как смогу... nsv формат видео файлов... что-то вроде контейнера. Есть программа, которая перегоняет обычные видео файлы в файлы с расширением nsv. Есть спецификация формата этого... можете ее почитать http://ultravox.aol.com/NSVFormat.rtf NSV файлики предназначены для потокового вещания видео. Официальная программа берет папку и вещает по очереди все файлы, которые там лежат! Поток она передает на Shoutcast или Icecast серверы, а дальше его можно смотреть через Winamp или VCL Это очень не удобно... мне необходимо контролировать очередь вещаемых файлов! Поэтому я пробовал написать свою "вещалку". Написал ее на java, она даже работала, но не совсем корректно... Я столкнулся со следующей проблемой: в nsv файлик записаны фреймы... своей програмкой я брал эти фреймы и отправлял ShoutCast'у. Видео воспроизводится клиентом, но за счет того что я не знаю как правильно отсылать фреймы происходит рассинхронизация и поток обрывается! Я кидал в папку два NSV файла и вещал их, пока вещался один файлик другой я заменял сохраняя имя файла... кое-что этим я добился! Вещание стало стабильным, но появилась другая проблема... Название трека отображалось в клиенте как 1.nsv 2.nsv Впринципе я думаю можно это поправить немного переписав IceCast сервер... благо исходники открыты Но я не могу его скомпилить на VS2005... да и разобраться с ним мне очень сложно! Исходников официальной вещалки нет... пробовал ее декомпилить, но разобраться с исходниками так и не смог =( Есть аналогичные проекты, которые пытаются повторить официальную вещалку они написаны на VB даже с исходниками, но у них теже проблемы что и у моего проЭкта =) Теперь я пишу под .NET на C# Я вижу два варианта решение проблемы: 1) Написать программу, которая будет правильно вещать nsv файлы 2) Написать программу, которая будет управлять стандартной вещалкой... а именно подменивать содержимое файлов, сохраняя тэги По поводу первого варианта: Возможно кто-нибудь знает как осуществляется синхронизация вещания или как воспроизводятся nsv плеером... он же тоже синхронизируется со временем! Охото узнать как вычислить задержку между отправками фреймов на сокет ShoutCast'а! Есть библиотечка для работы с NSV файликами скачать ее можно http://ultravox.aol.com/nsvlib.zip, но я с ней не разобрался Ну и по поводу второго варианты первый гавный вопрос темы относящийся к С# с которым мне ОЧЕНЬ важно разобраться: Могу ли я перехватить запрос кинутый стандартной вещалкой на порт 8001 ShouCast'y так чтобы ShoutCast его не получил, а получила моя прога, которая изменит его и отправит Shoutcast'у? Отсылает он что-то вроде "GET /admin.cgi?pass=пароль&mode=updinfo&song=ТРЕК...." Я не знаю можно ли токе сделать и если можно, то как? С проектом вожусь в течении года переодически забивая на него, но он потихоньку продвигается Буду рад любым советам! Если вы хотя бы дочитали огромное вам спасибо! =) вот немного ссылок по этой тематике http://forums.winamp.com/forumdisplay.php?forumid=152 http://www.scvi.net/ PS: Не знал в какой раздел написать... возможно тема немного отличается от тематики данного раздела, но я думаю возникнет много вопросов конкретно по C# не только в области работы с сокетами/сетями |
| Автор: Lеstat 17.9.2006, 17:43 |
| чтобы поменять нужно будет иззменить порт на который коннектятся клиенты по умолчанию... шоуткаст получает этот порт прибавляя единицу к порту клиентов (8000) Это хорошая идейка! думаю тогда нужно сделать что-то вроде прокси и вещать не на шоуткаст, а на "переходник", который повесить на какой-нибудь другой порт Только бы задержек не было бы... спасибо за идею! попробую реализовать! |