embed recording button into video player

pull/1154/head
Luke Pulverenti 7 years ago
parent db90483238
commit c9ee7633ca

@ -52,6 +52,18 @@ namespace Emby.Common.Implementations.Net
{
throw new SocketCreateException(ex.SocketErrorCode.ToString(), ex);
}
catch (ArgumentException ex)
{
if (dualMode)
{
// Mono for BSD incorrectly throws ArgumentException instead of SocketException
throw new SocketCreateException("AddressFamilyNotSupported", ex);
}
else
{
throw;
}
}
}
public ISocket CreateTcpSocket(IpAddressInfo remoteAddress, int remotePort)

@ -110,8 +110,11 @@ namespace MediaBrowser.Api.Playback.Hls
throw;
}
var waitForSegments = state.SegmentLength >= 10 ? 2 : 3;
await WaitForMinimumSegmentCount(playlist, waitForSegments, cancellationTokenSource.Token).ConfigureAwait(false);
var minSegments = state.MinSegments;
if (minSegments > 0)
{
await WaitForMinimumSegmentCount(playlist, minSegments, cancellationTokenSource.Token).ConfigureAwait(false);
}
}
}
finally

@ -42,6 +42,9 @@ namespace MediaBrowser.Api.Playback
public string LiveStreamId { get; set; }
public string Tag { get; set; }
public string SegmentContainer { get; set; }
public int? SegmentLength { get; set; }
public int? MinSegments { get; set; }
}
public class VideoStreamRequest : StreamRequest

@ -60,6 +60,11 @@ namespace MediaBrowser.Api.Playback
{
get
{
if (Request.SegmentLength.HasValue)
{
return Request.SegmentLength.Value;
}
if (string.Equals(OutputVideoCodec, "copy", StringComparison.OrdinalIgnoreCase))
{
var userAgent = UserAgent ?? string.Empty;
@ -86,6 +91,19 @@ namespace MediaBrowser.Api.Playback
}
}
public int MinSegments
{
get
{
if (Request.MinSegments.HasValue)
{
return Request.MinSegments.Value;
}
return SegmentLength >= 10 ? 2 : 3;
}
}
public bool IsSegmentedLiveStream
{
get

@ -484,6 +484,15 @@ namespace MediaBrowser.Model.Dlna
playlistItem.CopyTimestamps = transcodingProfile.CopyTimestamps;
playlistItem.EnableSubtitlesInManifest = transcodingProfile.EnableSubtitlesInManifest;
if (transcodingProfile.MinSegments > 0)
{
playlistItem.MinSegments = transcodingProfile.MinSegments;
}
if (transcodingProfile.SegmentLength > 0)
{
playlistItem.SegmentLength = transcodingProfile.SegmentLength;
}
if (!string.IsNullOrEmpty(transcodingProfile.MaxAudioChannels))
{
int transcodingMaxAudioChannels;

@ -6,6 +6,7 @@ using MediaBrowser.Model.MediaInfo;
using MediaBrowser.Model.Session;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
namespace MediaBrowser.Model.Dlna
@ -37,6 +38,9 @@ namespace MediaBrowser.Model.Dlna
public string VideoProfile { get; set; }
public int? SegmentLength { get; set; }
public int? MinSegments { get; set; }
public bool RequireAvc { get; set; }
public bool DeInterlace { get; set; }
public bool RequireNonAnamorphic { get; set; }
@ -291,6 +295,16 @@ namespace MediaBrowser.Model.Dlna
if (!isDlna && isHls)
{
list.Add(new NameValuePair("SegmentContainer", item.Container ?? string.Empty));
if (item.SegmentLength.HasValue)
{
list.Add(new NameValuePair("SegmentLength", item.SegmentLength.Value.ToString(CultureInfo.InvariantCulture)));
}
if (item.MinSegments.HasValue)
{
list.Add(new NameValuePair("MinSegments", item.MinSegments.Value.ToString(CultureInfo.InvariantCulture)));
}
}
return list;

@ -42,6 +42,12 @@ namespace MediaBrowser.Model.Dlna
[XmlAttribute("maxAudioChannels")]
public string MaxAudioChannels { get; set; }
[XmlAttribute("minSegments")]
public int MinSegments { get; set; }
[XmlAttribute("segmentLength")]
public int SegmentLength { get; set; }
public List<string> GetAudioCodecs()
{
List<string> list = new List<string>();

Loading…
Cancel
Save