Sie sollten einen Listener hinzufügen Sein onPlayerStateChanged wird aufgerufen, wenn eine Zustandsänderung auftritt
Beachten Sie, dass, wenn alles, was Sie‘ Wenn Sie versuchen, die Wiedergabe so schnell wie möglich zu starten, müssen Sie nicht warten, bis die Vorbereitung erfolgt ist, damit Sie dem Player mitteilen können, dass die Wiedergabe gestartet werden soll. Rufen Sie einfach setPlayWhenReady(true)
an und es wird sofort abgespielt wie möglich
Beispiel:
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: Jens Klingenberg
А как использовать Async vorbereiten | Im Media Player gibt es prepareAsync. Und hier gibt es keine –