Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/48: Рейтинг темы: голосов - 48, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 31.03.2013
Сообщений: 15

Воспроизведение видео по ссылке

25.05.2013, 19:09. Показов 10096. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста, существуют ли библиотеки для воспроизведения потокового видео по прямой ссылке? Если это можно сделать стандартным MediaElement'ом, то приведите пожалуйста простой пример.

Вообщем разобрался и поставил ProgressBar для отслеживания буфферизации, но проблема в том, что ролик не покажется пока видео полностью не загрузится, например если грузить фильм размером 1.3 Гб, то MediaElement покажет его только в том случае когда фильм (1.3 Гб) полностью загрузится, как сделать подгрузку, то есть чтоб MediaElement грузил ролик постоянно, но начал показывать ролик например с 3-х Мб загруженных?

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
<Window x:Class="Appex.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525" WindowStartupLocation="CenterScreen">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="*" />
            <RowDefinition Height="18" />
        </Grid.RowDefinitions>
        <MediaElement x:Name="Media10" Grid.Row="0" LoadedBehavior="Play" BufferingStarted="Media10_BufferingStarted" BufferingEnded="Media10_BufferingEnded" />
        <ProgressBar Name="Buffer" Grid.Row="1" Height="18" />
    </Grid>
</Window>
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
using System;
using System.Windows;
using System.Windows.Threading;
 
namespace Appex
{
    public partial class MainWindow : Window
    {
        DispatcherTimer dt = new DispatcherTimer();
 
        public MainWindow()
        {
            InitializeComponent();
 
            dt.Tick += new EventHandler(dt_Tick);
            dt.Interval = new TimeSpan(0, 0, 1); 
 
            Media10.Volume = 1.0;
            Media10.Source = new Uri("http://download.microsoft.com/download/2/C/4/2C433161-F56C-4BAB-BBC5-B8C6F240AFCC/SL_0410_448x256_300kb_2passCBR.wmv?amp;clcid=0x409");
            
        }
 
        private void Media10_BufferingStarted(object sender, RoutedEventArgs e)
        {
            dt.Start();
 
        }
 
        void dt_Tick(object sender, EventArgs e)
        {
            if (Media10.IsBuffering == true)
            {
                Buffer.Value = Media10.BufferingProgress * 100;
                Buffer.UpdateLayout();
            }
        }
 
        private void Media10_BufferingEnded(object sender, RoutedEventArgs e)
        {
            dt.Stop();
            Buffer.Value = 0.0;
        }
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.05.2013, 19:09
Ответы с готовыми решениями:

Winmm.dll. Воспроизведение mp3 файлов по прямой ссылке из интернета
Всем хай. Задача: воспроизводить mp3 файлы по прямой ссылке из интернета. Проблема: почему-то не все ссылки воспроизводятся. Пример...

Зацикленное воспроизведение видео
Необходимо в главном окне с помощью mediaElement зациклить воспроизведение небольшого видеоролика, который должен быть вшит в exeшник. Как...

Автономное воспроизведение видео в WindowsService
Встала необходимость в автономном воспроизведении Видео. Задумка такова: Считывание информации из XML, и воспроизведение по времени. Все...

19
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
25.05.2013, 23:48
VLC API?
http://www.codeproject.com/Articles/109639/nVLC
http://www.videolan.org/developers/vlc.html
0
0 / 0 / 0
Регистрация: 31.03.2013
Сообщений: 15
26.05.2013, 01:36  [ТС]
raxp,
Вообщем разобрался и поставил ProgressBar для отслеживания буфферизации, но проблема в том, что ролик не покажется пока видео полностью не загрузится, например если грузить фильм размером 1.3 Гб, то MediaElement покажет его только в том случае когда фильм (1.3 Гб) полностью загрузится, как сделать подгрузку, то есть чтоб MediaElement грузил ролик постоянно, но начал показывать ролик например с 3-х Мб загруженных?
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
26.05.2013, 11:03
...во-первых - не видно вашего кода полностью, вы используете открытие потока и последующее Mediaelement.SetSourse() ? А во-вторых, отображение и будет происходить при полной загрузке, поскольку идет в одном потоке. Вам придется подумать как разделить операции закачки контента и отображения. VLC API не смотрели значит.
0
0 / 0 / 0
Регистрация: 31.03.2013
Сообщений: 15
26.05.2013, 11:30  [ТС]
Цитата Сообщение от raxp Посмотреть сообщение
..во-первых - не видно вашего кода полностью
Как не видно, там и *.XAML и *.CS, вообщем весь проект

Цитата Сообщение от raxp Посмотреть сообщение
А во-вторых, отображение и будет происходить при полной загрузке, поскольку идет в одном потоке. Вам придется подумать как разделить операции закачки контента и отображения.
Вот я и спрашиваю как это сделать

Цитата Сообщение от raxp Посмотреть сообщение
VLC API не смотрели значит.
Смотрел и ни чего не понял, очень много файлов в проекте, а библиотека видимо самописная (автор наверное делал под себя), нет ли чего нибудь попроще?

P.S. Пробовал работать с WPFMediaKit, ссылку так и не удалось воспроизвести, воспроизвёл только локальные файлы.
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
26.05.2013, 12:01
Как не видно, там и *.XAML и *.CS, вообщем весь проект
на MSDN более корректный способ использования Mediaelement. Зайдите, почитайте.

Смотрел и ни чего не понял, очень много файлов в проекте, а библиотека видимо самописная (автор наверное делал под себя),
VLC не самописная, а автор по первой ссылке ее использует под C#, с примером.

нет ли чего нибудь попроще?
а кому сейчас легко?
1
0 / 0 / 0
Регистрация: 31.03.2013
Сообщений: 15
26.05.2013, 12:03  [ТС]
Спасибо, пока разбирался и желание отпало писать, всё таки придётся на Java или JavaFX.
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
26.05.2013, 12:06
...менять язык из-за того, что недоразобрались
0
0 / 0 / 0
Регистрация: 31.03.2013
Сообщений: 15
26.05.2013, 12:13  [ТС]
А смысл разбираться дальше, пробовал

1. WMP.dll - должен быть установлен в системе Windows Media Player.
2. MediaElement - в основном о нём отзываются не в положительную сторону.
3. WPFMedaKit - так и не удалось воспроизвести видео по ссылке и ни кто не знает как это сделать.
4. VLC - зачем писать врапперы и таскать dll если можно написать на другом языке который поддерживает нормальную работу с Media.
5. В целом WPF будет работать только на Windows в то время как JavaFX - кроссплатформенный (точнее JVM).
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
26.05.2013, 12:17
VLC - зачем писать врапперы и таскать dll если можно написать на другом языке который поддерживает нормальную работу с Media.
врапперы писать как раз не нужно, вам предоставлено готовое API для использования.

Кроссплатформенность. Допустим Mono вас не устраивает, оки, понимаю костыль. Тогда вот вам кроссплатформенное - FFMPEG, тоже прекрасно работает с потоковым, использовать можно из любого языка.
0
0 / 0 / 0
Регистрация: 31.03.2013
Сообщений: 15
26.05.2013, 12:23  [ТС]
Цитата Сообщение от raxp Посмотреть сообщение
Тогда вот вам кроссплатформенное - FFMPEG, тоже прекрасно работает с потоковым.
Дело не в кроссплатформенности самой библиотеки а в том что пишу WPF проект а не WinForms и его не запустить под Linux и подобных ОС, я не говорю что C# чем - то плох, просто легче же написать там где всё уже есть чем например разбираться с тем же VLC API, даже в PureBasic всё необходимое есть для работы с Media
0
0 / 0 / 0
Регистрация: 09.05.2010
Сообщений: 18
26.05.2013, 12:27
raxp, могли бы вы показать пример?
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
26.05.2013, 12:27
а в том что пишу WPF проект а не WinForms и его не запустить под Linux и подобных ОС
не имеет значения в чем вы пишите. Ферштеен?

raxp, могли бы вы показать пример?
конечно. Посмотрите на моем ресурсе статью "Онлайн-ТВ плеер своими руками". Использована технология DirectShow.
0
0 / 0 / 0
Регистрация: 31.03.2013
Сообщений: 15
26.05.2013, 12:29  [ТС]
Цитата Сообщение от raxp Посмотреть сообщение
не имеет значения в чем вы пишите. Ферштеен?
То есть WPF можно запустить и под Linux ? Вроде как Mono не поддерживает WPF...
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
26.05.2013, 12:31
...каким местом работа с медиа относится к WPF ? Я говорю о том, что вы можете использовать соответствующую технологию и методы под вашей средой разработки.
0
0 / 0 / 0
Регистрация: 31.03.2013
Сообщений: 15
26.05.2013, 12:35  [ТС]
Вообщем ладно, для себя я всё решил.
0
0 / 0 / 0
Регистрация: 09.05.2010
Сообщений: 18
26.05.2013, 12:42
Цитата Сообщение от raxp Посмотреть сообщение
конечно. Посмотрите на моем ресурсе статью "Онлайн-ТВ плеер своими руками". Использована технология DirectShow.
Но он на делфи, а на C# есть?
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
26.05.2013, 13:01
Внезапно. DirectShow-интерфейсы едины. И под .NET они те же.
2
0 / 0 / 0
Регистрация: 09.05.2010
Сообщений: 18
26.05.2013, 23:17
А есть способы, без такой трудной реализации?
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
27.05.2013, 00:59
...в чем же трудность-то?

Вот есть ресурс DirectShow по-русски, ознакомтесь http://directshow.wonderu.com/статьи.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.05.2013, 00:59
Помогаю со студенческими работами здесь

Постоянное воспроизведение видео в MediaElement
MediaElement постоянное воспроизведение Как сделать постоянное воспроизведение видео в WPF бесконечное воспроизведение как в...

Примеры из книги Мак Дональд, не работает воспроизведение видео
Мак Дональд в хвалёной книге «WPF для профессионалов» порой подкладывает свинью, которая для «профессионалов» выливается в настоящую...

Воспроизведение видео на форме с помощью DirectX (в референсах ничего не отображается)
Стоит задача воспроизведения видео на форме с помощью DirectX Вот нашёл небольшую вводную статью: ...

Воспроизведение видео
Здравствуйте , хотелось бы уточнить, нету звука на видео и воспроизводиться оно пару секунд хотя видео идет минут 10 В чем может быть...

Воспроизведение видео
Суть вот в чем: после совершения некого действия на консоли, нужно запустить окно, в котором будет проигрываться видео, и, желательно,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru