我成功地使用NanoHttpd将视频从我的安卓应用程序流式传输到一个本地ip,以便在chromecast上播放。现在我想添加字幕,我在我的SD卡上有本地的.vtt文件,我也在尝试在不同端口的NanonHttpd上传输它。不管怎么说,我看不到字幕。我正确地在视频和字幕本地ips上实现了CORS。如果我在浏览器上输入字幕ip,vtt文件显示成功。
下面是我在MediaInfo上设置substitles时的代码片段:
MediaTrack englishSubtitle = new MediaTrack.Builder(1 /* ID */,
MediaTrack.TYPE_TEXT)
.setName("English Subtitle")
.setSubtype(MediaTrack.SUBTYPE_SUBTITLES)
.setContentId(ipdeviceForSubs)
.setLanguage("en-US")
.build();
MediaMetadata mediaMetadata = new MediaMetadata(MediaMetadata.MEDIA_TYPE_MOVIE);
mediaMetadata.putString(MediaMetadata.KEY_TITLE, contentUri.getLastPathSegment());
mSelectedMedia = new MediaInfo.Builder(ipdeviceForVideo != null ? ipdeviceForVideo : contentUri.toString())
.setContentType("video/*")
.setStreamType(MediaInfo.STREAM_TYPE_BUFFERED)
.setMetadata(mediaMetadata)
.setMediaTracks(Arrays.asList(englishSubtitle))
.build();这是我的字幕的NanoHttpd for服务器实现
public class WebserverSubtitles extends NanoHTTPD {
public WebserverSubtitles() throws IOException {
super(8081);
}
@Override
@SuppressWarnings("deprecation")
public NanoHTTPD.Response serve(String uri, Method method, Map<String, String> headers, Map<String, String> parms, Map<String, String> files) {
try {
FileInputStream localFileInputStream = new FileInputStream("/sdcard/Download/v.vtt");
NanoHTTPD.Response localResponse = new NanoHTTPD.Response(NanoHTTPD.Response.Status.OK, "text/vtt", localFileInputStream);
localResponse.addHeader("Access-Control-Allow-Origin", "*");
localResponse.addHeader("content-type", "text/vtt");
return localResponse;
} catch (Exception localException) {
localException.getMessage();
}
return null;
}
}感谢您的帮助,谢谢
发布于 2019-06-07 19:45:37
resp= newFixedLengthResponse(Response.Status.OK, MIME_PLAINTEXT ,"success");
resp.addHeader("Access-Control-Allow-Origin", "*");
resp.addHeader("Access-Control-Max-Age", "3628800");
resp.addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, OPTIONS");
resp.addHeader("Access-Control-Allow-Headers", "X-Requested-With");
resp.addHeader("Access-Control-Allow-Headers", "Authorization");
resp.setChunkedTransfer(true);
return resp;您必须像上面那样在NanoHttpd服务器上添加cors支持
https://stackoverflow.com/questions/39437881
复制相似问题