Хочу написать небольшую программку, с небольшим функционалом. Всё, что она должна уметь — это открыть видео-файл и начать вещать его в сеть, так, чтобы любой пользователь сети, к которой я подключён, мог свободно просматривать это через, ну например, Windows Media Player. Как можно организовать такое вот вещание?
Здравствуйте, H.P. Baxxter, Вы писали:
HPB>Хочу написать небольшую программку, с небольшим функционалом. Всё, что она должна уметь — это открыть видео-файл и начать вещать его в сеть, так, чтобы любой пользователь сети, к которой я подключён, мог свободно просматривать это через, ну например, Windows Media Player. Как можно организовать такое вот вещание?
Надо скачать Windows Media Encoder здесь и SDK к нему (там примеры и описание). Установить. Создать новый проект, добавить reference на Windows Media Encoder (на закладке COM).
Создание энкодера выглядит примерно так:
using WMEncoderLib;
////////////////
////////////////private void button1_Click(object sender, EventArgs e)
{
// Create WMEncoderApp and WMEncoder objects.
WMEncoderApp EncoderApp = new WMEncoderApp();
IWMEncoder Encoder = EncoderApp.Encoder;
// Specify the source for the input stream.
IWMEncSourceGroupCollection SrcGrpColl = Encoder.SourceGroupCollection;
IWMEncSourceGroup SrcGrp = SrcGrpColl.Add("SG_1");
IWMEncVideoSource2 SrcVid = (IWMEncVideoSource2) SrcGrp.AddSource(WMENC_SOURCE_TYPE.WMENC_VIDEO);
SrcVid.SetInput("D:\\Media\\Video\\dmb.avi", "", "");
// Specify a profile.
IWMEncProfile Pro;
IWMEncProfileCollection ProColl = Encoder.ProfileCollection;
for (int i = 0; i < ProColl.Count; i++)
{
Pro = ProColl.Item(i);
if (Pro.Name == "Windows Media Video 8 for Local Area Network (384 Kbps)")
{
SrcGrp.set_Profile(Pro);
//SrcGrp.Profile = Pro;break;
}
}
// Retrieve an IWMEncBroadcast object.
IWMEncBroadcast BrdCst = Encoder.Broadcast;
// Set the port number.
BrdCst.set_PortNumber(WMENC_BROADCAST_PROTOCOL.WMENC_PROTOCOL_HTTP, 8080);
// Start the encoding process.
Encoder.PrepareToEncode(true);
Encoder.Start();
}
Запустить. На другом компе в сети открыть MediaPlayer и из него при помощи команды "Open URL" открыть URL http://_broadcaster_:8080 и начать смотреть фильм...
Здравствуйте, Аноним, Вы писали:
HPB>>Но похоже мне этот энкодер придётся за своей прогой тоскать? Или нет?
А>Естественно придётся.
Это не обязательно. Если не добавлять референс а написать свой wrapper для нужных
стуктур и интерфейсов. Затем при помощи PInvoke (wmvcore.dll) получить нужный интерфейс например IWMEncoder через вызов WMCreateEncoder.
В комплекте с SDK есть пример (SDK_DIR)\samples\managed
Если лень писать wrapper руками может помочь Augma com2net.
Re[5]: Видео вещание в сеть
От:
Аноним
Дата:
17.12.05 16:01
Оценка:
Здравствуйте, dammer, Вы писали:
D>Это не обязательно. Если не добавлять референс а написать свой wrapper для нужных D>стуктур и интерфейсов. Затем при помощи PInvoke (wmvcore.dll) получить нужный интерфейс например IWMEncoder через вызов WMCreateEncoder.
Речь идёт о программе, называемой Windows Media Encoder.
Здравствуйте, H.P. Baxxter, Вы писали:
HPB>Encoder можно без проверки скачать, а вот SDK к нему — нет . Если есть у кого, киньте на мыло freddie-mercury'"'АБBГД'"'mail.ru, плз.
Кое-как слил SDK. Для скольких максимум пользователей можно организовать вещание? здесь