2021-10-04 13:02:13 +02:00
|
|
|
import 'package:http_parser/http_parser.dart';
|
2021-10-04 13:00:22 +02:00
|
|
|
|
2021-09-28 16:49:38 +02:00
|
|
|
import '../../reverse_engineering/models/fragment.dart';
|
2020-06-03 13:18:37 +02:00
|
|
|
import 'audio_stream_info.dart';
|
|
|
|
import 'bitrate.dart';
|
|
|
|
import 'filesize.dart';
|
|
|
|
import 'framerate.dart';
|
2020-09-11 12:05:27 +02:00
|
|
|
import 'stream_container.dart';
|
2020-06-03 13:18:37 +02:00
|
|
|
import 'video_quality.dart';
|
|
|
|
import 'video_resolution.dart';
|
|
|
|
import 'video_stream_info.dart';
|
|
|
|
|
|
|
|
/// YouTube media stream that contains both audio and video.
|
|
|
|
class MuxedStreamInfo implements AudioStreamInfo, VideoStreamInfo {
|
2020-06-05 16:17:08 +02:00
|
|
|
@override
|
2020-06-03 13:18:37 +02:00
|
|
|
final int tag;
|
|
|
|
|
|
|
|
@override
|
|
|
|
final Uri url;
|
|
|
|
|
|
|
|
@override
|
2020-09-11 12:05:27 +02:00
|
|
|
final StreamContainer container;
|
2020-06-03 13:18:37 +02:00
|
|
|
|
|
|
|
@override
|
|
|
|
final FileSize size;
|
|
|
|
|
|
|
|
@override
|
|
|
|
final Bitrate bitrate;
|
|
|
|
|
|
|
|
@override
|
|
|
|
final String audioCodec;
|
|
|
|
|
|
|
|
@override
|
|
|
|
final String videoCodec;
|
|
|
|
|
|
|
|
/// Video quality label, as seen on YouTube.
|
2021-10-04 13:00:22 +02:00
|
|
|
@Deprecated('Use qualityLabel')
|
2020-06-03 13:18:37 +02:00
|
|
|
@override
|
|
|
|
final String videoQualityLabel;
|
|
|
|
|
|
|
|
/// Video quality.
|
|
|
|
@override
|
|
|
|
final VideoQuality videoQuality;
|
|
|
|
|
|
|
|
/// Video resolution.
|
|
|
|
@override
|
|
|
|
final VideoResolution videoResolution;
|
|
|
|
|
|
|
|
/// Video framerate.
|
|
|
|
@override
|
|
|
|
final Framerate framerate;
|
|
|
|
|
2021-09-28 16:49:38 +02:00
|
|
|
/// Muxed streams never have fragments.
|
|
|
|
@override
|
|
|
|
List<Fragment> get fragments => const [];
|
|
|
|
|
2021-10-04 13:00:22 +02:00
|
|
|
/// Stream codec.
|
|
|
|
@override
|
|
|
|
final MediaType codec;
|
|
|
|
|
|
|
|
/// Stream codec.
|
|
|
|
@override
|
|
|
|
final String qualityLabel;
|
|
|
|
|
2020-06-03 13:18:37 +02:00
|
|
|
/// Initializes an instance of [MuxedStreamInfo]
|
|
|
|
MuxedStreamInfo(
|
|
|
|
this.tag,
|
|
|
|
this.url,
|
|
|
|
this.container,
|
|
|
|
this.size,
|
|
|
|
this.bitrate,
|
|
|
|
this.audioCodec,
|
|
|
|
this.videoCodec,
|
2021-10-04 13:02:13 +02:00
|
|
|
@Deprecated('Use qualityLabel') this.videoQualityLabel,
|
2020-06-03 13:18:37 +02:00
|
|
|
this.videoQuality,
|
|
|
|
this.videoResolution,
|
2021-10-04 13:00:22 +02:00
|
|
|
this.framerate,
|
|
|
|
this.codec,
|
|
|
|
this.qualityLabel);
|
2020-06-03 13:18:37 +02:00
|
|
|
|
|
|
|
@override
|
2021-10-04 13:02:13 +02:00
|
|
|
String toString() => 'Muxed ($tag | $qualityLabel | $container)';
|
2020-06-03 13:18:37 +02:00
|
|
|
}
|