Autore Topic: Streaming Video  (Letto 994 volte)

Offline Raffyna

  • Utente junior
  • **
  • Post: 104
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc wildfire
  • Sistema operativo:
    seven
Streaming Video
« il: 16 Dicembre 2015, 11:30:19 CET »
0
Buongiorno ragazzi,
ho bisogno di voi :D
Devo sviluppare un app android per lo Streaming Video, in particolare ho necessità di abilitare il player video indipendentemente dalla sorgente [youtube, chilitv...]. Ho provato ad usare VideoView ma il video viene riprodotto solo quando quest'ultimo ha estensione .3pg, vi posto il mio codice per correttezza :
Codice (Java): [Seleziona]
public class VideoViewClass  extends Activity {

    // Declare variables
    ProgressDialog pDialog;
    VideoView videoview;

    // Insert your Video URL
    String VideoURL = "http://www.androidbegin.com/tutorial/AndroidCommercial.3gp";
    //    Per video di youtube bisogna introdurre le api di youtube
    //    String VideoURL = "https://www.youtube.com/watch?v=qizpBpHTzkU";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Get the layout from video_main.xml
        setContentView(R.layout.activity_main);
        // Find your VideoView in your video_main.xml layout
        videoview = (VideoView) findViewById(R.id.video_view);
        // Execute StreamVideo AsyncTask

        // Create a progressbar
        pDialog = new ProgressDialog(VideoViewClass.this);
        // Set progressbar title
        pDialog.setTitle("Android Video Streaming Tutorial");
        // Set progressbar message
        pDialog.setMessage("Buffering...");
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(false);
        // Show progressbar
        pDialog.show();

        try {
            // Start the MediaController
            MediaController mediacontroller = new MediaController(
                    VideoViewClass.this);
            mediacontroller.setAnchorView(videoview);
            // Get the URL from String VideoURL
            Uri video = Uri.parse(VideoURL);
            videoview.setMediaController(mediacontroller);
            videoview.setVideoURI(video);

        } catch (Exception e) {
            Log.e("Error", e.getMessage());
            e.printStackTrace();
        }

        videoview.requestFocus();
        videoview.setOnPreparedListener(new OnPreparedListener() {
            // Close the progress bar and play the video
            public void onPrepared(MediaPlayer mp) {
                pDialog.dismiss();
                videoview.start();
            }
        });

    }


}

Avete qualche suggerimento su come potrei gestire questo "problema"?


Grazie in anticipo.

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:Streaming Video
« Risposta #1 il: 16 Dicembre 2015, 12:42:44 CET »
0
La documentazione ufficiale spiega quali formati contenitori e codec audio e video sono sopportati dalle varie versioni del API di Android. Se il formato e codec non sono presenti dell'elenco ufficiale servono software esterni in grado di leggerli. http://developer.android.com/guide/appendix/media-formats.html

Inviato dal mio Nexus 5 utilizzando Tapatalk

adb logcat | tee /tmp/logcat | grep TAG

Offline Raffyna

  • Utente junior
  • **
  • Post: 104
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc wildfire
  • Sistema operativo:
    seven
Re:Streaming Video
« Risposta #2 il: 16 Dicembre 2015, 12:45:58 CET »
0
Ciao iceweasel,
grazie per la risposta.

Faccio una domanda forse stupida :
quando vedo un trailer in streaming come faccio a leggere il formato video ?

Per esempio l'url The Dark Knight Trailer - Trailer Addict mi da un trailer che vorrei visualizzare nella mia app, perchè dovrei guardare una estensione?

Grazie

Post unito: 16 Dicembre 2015, 15:39:44 CET
Ciao Ragazzi,
pensavo che potrei usare un web view in quanto i video dei trailer si trovano su diversi siti web.
Ho implementato questo codice ma mi appare una schermata nera e non so dove sia il problema, potreste aiutarmi? :( :

StreamingTrailer.java
Codice (Java): [Seleziona]
public class StreamingTrailer extends Activity {

    ProgressDialog pDialog;
    WebView myWebView;

    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.video_play_layout);

        myWebView = (WebView) findViewById(R.id.webviewVideo);
        myWebView.getSettings().setJavaScriptEnabled(true);
        myWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
        myWebView.getSettings().setPluginState(WebSettings.PluginState.ON);
        myWebView.getSettings().setPluginState(WebSettings.PluginState.ON_DEMAND);
        myWebView.getSettings().setLoadWithOverviewMode(true);
        myWebView.getSettings().setUseWideViewPort(true);
        myWebView.loadUrl("[url=http://v.traileraddict.com/2975"]The Dark Knight Trailer - Trailer Addict[/url]);

        myWebView.setWebChromeClient(new WebChromeClient() {

            public void onShowCustomView(View view, CustomViewCallback callback) {
                super.onShowCustomView(view, callback);
                String videoURL = myWebView.getUrl();
                Intent in = new Intent(StreamingTrailer.this, MainPageVideoHandler.class);
                startActivity(in);
            }


        });


    }

MainPageVideoHandler.java
Codice (Java): [Seleziona]
public class MainPageVideoHandler extends Activity {

    VideoView myVideoView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.video_view_layer);

        myVideoView = (VideoView) findViewById(R.id.video_view);
        MediaController mediaController = new MediaController(this);
        mediaController.setAnchorView(myVideoView);
//        String video = (StreamingTrailer.videoURL);
        String video ="[url=http://v.traileraddict.com/2975";]The Dark Knight Trailer - Trailer Addict[/url]
        myVideoView.setMediaController(mediaController);
        myVideoView.setVideoPath(video);
        myVideoView.setVideoURI(Uri.parse(video));

        myVideoView.start();


        myVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            @Override
            public void onCompletion(MediaPlayer mp) {
                mp.stop();
                myVideoView.stopPlayback();
                setContentView(R.layout.video_play_layout);
            }
        });


/*       myVideoView.setOnErrorListener(new MediaSync().OnErrorListener() {
            @Override
            public boolean onError(MediaPlayer mp, int what, int extra) {
                return false;
            }
        });*/

    }
}
« Ultima modifica: 16 Dicembre 2015, 15:39:46 CET da Raffyna, Reason: Merged DoublePost »

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:Streaming Video
« Risposta #3 il: 16 Dicembre 2015, 17:10:51 CET »
0
URL che fornisci non è quella di una sorgente di streaming ma si tratta di una pagina HTML con aggiunta di Javascript. API di Android non sopporta una cosa simile, solo un browser con Javascript e estensioni multimediali è in grado di processare una cosa del genere.

Inviato dal mio Nexus 5 utilizzando Tapatalk

adb logcat | tee /tmp/logcat | grep TAG

Offline Raffyna

  • Utente junior
  • **
  • Post: 104
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc wildfire
  • Sistema operativo:
    seven
Re:Streaming Video
« Risposta #4 il: 16 Dicembre 2015, 17:14:28 CET »
0
Ciao iceweasel, grazie  mille per la risposta.

Quindi neanche con una web view riuscirei a mostrare il trailer?

Potresti indicarmi qualche sorgente di streaming che potrei usare nella mia app?

Vorrei che l'app che sto sviluppando esegua i trailer indipendentemente dalla sorgente...è fattibile?

GRAZIE!
« Ultima modifica: 16 Dicembre 2015, 17:20:52 CET da Raffyna »

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:Streaming Video
« Risposta #5 il: 16 Dicembre 2015, 20:10:17 CET »
0
Prova questa URL dovrebbe funzionare

http://download.blender.org/peach/trailer/trailer_480p.mov

Formato contenitore QuickTime, codec video H.264, code audio AAC.

Sono un esperto in codec non mi occupo di pagine web quindi ignoro se poi utilizzare una WebView.

Inviato dal mio Nexus 5 utilizzando Tapatalk

adb logcat | tee /tmp/logcat | grep TAG

Offline Raffyna

  • Utente junior
  • **
  • Post: 104
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc wildfire
  • Sistema operativo:
    seven
Re:Streaming Video
« Risposta #6 il: 20 Dicembre 2015, 12:32:36 CET »
0
Ciao e grazie per l'aiuto dato fino ad ora.
Ho un altro "problemino".

Tra i vari video che vorrei riprodurre ci sono quelli di Vimeo. Ho notato che MediaPlayer o VideoView non mi consentono di riprodurre tale video e che, per quanto visto, riesco a riprodurlo solo mediante browser :

Codice (Java): [Seleziona]
String video_id = "244019134_100x75.jpg?r=pad";
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://player.vimeo.com/video/"+video_id)));

La riproduzione così fatta mi andrebbe anche bene ma ho necessità di sapere, ad esempio, a che minuto l'utente mette in pausa il video. In generale vorrei conoscere periodicamente l'istante di riproduzione del video.  Non avendo delle API di vimeo a disposizione non so come potrei recuperare tale info. Avete qualche suggerimento ?

Grazie.