java - 如何使用 ExtractorMediaSource.Factory 在 ExoPlayer 中设置自定义 header ?

标签 java android video exoplayer

我努力将 header 发送到服务器以获得观看视频的权限。我已经编写的重要代码如下所示:

Handler mainHandler = new Handler();
BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
TrackSelection.Factory videoTrackSelectionFactory =
    new AdaptiveTrackSelection.Factory(bandwidthMeter);
TrackSelector trackSelector =
   new DefaultTrackSelector(videoTrackSelectionFactory);

SimpleExoPlayer player =
   ExoPlayerFactory.newSimpleInstance(getApplicationContext(),  trackSelector);

PlayerView playerView = new PlayerView(this);
playerView.setLayoutParams(new FrameLayout.LayoutParams(contentWidth, contentWidth / 16 * 9));
playerView.setPlayer(player);
DefaultBandwidthMeter bandwidthmeter = new DefaultBandwidthMeter();
DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(getApplicationContext(),
                        Util.getUserAgent(getApplicationContext(), "yourApplicationName"), bandwidthmeter);
 MediaSource videoSource = new ExtractorMediaSource.Factory(dataSourceFactory)
                        .createMediaSource(streamUrl)
                        ;
 player.prepare(videoSource);

如果有人有答案,请帮我解决这个问题!

最佳答案

你可以点这个

HlsMediaSource hlsMediaSource = null;
// 1. Create a default TrackSelector
    Handler mainHandler = new Handler();
    BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
    TrackSelection.Factory videoTrackSelectionFactory = new 
    AdaptiveTrackSelection.Factory(bandwidthMeter);
    TrackSelector trackSelector = new 
    DefaultTrackSelector(videoTrackSelectionFactory);

    // 2. Create a default LoadControl
    LoadControl loadControl = new DefaultLoadControl();

    // 3. Create the player
    player = ExoPlayerFactory.newSimpleInstance(MainActivityMob.getContext(), trackSelector, loadControl);

    // Measures bandwidth during playback. Can be null if not required.
    DefaultBandwidthMeter defaultBandwidthMeter = new DefaultBandwidthMeter();
    // Produces DataSource instances through which media data is loaded.
    DefaultHttpDataSource.Factory MGSource = new DefaultHttpDataSourceFactory(Util.getUserAgent( MainActivityMob.getContext(), "myExoplayer"), null);
    MGSource.getDefaultRequestProperties().set("YOUR KEY", "YOUR VALUE");

    // This is the MediaSource representing the media to be played. new AdaptiveMediaSourceEventListener()
    hlsMediaSource = new HlsMediaSource(Uri.parse(urlCH), MGSource, mainHandler, new AdaptiveMediaSourceEventListener() {


        @Override
        public void onLoadStarted(DataSpec dataSpec, int dataType, int trackType, Format trackFormat, int trackSelectionReason, Object trackSelectionData, long mediaStartTimeMs, long mediaEndTimeMs, long elapsedRealtimeMs) {

        }

        @Override
        public void onLoadCompleted(DataSpec dataSpec, int dataType, int trackType, Format trackFormat, int trackSelectionReason, Object trackSelectionData, long mediaStartTimeMs, long mediaEndTimeMs, long elapsedRealtimeMs, long loadDurationMs, long bytesLoaded) {
 progressBar.setVisibility(View.INVISIBLE);

        }

        @Override
        public void onLoadCanceled(DataSpec dataSpec, int dataType, int trackType, Format trackFormat, int trackSelectionReason, Object trackSelectionData, long mediaStartTimeMs, long mediaEndTimeMs, long elapsedRealtimeMs, long loadDurationMs, long bytesLoaded) {

        }

        @Override
        public void onLoadError(DataSpec dataSpec, int dataType, int trackType, Format trackFormat, int trackSelectionReason, Object trackSelectionData, long mediaStartTimeMs, long mediaEndTimeMs, long elapsedRealtimeMs, long loadDurationMs, long bytesLoaded, IOException error, boolean wasCanceled) {

        }

        @Override
        public void onUpstreamDiscarded(int trackType, long mediaStartTimeMs, long mediaEndTimeMs) {

        }

        @Override
        public void onDownstreamFormatChanged(int trackType, Format trackFormat, int trackSelectionReason, Object trackSelectionData, long mediaTimeMs) {

        }

    });

关于java - 如何使用 ExtractorMediaSource.Factory 在 ExoPlayer 中设置自定义 header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50970856/

相关文章:

java - 用于 eclipse 插件开发的 Swing/Prefuse 或 SWT

java - 使用 HttpURLConnection、InputStreamReader,我得到空响应

css - 强制视频占用 div 的 100% 宽度

iOS 结合视频数据和照片的捕获输出

html - 如何将 mp4 电影嵌入到我的 html 中?

java - 如何将 CSV 文件中的二维数组导入到 JTable 中

java - Java 假客户端连接被拒绝

java - 如何使用 apache POI 从 Excel 文件中的特定位置获取结果

android - Android 中用于 EditText 的 InputFilter 的正则表达式帮助

java - 带有 NBAandroid 的 NetBeans - 找不到符号 setContentView(R.layout.main);