2017-06-07 17 views
0

私はExoPlayerを使用するアプリケーションを持っています。しかし、それは開始前に完了している、私はPreparedが既に準備ができているかどうかを知る必要がある。ExoPlayerでPreparedAsyncを使用する方法

ExoPlayerでPreparedAsyncが見つかりません。したがって、アプリケーションがクラッシュする

実行中とトレーニングは2つの異なるものです。

準備が完了したら、ビデオトラックの長さを確認する必要があります。


私は何か示唆が必要です。すでに4日間私は私の頭脳をラックに入れます。ヘルプ開発((

答えて

0

あなたは以下のコード試してみることができます。。

// Measures bandwidth during playback. Can be null if not required. 
     DefaultBandwidthMeter bandwidthMeter = new DefaultBandwidthMeter(); 
// Produces DataSource instances through which media data is loaded. 
     DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(this, 
       Util.getUserAgent(this, "com.yourapp.appname"), bandwidthMeter); 
// Produces Extractor instances for parsing the media data. 
     ExtractorsFactory extractorsFactory = new DefaultExtractorsFactory(); 
// This is the MediaSource representing the media to be played. 
     MediaSource videoSource = new ExtractorMediaSource(uri, 
       dataSourceFactory, extractorsFactory, null, null); 
// Prepare the player with the source. 
     exoPlayer.prepare(videoSource); 
+0

Акакиспользовать非同期の準備| Media Playerには、prepareAsyncがあります。そして、ここにはない –

0

あなたはリスナーを追加する必要があります。そのonPlayerStateChangedは、状態変化が発生したときに呼び出されます

注意をそのすべての場合」再生しようとすると、できるだけ早く再生を開始するので、再生を開始することをプレイヤーに指示する準備ができるまで待つ必要はありません。setPlayWhenReady(true)に電話するだけですぐに再生が開始されます可能であれば

例:

public class MainActivity extends AppCompatActivity { 

    private ExoPlayer exoPlayer; 
    private SurfaceView surfaceView; 
    private int RENDERER_COUNT = 300000; 
    private int minBufferMs = 250000; 
    private final int BUFFER_SEGMENT_SIZE = 64 * 1024; 
    private final int BUFFER_SEGMENT_COUNT = 256; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     surfaceView= (SurfaceView) findViewById(R.id.surfaceView); 

     String userAgent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:40.0) Gecko/20100101 Firefox/40.0"; 
     String url = "http://www.sample-videos.com/video/mp4/480/big_buck_bunny_480p_5mb.mp4"; 
     Allocator allocator = new DefaultAllocator(minBufferMs); 
     DataSource dataSource = new DefaultUriDataSource(this, null, userAgent); 


     ExtractorSampleSource sampleSource = new ExtractorSampleSource(Uri.parse(url), dataSource, allocator, 
       BUFFER_SEGMENT_COUNT * BUFFER_SEGMENT_SIZE); 

     MediaCodecVideoTrackRenderer videoRenderer = new 
       MediaCodecVideoTrackRenderer(this, sampleSource, MediaCodecSelector.DEFAULT, 
       MediaCodec.VIDEO_SCALING_MODE_SCALE_TO_FIT); 

     MediaCodecAudioTrackRenderer audioRenderer = new MediaCodecAudioTrackRenderer(sampleSource, MediaCodecSelector.DEFAULT); 

     exoPlayer = ExoPlayer.Factory.newInstance(RENDERER_COUNT); 
     exoPlayer.prepare(videoRenderer, audioRenderer); 
     exoPlayer.sendMessage(videoRenderer, 
       MediaCodecVideoTrackRenderer.MSG_SET_SURFACE, 
       surfaceView.getHolder().getSurface()); 
exoPlayer.setPlayWhenReady(true); 

    } 
} 

BY:?イェンスKlingenberg

関連する問題