Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++, urlmon] Odtwarzanie filmów w czasie rzeczywistym

Ostatnio zmodyfikowano 2014-11-10 19:49
Autor Wiadomość
Piastlis
Temat założony przez niniejszego użytkownika
[C++, urlmon] Odtwarzanie filmów w czasie rzeczywistym
» 2014-11-10 00:17:41
Programuję od ponad 20lat. Ale miałem kilkanaście lat przerwy. Wcześniej używałem Borland Pascala ale teraz zacząłem przygodę z C++.
Piszę programik który ma za zadanie uruchomić filmy online z dowolnego portalu.
Jak na razie działa mi ta część która uruchamia filmy sparsekowane przez Flashgot. Typu Youtube.Chciałbym rozszerzyć go o portale typu dodane.pl . Skorzystałem z biblioteki Urlmon . Ściągam sobie plik html, wydobywam z niego adres pliku na serwerze i tu pojawia się problem.Korzystając z URLDownloadToFileA nie mogę otworzyć playerem pliku w trakcie jego ściągania.Powinienem inaczej korzystać z tej biblioteki czy zastosować inną? Ktoś ma jakichś pomysł?
P-120267
Chlorek
» 2014-11-10 02:22:33
Zdefiniuj co rozumiesz przez nie można otworzyć.

Ten problem może mieć podłoże problemu z formatem video. Jeśli ściągany film jest np. w flv czy webm to powinno wszystko działać jako że jest on przystosowany do strumieniowania. Chyba że źle rozumiem Twój problem.
P-120273
Piastlis
Temat założony przez niniejszego użytkownika
» 2014-11-10 10:06:05
Vlc i MPC-BE odtwarzają pliki zepsute lub niekompletne. Nawet rozszerzenie nie musi się zgadzać.Wykorzystuje to np. IDA dając podgląd podczas ściągania ale można też ręcznie odtworzyć taki plik.Nawet można podglądać ściągane torrenty .W moim przypadku dostaję komunikat o niedostępności pliku i dopiero po całkowitym ściągnięciu można go obejrzeć.Akurat tą część obsługującą pliki strumieniowe mam gotową.Chodzi mi o odtwarzanie plików MP4 i AVI z hostingów.Pliki MP4 np. z Youtuba bez problemów są odtwarzane w trakcie ściągania. Mam do wyboru Vcl, MPC-BE i okno przeglądarki.Te programy lepiej to robią zwłaszcza  w HD ponieważ nie zatykają komputera na 100% jak Flash.

Samo skorzystanie z Urlmon wygląda tak:
C/C++
#include <windows.h>


bool Download( char * URL, char * File_Name, char * URL_SET )
{
    typedef void( * Funk )( LPVOID, char *, char *, int, int );
    typedef void( * Funk2 )( int, char *, int, int );
    const int URLMON_OPTION_USERAGENT = 0x10000001;
   
   
    HINSTANCE Dll_Handle = LoadLibrary( "C:\\WINDOWS\\system32\\urlmon.dll" );
    if( Dll_Handle == NULL ) return FALSE;
   
    Funk DnLd =( Funk ) GetProcAddress( Dll_Handle, "URLDownloadToFileA" );
    if( DnLd == NULL ) return FALSE;
   
    Funk2 DnLd2 =( Funk2 ) GetProcAddress( Dll_Handle, "UrlMkSetSessionOption" );
    if( DnLd2 == NULL ) return FALSE;
   
    DnLd2( URLMON_OPTION_USERAGENT, URL_SET, 83, 0 );
    DnLd( 0, URL, File_Name, 0, 0 );
    FreeLibrary( Dll_Handle );
    return TRUE;
}
A wywołanie
C/C++
bool isDownloaded = Download( schowek, "C:\\proba.mp4", "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:4.8.60) Gecko/2012110208 Firefox/18.4.9 " );
P-120274
DejaVu
» 2014-11-10 13:34:36
Plik *.avi raczej Ci się nie będzie odtwarzał poprawnie w czasie rzeczywistym, a takie są na portalu, który wskazałeś.
P-120286
Piastlis
Temat założony przez niniejszego użytkownika
» 2014-11-10 19:35:47
Zapewniam że można to zrobić.Internet Download Accelerator tworzy tymczasowy plik *.IDAf który daje się odtworzyć w Vcl.Oczywiście nie ma się do dyspozycji całego filmu tylko tę część która się już zgrała.W BitTorrent nie ma zmiany nazwy pliku i też można odtworzyć to co już się zgrało.Jak na razie dotarłem do tego momentu że mam już na dysku część pliku i z jakiegoś powodu Windowsy odmawiają mi dostępu do niego.
Aha nie wiem czy to ważne. IDA nie daje podglądu dla dodanych.pl .Dla Youtuba ,Wrzuty ,Pornohuba i innych opartych na Flash jest ale teraz to dla mnie bez znaczenia bo wystarczę jak zacznę je ściągać z wciśniętym Ctrl to mam pogląd.Ostateczna wersja będzie miała opcję zachowania filmu.... 
P-120329
DejaVu
» 2014-11-10 19:41:55
Jak na razie dotarłem do tego momentu że mam już na dysku część pliku i z jakiegoś powodu Windowsy odmawiają mi dostępu do niego.
Zapewne dlatego, że plik jest otwarty na wyłączność w trybie do zapisu.
P-120332
Piastlis
Temat założony przez niniejszego użytkownika
» 2014-11-10 19:49:30
Jak to zmienić? Do tego pliku mam dostęp pośrednio przez URLDownloadToFileA.

Przewertowałem dokumentację i w Urlmon nie daje żadnych opcji w temacie otwierania plików ale obejrzałem kilka przykładów cURL.W tej bibliotece użytkownik sam otwiera plik.Trzeba będzie się nauczyć korzystać...

P-120333
« 1 »
  Strona 1 z 1