如何使用Better Player或Chewie在扑朔迷离中使用字幕显示.MKV?
目前,我设法使用.MKV扩展显示电影,但是这些电影有几种语言或字幕,在其他视频播放器中,有能力在音频和字幕之间切换,但是我的视频播放器中没有显示任何内容。 应该注意的是,我可以在视频中添加音频或字幕,但是我想使用.MKV视频文件附加的声音和字幕。 您认为解决这个问题的解决方案是什么?
import 'dart:developer';
import 'package:better_player/better_player.dart';
import 'package:flutter/material.dart';
import 'package:video_player/video_player.dart';
var src =
'https://dl5.freeserver.top/www2/film/animation2/The.Croods.2013.1080p.BluRay.SoftSub.DigiMoviez.mkv';
class SubtitlesPage extends StatefulWidget {
@override
_SubtitlesPageState createState() => _SubtitlesPageState();
}
final videoPlayerController = VideoPlayerController.network(src);
class _SubtitlesPageState extends State<SubtitlesPage> {
late BetterPlayerController _betterPlayerController;
@override
void initState() {
BetterPlayerConfiguration betterPlayerConfiguration =
const BetterPlayerConfiguration(
aspectRatio: 16 / 9,
fit: BoxFit.contain,
subtitlesConfiguration: BetterPlayerSubtitlesConfiguration(
backgroundColor: Colors.green,
fontColor: Colors.white,
outlineColor: Colors.black,
fontSize: 20,
),
);
_betterPlayerController = BetterPlayerController(betterPlayerConfiguration);
_betterPlayerController.addEventsListener((event) {
if (event.betterPlayerEventType == BetterPlayerEventType.progress) {
log("Current subtitle line: ${_betterPlayerController.renderedSubtitle}");
}
});
_setupDataSource();
super.initState();
}
void _setupDataSource() async {
BetterPlayerDataSource dataSource = BetterPlayerDataSource(
BetterPlayerDataSourceType.network,
src,
subtitles: BetterPlayerSubtitlesSource.single(
type: BetterPlayerSubtitlesSourceType.file,
url: src,
name: "My subtitles",
selectedByDefault: true,
),
);
_betterPlayerController.setupDataSource(dataSource);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text("Subtitles"),
),
body: Column(children: [
const SizedBox(height: 8),
AspectRatio(
aspectRatio: 16 / 9,
child: BetterPlayer.network(src),
)
]),
);
}
}
Currently, I have managed to display movies with the .mkv extension, but these movies have several languages or subtitles, in other video players there is the ability to switch between audio and subtitles, but nothing is displayed in my video player.
It should be noted that I can add audio or subtitles to the video, but I want to use the sound and subtitles attached to the .mkv video file.
What do you think is the solution to this problem?
import 'dart:developer';
import 'package:better_player/better_player.dart';
import 'package:flutter/material.dart';
import 'package:video_player/video_player.dart';
var src =
'https://dl5.freeserver.top/www2/film/animation2/The.Croods.2013.1080p.BluRay.SoftSub.DigiMoviez.mkv';
class SubtitlesPage extends StatefulWidget {
@override
_SubtitlesPageState createState() => _SubtitlesPageState();
}
final videoPlayerController = VideoPlayerController.network(src);
class _SubtitlesPageState extends State<SubtitlesPage> {
late BetterPlayerController _betterPlayerController;
@override
void initState() {
BetterPlayerConfiguration betterPlayerConfiguration =
const BetterPlayerConfiguration(
aspectRatio: 16 / 9,
fit: BoxFit.contain,
subtitlesConfiguration: BetterPlayerSubtitlesConfiguration(
backgroundColor: Colors.green,
fontColor: Colors.white,
outlineColor: Colors.black,
fontSize: 20,
),
);
_betterPlayerController = BetterPlayerController(betterPlayerConfiguration);
_betterPlayerController.addEventsListener((event) {
if (event.betterPlayerEventType == BetterPlayerEventType.progress) {
log("Current subtitle line: ${_betterPlayerController.renderedSubtitle}");
}
});
_setupDataSource();
super.initState();
}
void _setupDataSource() async {
BetterPlayerDataSource dataSource = BetterPlayerDataSource(
BetterPlayerDataSourceType.network,
src,
subtitles: BetterPlayerSubtitlesSource.single(
type: BetterPlayerSubtitlesSourceType.file,
url: src,
name: "My subtitles",
selectedByDefault: true,
),
);
_betterPlayerController.setupDataSource(dataSource);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text("Subtitles"),
),
body: Column(children: [
const SizedBox(height: 8),
AspectRatio(
aspectRatio: 16 / 9,
child: BetterPlayer.network(src),
)
]),
);
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论