C# odtwarzacz wideo

0

Witam,
Stworzyłem sobie prosty odtwarzacz wideo w oparciu o bibliotekę Microsoft.DirectX.AudioVideoPlayback. Program odtwarza filmy rzucając obraz na kontrolkę pictureBox. Mam kilka pytań i proszę o pomoc:

  • w jaki sposób mogę zaprogramować program, żeby odtwarzał filmy które są przeciągnięte z folderu do programu, a nie jak mam w tej chwili poprzez Opendialog? Dodam, że przesunięcie filmu na pictureBox w tej chwili jest niedopuszczane przez program (kursor z zakazem)
  • Otwierając film poprzez "otwórz za pomocą" i wybierając mój program on nie startuje. Jak sobie z tym poradzić? Myślałem o jakimś timerze który cały czas sprawdza czy nie pojawił się film ale nie wiem czy to dobry pomysł.
  • Program oparty o tą bibliotekę odtwarza filmy w formacie: avi, divix xvid, wmv. Czy w tej bibliotece można wywołać funkcję do obsługi np mp4, rmvb czy mkv? Jeśli nie to jaka biblioteka udostępni mi obsługę tych formatów?
0
Cristiano1989 napisał(a):
  • w jaki sposób mogę zaprogramować program, żeby odtwarzał filmy które są przeciągnięte z folderu do programu
        public Form1()
        {
            InitializeComponent();
            pictureBox1.AllowDrop = true;
        }

        private void pictureBox1_DragEnter(object sender, DragEventArgs e)
        {
            if (e.Data.GetDataPresent(DataFormats.FileDrop))
                e.Effect = DragDropEffects.Copy;
        }

        private void pictureBox1_DragDrop(object sender, DragEventArgs e)
        {
            MessageBox.Show((e.Data.GetData(DataFormats.FileDrop) as string[])[0]);
        }

Ewentualnie to samo nie dla pictureBoksa a dla całej formy.

  • Otwierając film poprzez "otwórz za pomocą" i wybierając mój program on nie startuje.
    Otwarcie pliku "za pomocą" oznacza uruchomienie programu z parametrem – ścieżką do pliku.
    Trzeba go odczytać w funkcji Main().
0

Witam ponownie. Chciałem podziękować za pomoc i przepraszam że tak późno ale niestety brak czasu. Chciałbym jeszcze poruszyć trzeci problem o który pytałem w tym poście a mianowicie czy ktoś zna jakieś biblioteki, dzięki którym mógłbym zrobić obsługę formatów np mkv, rmvb i mp4?

0

Dzięki wielkie za pomoc @Azarien. Że ja nie wpadłem na to, że to brak kodeków :-)

0

Witam ponownie. Mam pytanie, które poniekąd jest związane z odtwarzaczem video dlatego nie będę zakładał nowego tematu tylko zapytam tutaj. Przyszedł mi do głowy pomysł aby w moim odtwarzaczu po kliknięciu jakiegoś tam buttonu aplikacja odwołała się do strony internetowej np wrzuty i wyświetliła wskazany film w moim odtwarzaczu. Po chwili zastanowienia nad realizacją tej funkcji zastanawiam się czy poprzez parsowanie xml dałbym rady odtworzyć taki filmik u mnie? Jeżeli parsowanie nie jest dobrym pomysłem to może ktoś ma pomysł jak zrealizować takie zadanie? Z góry dziękuję za pomoc i pozdrawiam

0

Witam,
Odświeżę trochę temat. Czy ktoś wie może jak pobrać ilość klatek na sekundę z jaką działa film, oraz klatka na której aktualnie znajduje się film? Korzystam z biblioteki DirectAudioVideo.
Byłbym bardzo wdzięczny za pomoc.
Pozdrawiam

1

Nie znam C# w ogóle więc nie mogę ci za bardzo pomóc, ale mogę spróbować co nieco powiedzieć, jak to w innym języku wygląda, w Delphi.

Jak chcesz prawym przyciskiem myszy uruchamiać program, to do rejestru musiałbyś dodać go odpowiednio, ale bez tego też szłoby uruchomić plik w twoim programie klikając na np. filmie prawym i otwórz za pomocą... i wybrać twój program (i ewentualnie zapamiętać wybór), tyle, że jak chcesz filmy uruchamiać tak, to musisz w programie odczytywać parametr ze ścieżką, z jakiej uruchomiono program (czyli ścieżka do filmu)
ParamStr
czyli jak program się odpala, to sprawdza dany parametr, w nim jest ścieżka podana do np. c:\film1.avi

A co do odtwarzania filmów z wrzuty, to musiałbyś przykładowo poszukać jak pobrać film z tego serwisu, czyli jak wyciągnąć ścieżkę do filmiku na tym serwisie, a wtedy, albo zapisujesz cały film na dysku i odpalasz w swoim playerze, albo coś na wzór streamingu. Opcja z pobraniem na dysk i odtworzeniem po pobraniu pewnie najłatwiejsza.
A co do tego jak z wrzuty pobrać filmik, to szukaj w google odpowiedzi. Może wystarczy lekko adres strony zmodyfikować i gotowe? (bo chyba kiedyś wrzuta miała tak prosto to zrobione, że wywaliłeś coś z adresu i dopisałeś i gotowe. Najgorzej to byłoby z youtube pobierać film, bo tam to przegięcie jest, nawet jak z kodu źródłowego chce się adres wydobić, to hardcore. Na wrzucie pewnie będzie łatwo.
Pobierz Wireshark jak chcesz, może minimalnie ci pomoże przy pisaniu programów korzystających ze stron.

A do do FPSów filmu, nie mam pojęcia.
A tak w ogóle to prawie wcale ci nie pomogłem, raczej minimalnie doradziłem czego w google masz szukać. Szkoda, że w c# nie siedzę w ogóle, może wtedy bym pomógł.

0

Witam,
Co do otwierania bezpośrednio za pomocą prawego przycisku sobie poradziłem już jakiś czas temu. Jakiś użytkownik wyżej podpowiedział mi skąd pobrać ścieżkę do filmu i się udało. Co do pobierania filmów moim docelowym zamierzeniem było pobieranie filmów wyświetlanych na żywo a więc ze streamu. Bardzo ciekawi mnie jak udostępniane są np mecze na żywo w internecie, jakie rozszerzenie mają i czy można je bezpośrednio streamować u mnie w programie?
Co do fps to może jakiś inny użytkownik będzie wiedział? Chodzi mi o to żeby podczas działania filmu w np 30 klatce filmu wyskoczył komunikat

0

Wiesz, zawsze jak pobranie źródła okaże się zatrudne możesz wyświetlić ich player w webowej kontrolce odpowiednio odcinając resztę strony.

0

Tak wiem to, ale takie rozwiązanie działa podobnie jakbym łączył się przez stronę normalnie. W przypadku dużej ilości osób na serwerze jest problem z połączeniem się, natomiast zastanawiam się czy jakby udało pobrać się do mojego programu tego streama to czy będę aż tak bardzo uzależniony od przeciążenia serwera jak w przypadku normalnego oglądania na stronie?

0

No dostaniesz tego samego streama co każdy :) tylko im go pobiera flash a u Ciebie by byłby twój program.

0

@nexodg a robiłeś już coś podobnego? Jaka kontrolka webowa była by według ciebie najlepsza do tego? I w jaki sposób na mojej kontrolce mogę zrzutować ich playera? Poprzez podanie bezpośredniego linku do odtwarzacza czy w jakiś inny sposób?

0

Nie znam jakiś specjalnych kontrolek, wziałbym zwykłą webową. Wchodzisz na stronę np: youtubeitp i one udostepniają <Embedded> więc można się na tym wzorować. Przynajmiej na szybko tak bym to robił. Dostajesz całą stronę na kontrolkę i kombinujesz tak wypieprzając resztę kodu coby został tylko player:)

1 użytkowników online, w tym zalogowanych: 0, gości: 1