首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >设置mp4视频流的标题并使用Exoplayer播放文件

设置mp4视频流的标题并使用Exoplayer播放文件
EN

Stack Overflow用户
提问于 2015-07-01 21:15:10
回答 5查看 8.5K关注 0票数 6

Api有一个我需要设置的令牌头,但是视频没有加密。我有两个问题:如何使用exoplayer播放磁盘上的.mpg、.mpeg、.3gp、.mov和其他文件?如何使用exoplayer设置标题并从url中流式传输mp4视频?

EN

回答 5

Stack Overflow用户

发布于 2015-07-03 17:45:55

想出了答案:

代码语言:javascript
运行
复制
DefaultHttpDataSource source = new DefaultHttpDataSource(userAgent, null);
    source.setRequestProperty("Authorization", "your auth code");
    source.setRequestProperty("Accept", "...");

    ExtractorSampleSource sampleSource = new ExtractorSampleSource(uri, source, extractor, 2,
            BUFFER_SIZE);
    MediaCodecVideoTrackRenderer videoRenderer = new MediaCodecVideoTrackRenderer(sampleSource,
            null, true, MediaCodec.VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING, 5000, null, player.getMainHandler(),
            player, 50);
    MediaCodecAudioTrackRenderer audioRenderer = new MediaCodecAudioTrackRenderer(sampleSource,
            null, true, player.getMainHandler(), player);
票数 6
EN

Stack Overflow用户

发布于 2021-05-11 18:35:13

代码语言:javascript
运行
复制
   // (1) Create method returns  'DataSource.Factory'

     public DataSource.Factory headers() {
            Map<String, String> headersMap = new HashMap<>();
            headersMap.put("iid", "aaa123 ");
            headersMap.put("version", "1.4");
            headersMap.put("agent", "phone");
            headersMap.put("token", "dfdf4f4yt5yf5fh4f5");
            return new DefaultHttpDataSource.Factory().setDefaultRequestProperties(headersMap);
        }
    
    
    
    // (2) Add headers() method call to the player

           SimpleExoPlayer player = new SimpleExoPlayer.Builder(context)
                    .setMediaSourceFactory(new 
                     DefaultMediaSourceFactory(headers()))
                    .build();
票数 3
EN

Stack Overflow用户

发布于 2018-02-23 16:48:39

代码语言:javascript
运行
复制
  // 1. Create a default TrackSelector
    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(this, trackSelector,  
   loadControl);
    simpleExoPlayerView = new SimpleExoPlayerView(this);
    simpleExoPlayerView = (SimpleExoPlayerView)
  findViewById(R.id.player_view);

  //Set media controller
    simpleExoPlayerView.setUseController(true);
    simpleExoPlayerView.requestFocus();

   // Bind the player to the view.
    simpleExoPlayerView.setPlayer(player); 

   String username = "username";
    String password = "password";

    // encrypt Authdata
    byte[] toEncrypt = (username + ":" + password).getBytes();
    encoded = Base64.encodeToString(toEncrypt, Base64.DEFAULT);
    DefaultHttpDataSourceFactory dataSourceFactory = new 
    DefaultHttpDataSourceFactory(Util.getUserAgent(this,   
    "exoplayer2example"));

    DefaultHttpDataSource source = new  DefaultHttpDataSource(Util.getUserAgent(this, "exoplayer2example"),null);
    dataSourceFactory.setDefaultRequestProperty("Authorization","Basic "+encoded);
    ExtractorsFactory extractorsFactory = new DefaultExtractorsFactory();
    MediaSource videoSource = new ExtractorMediaSource(Uri.parse("https://example.com/assets/video/SampleVideo.mp4"),
            dataSourceFactory, extractorsFactory, null, null);
    final LoopingMediaSource loopingSource = new LoopingMediaSource(videoSource);
    exoplayer.prepare(videoSource);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31162441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档