django让所有的静态文件都需要登录才能访问-----exoplayer设置cookie
禁止apache直接访问:
设置:/etc/apache2/sites-available/000-default.conf
<Directory "/var/www/html/music"> Require all denied </Directory>def get_music(request,filename): file_path = f"/var/www/html/music/{filename}" print('文件路径:'+file_path) return FileResponse(open(file_path, 'rb'), content_type="audio/mpeg")path('get_music/<filename>/',get_music),客户端:android配置:
@OptIn(markerClass = UnstableApi.class) public void playMusic(Context context,String music_url){ Map<String, String> headers = Collections.singletonMap( "Cookie", "app_session_id=" + Csp.csp_generator(context).read("app_session_id") + "; user_id=" + Csp.csp_generator(context).read("user_id") ); // 1. 构建带请求头的数据源(你以后要加 Cookie/Token 就在这里加) DefaultHttpDataSource.Factory dataSourceFactory = new DefaultHttpDataSource.Factory() .setUserAgent("ExoPlayer").setDefaultRequestProperties(headers); DefaultMediaSourceFactory mediaSourceFactory = new DefaultMediaSourceFactory(dataSourceFactory); exoPlayer = new ExoPlayer.Builder(context) .setMediaSourceFactory(mediaSourceFactory) // 现在类型完全匹配 .build(); //MediaItem mediaItem = MediaItem.fromUri("rawresource://" + context.getPackageName() + "/" + MusicName); MediaItem mediaItem = MediaItem.fromUri(music_url); exoPlayer.setRepeatMode(Player.REPEAT_MODE_ONE); exoPlayer.setMediaItem(mediaItem); exoPlayer.prepare(); exoPlayer.setVolume(99 / 100.0f); PlaybackParameters playbackParameters = new PlaybackParameters(55 / 50f); exoPlayer.setPlaybackParameters(playbackParameters); exoPlayer.play(); }