首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓- Chromecast字幕NanoHttpd

安卓- Chromecast字幕NanoHttpd
EN

Stack Overflow用户
提问于 2016-09-11 23:48:40
回答 1查看 517关注 0票数 0

我成功地使用NanoHttpd将视频从我的安卓应用程序流式传输到一个本地ip,以便在chromecast上播放。现在我想添加字幕,我在我的SD卡上有本地的.vtt文件,我也在尝试在不同端口的NanonHttpd上传输它。不管怎么说,我看不到字幕。我正确地在视频和字幕本地ips上实现了CORS。如果我在浏览器上输入字幕ip,vtt文件显示成功。

下面是我在MediaInfo上设置substitles时的代码片段:

代码语言:javascript
复制
  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服务器实现

代码语言:javascript
复制
  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;
    }

}

感谢您的帮助,谢谢

EN

回答 1

Stack Overflow用户

发布于 2019-06-07 19:45:37

代码语言:javascript
复制
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支持

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39437881

复制
相关文章

相似问题

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