ZR1000A1 1 Posted November 14, 2019 Share Posted November 14, 2019 (edited) I'm working on a channel plugin that contains nested folders. I need to be able to update the content of a folder dynamically every time the folder is entered. Is it possible? I've tried few things (based on examples and info I could find), but nothing works. Basically, I need public Task<ChannelItemResult> GetChannelItems(InternalChannelItemQuery query, CancellationToken cancellationToken) method to be called every time a user enters a folder. I tried: 1. Implement IHasCacheKey public string GetCacheKey(string userId) method and return random string. Does not help. Actually, I don't even see (in the Debugger) that this method gets called at all. 2. Many examples shows a use of ISupportsLatestMedia Task<IEnumerable<ChannelItemInfo>> GetLatestMedia(ChannelLatestMediaSearch request, CancellationToken cancellationToken) but the interface does not have this method anymore and I couldn't find definition of ChannelLatestMediaSearch anywhere. But, that's probably irrelevant to my issue anyway... As there is absolutely no objects/interfaces documentations, I'd like to know if there is any way to have a folder content updated every time the folder is entered? Thanks Edited November 14, 2019 by ZR1000A1 Link to comment Share on other sites More sharing options...
Luke 37008 Posted November 14, 2019 Share Posted November 14, 2019 Hi, it's no longer possible. Channel contents are updated in a background process now. This prevents stalling the UI due to channels responding slowly, and it also allows integration with all Emby features by having the content available in the database. Link to comment Share on other sites More sharing options...
ZR1000A1 1 Posted November 14, 2019 Author Share Posted November 14, 2019 Thanks for the quick reply. Unfortunately, that makes the plugin I was going to implement totally useless. So, no reason to waste any more time... :( :( Link to comment Share on other sites More sharing options...
Luke 37008 Posted November 14, 2019 Share Posted November 14, 2019 A 3-6 hour refresh interval is not sufficient? Link to comment Share on other sites More sharing options...
ZR1000A1 1 Posted November 14, 2019 Author Share Posted November 14, 2019 Unfortunately, not. The content is changing dynamically and the streams may or may not be available at the time. The idea was to make HTTP request to a server and based on its response populate folders and create media items. Yes, it may slow down UI and I agree that it should not be the default behavior. But, it would be nice feature to have allowing a plugin to provide items update via callback Link to comment Share on other sites More sharing options...
pünktchen 1251 Posted November 15, 2019 Share Posted November 15, 2019 Look at one of the live tv plugins. They have a "ContentChanged" event in their recording channel. Maybe you can call this event every time a user enters a subfolder category. Link to comment Share on other sites More sharing options...
Luke 37008 Posted November 15, 2019 Share Posted November 15, 2019 Oh yes didn't think of that. Link to comment Share on other sites More sharing options...
ZR1000A1 1 Posted November 15, 2019 Author Share Posted November 15, 2019 (edited) Look at one of the live tv plugins. They have a "ContentChanged" event in their recording channel. Maybe you can call this event every time a user enters a subfolder category. Thank you. I've looked at DVBViewerTVPlugin plugin (https://github.com/MediaBrowser/DVBViewerTVPlugin/blob/master/MediaBrowser.Plugins.DVBViewer/RecordingChannel.cs). The "ContentChanged" event is called on timer there. Do you know how I can call it when a user enters a subfolder? How does the channel know (what method/event is called in the channel) when a user enters a subfolder? Edited November 15, 2019 by ZR1000A1 Link to comment Share on other sites More sharing options...
Luke 37008 Posted November 15, 2019 Share Posted November 15, 2019 How does the channel know (what method/event is called in the channel) when a user enters a subfolder? There's no way to know this. The best you could do is trigger it really often, like every minute or so. Link to comment Share on other sites More sharing options...
ZR1000A1 1 Posted November 18, 2019 Author Share Posted November 18, 2019 There's no way to know this. The best you could do is trigger it really often, like every minute or so. Thanks! One more question. The channel implements: IRequiresMediaInfoCallback public async Task<IEnumerable<MediaSourceInfo>> GetChannelItemMediaInfo(string id, CancellationToken cancellationToken) But, the method gets called only once. As soon as it returns MediaInfo, the server does not call this method again. Is it possible to force the server to call the method every time a user selects the media item? Link to comment Share on other sites More sharing options...
Luke 37008 Posted November 18, 2019 Share Posted November 18, 2019 Did you try playing it? Link to comment Share on other sites More sharing options...
ZR1000A1 1 Posted November 18, 2019 Author Share Posted November 18, 2019 (edited) Did you try playing it? Yes. The channel creates a media type item (without media info). When a user selects the item, GetChannelItemMediaInfo() gets called, it returns media info and plays a stream fine. But if the play stops and the user selects the same item again, the server does not call GetChannelItemMediaInfo() anymore (does it cache media info???). In my case the underlying media info path (stream URL) can be changed over time and I'd like GetChannelItemMediaInfo() to be called every time the user plays the item, so I can provide an up-to-date URL. Is it possible? UPDATE: After farther testing it appears that the server does call GetChannelItemMediaInfo() again, but only if the item is selected to play after a few minutes of being stopped. It's good enough for me, but I'd like to know what causes the delay and whether it's configurable? Edited November 18, 2019 by ZR1000A1 Link to comment Share on other sites More sharing options...
Luke 37008 Posted November 18, 2019 Share Posted November 18, 2019 It's something that can be reviewed in the future. Thanks. Link to comment Share on other sites More sharing options...
ZR1000A1 1 Posted November 18, 2019 Author Share Posted November 18, 2019 Thanks Luke! BTW, is there any way to display a custom error message to a user in cases when a stream failed to play? Link to comment Share on other sites More sharing options...
Luke 37008 Posted November 18, 2019 Share Posted November 18, 2019 It's not currently possible. Thanks. Link to comment Share on other sites More sharing options...
ZR1000A1 1 Posted November 21, 2019 Author Share Posted November 21, 2019 When I install my plugin on Linux (Ubuntu 18.40) and new items are added, I see a lot of the same errors in the log (but the plugin still seems to work fine): 2019-11-21 00:00:33.739 Error BaseItem: Error refreshing item *** Error Report *** Version: 4.2.1.0 Command line: /opt/emby-server/system/EmbyServer.dll -programdata /var/lib/emby -ffdetect /opt/emby-server/bin/ffdetect -ffmpeg /opt/emby-server/bin/ffmpeg -ffprobe /opt/emby-server/bin/ffprobe -restartexitcode 3 -updatepackage emby-server-deb_{version}_amd64.deb Operating system: Unix 4.15.0.58 64-Bit OS: True 64-Bit Process: True User Interactive: True Runtime: file:///opt/emby-server/system/System.Private.CoreLib.dll Processor count: 4 Program data path: /var/lib/emby Application directory: /opt/emby-server/system System.NullReferenceException: System.NullReferenceException: Object reference not set to an instance of an object. at Emby.Server.Implementations.IO.SharpCifsFileSystem.IsEnabledForPath(String path) at Emby.Server.Implementations.IO.ManagedFileSystem.GetDirectoryName(String path) at MediaBrowser.Controller.Entities.Video.get_ContainingFolderPath() at MediaBrowser.Controller.Entities.Movies.Movie.BeforeMetadataRefresh(Boolean replaceAllMetdata) at MediaBrowser.Providers.Manager.MetadataService`2.RefreshMetadata(BaseItem item, MetadataRefreshOptions refreshOptions, CancellationToken cancellationToken) at MediaBrowser.Controller.Entities.BaseItem.RefreshMetadata(MetadataRefreshOptions options, CancellationToken cancellationToken) at MediaBrowser.Controller.Entities.Folder.RefreshMetadataRecursive(BaseItem[] children, MetadataRefreshOptions refreshOptions, Boolean recursive, IProgress`1 progress, CancellationToken cancellationToken) Source: Emby.Server.Implementations TargetSite: Boolean IsEnabledForPath(System.String) That doesn't happen on Windows server (no errors in the log) Any idea what can cause the exception on Linux? Link to comment Share on other sites More sharing options...
ZR1000A1 1 Posted November 21, 2019 Author Share Posted November 21, 2019 UPDATE: After farther investigation, it looks like deletion of an item (not addition) causes the error above. Just before the error, there are these lines in the log: 2019-11-21 03:26:24.063 Info App: Removing item from database, Type: Movie, Name: 720p, Path: , Id: 13434 2019-11-21 03:26:24.063 Info App: Deleting path /data/embymetadata/metadata/library/95/95601cbdc28d4110ac614d09bcbaf6b5 2019-11-21 03:26:24.064 Info App: Removing item from database, Type: Movie, Name: 720p 60fps, Path: , Id: 13435 2019-11-21 03:26:24.064 Info App: Deleting path /data/embymetadata/metadata/library/22/227e3ff5ff7947c0bbaece7ef2dd5139 2019-11-21 03:26:24.066 Info App: Removing item from database, Type: Movie, Name: 504p, Path: , Id: 13436 2019-11-21 03:26:24.066 Info App: Deleting path /data/embymetadata/metadata/library/70/70e6b06ca8194095823787c3e767631c 2019-11-21 03:26:24.067 Info App: Removing item from database, Type: Movie, Name: 216p, Path: , Id: 13437 2019-11-21 03:26:24.067 Info App: Deleting path /data/embymetadata/metadata/library/fd/fd31c7d2b6154a5aa244ce50029becf9 2019-11-21 03:26:24.068 Info App: Removing item from database, Type: Movie, Name: 288p, Path: , Id: 13438 2019-11-21 03:26:24.068 Info App: Deleting path /data/embymetadata/metadata/library/86/86a2f22577a24367a9c45332b5c1dcd9 2019-11-21 03:26:24.069 Info App: Removing item from database, Type: Movie, Name: 360p, Path: , Id: 13439 2019-11-21 03:26:24.069 Info App: Deleting path /data/embymetadata/metadata/library/25/252464a04608413a8d829319daf697d3 2019-11-21 03:26:24.070 Info App: Removing item from database, Type: Movie, Name: 540p, Path: , Id: 13440 2019-11-21 03:26:24.070 Info App: Deleting path /data/embymetadata/metadata/library/a5/a599fcc4f6d547e992304ae731e03164 2019-11-21 03:26:24.072 Info App: Removing item from database, Type: Movie, Name: 720p, Path: , Id: 13441 2019-11-21 03:26:24.072 Info App: Deleting path /data/embymetadata/metadata/library/38/3894c8899b2d473499235ee9da7e5b94 2019-11-21 03:26:24.073 Info App: Removing item from database, Type: Movie, Name: 720p 60fps, Path: , Id: 13442 2019-11-21 03:26:24.073 Info App: Deleting path /data/embymetadata/metadata/library/5f/5f14fdec0d1b4acb8341582a0c9e7840 Some paths, like "/data/embymetadata/metadata/library/5f/", don't actually exist. Is it a bug in the server? Link to comment Share on other sites More sharing options...
ZR1000A1 1 Posted November 22, 2019 Author Share Posted November 22, 2019 Another weird thing. When item ID contains '+' (plus sign), like AAAA|BBBB|CCC+|DDDD (I use '|' as a separator), the server fails to play this item! The error is: 2019-11-21 19:08:31.177 Error HttpServer: Error processing request *** Error Report *** Version: 4.2.1.0 Command line: /opt/emby-server/system/EmbyServer.dll -programdata /var/lib/emby -ffdetect /opt/emby-server/bin/ffdetect -ffmpeg /opt/emby-server/bin/ffmpeg -ffprobe /opt/emby-server/bin/ffprobe -restartexitcode 3 -updatepackage emby-server-deb_{version}_amd64.deb Operating system: Unix 4.15.0.58 64-Bit OS: True 64-Bit Process: True User Interactive: True Runtime: file:///opt/emby-server/system/System.Private.CoreLib.dll Processor count: 4 Program data path: /var/lib/emby Application directory: /opt/emby-server/system System.ArgumentNullException: System.ArgumentNullException: Value cannot be null. Parameter name: mediaSource at Emby.Server.MediaEncoding.Encoder.EncodingHelper.AttachMediaSourceInfo(EncodingJobInfo state, MediaSourceInfo mediaSource, String requestedUrl) at Emby.Server.MediaEncoding.Api.BaseStreamingService.GetState(StreamRequest request, Boolean requiresOutputPath, CancellationToken cancellationToken) at Emby.Server.MediaEncoding.Api.Hls.DynamicHlsService.GetMasterPlaylistInternal(StreamRequest request, String method) at Emby.Server.Implementations.Services.ServiceController.GetTaskResult(Task task) at Emby.Server.Implementations.Services.ServiceHandler.ProcessRequestAsync(HttpListenerHost appHost, IRequest httpReq, IResponse httpRes, RestPath restPath, String responseContentType, CancellationToken cancellationToken) at Emby.Server.Implementations.HttpServer.HttpListenerHost.RequestHandler(IRequest httpReq, ReadOnlyMemory`1 urlString, ReadOnlyMemory`1 host, ReadOnlyMemory`1 localPath, CancellationToken cancellationToken) Source: Emby.Server.MediaEncoding TargetSite: Void AttachMediaSourceInfo(Emby.Server.MediaEncoding.Encoder.EncodingJobInfo, MediaBrowser.Model.Dto.MediaSourceInfo, System.String) As soon as I replace '+' with '_', the item plays fine. It would be really helpful to know any other restrictions in item's ID... Thanks Link to comment Share on other sites More sharing options...
Luke 37008 Posted November 22, 2019 Share Posted November 22, 2019 Yea avoid | as the server will also add that and sometimes try to split the Id, so it's not expecting your id will have that. Link to comment Share on other sites More sharing options...
ZR1000A1 1 Posted November 23, 2019 Author Share Posted November 23, 2019 (edited) Yea avoid | as the server will also add that and sometimes try to split the Id, so it's not expecting your id will have that. Thanks! What character would you recommend to use as a spliter? One more question. Is it possible for a channel to provide a default folder's sorting criteria (field, like item name, create date, etc. and order - ascending/descending), or it's completely upto a client? Edited November 23, 2019 by ZR1000A1 Link to comment Share on other sites More sharing options...
Luke 37008 Posted November 23, 2019 Share Posted November 23, 2019 It's not currently possible, although it's a good idea and something that can be added at some point. Link to comment Share on other sites More sharing options...
ZR1000A1 1 Posted November 24, 2019 Author Share Posted November 24, 2019 (edited) Thanks! One more (hope the last ) question. It takes Web Browser client a very long time (over a minute!) to open a stream. Android client does not open it at all - no errors, just keeps spinning (and the only way to stop it is by killing the process). Roku client on the other hand opens the same stream almost instantly - 5 sec. Is there any way for the plugin to make a Web Browser client to open the stream faster (maybe some ChannelItemInfo or MediaSourceInfo parameters)? Also would be nice to make it work on Android, but I see that IPTV channel does not work on Android as well, so I assume, it's a generic issue with the client. Thanks again! Edited November 24, 2019 by ZR1000A1 Link to comment Share on other sites More sharing options...
Luke 37008 Posted November 24, 2019 Share Posted November 24, 2019 We 'd have to go over an example. Thanks. Link to comment Share on other sites More sharing options...
ZR1000A1 1 Posted November 25, 2019 Author Share Posted November 25, 2019 (edited) The steam the channel plays is HTTP Live Streaming Playlist (https://developer.apple.com/documentation/http_live_streaming/example_playlists_for_http_live_streaming/live_playlist_sliding_window_construction) .M3U8 URL and looks like: #EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:6 #EXT-X-MEDIA-SEQUENCE:0 #EXT-X-PROGRAM-DATE-TIME:2019-11-24T21:04:01.799Z #EXT-X-KEY:METHOD=AES-128,URI="https://***.com/.....",IV=0xXXXXXXXXXXXXX #EXTINF:5.005, 21/04/01.ts #EXTINF:5.005, 21/04/06.ts #EXTINF:5.005, 21/04/11.ts #EXTINF:5.005, 21/04/16.ts #EXTINF:5.005, 21/04/21.ts #EXTINF:5.005, 21/04/26.ts #EXTINF:5.005, 21/04/31.ts #EXT-X-KEY:METHOD=AES-128,URI="https://***.com/.....",IV=0xXXXXXXXXXXXXX #EXTINF:5.005, 21/04/36.ts #EXTINF:5.005, 21/04/41.ts #EXTINF:5.005, The channel creates MediaSourceInfo like: public async Task<IEnumerable<MediaSourceInfo>> GetChannelItemMediaInfo(string id, CancellationToken cancellationToken) { ...... return new List<MediaSourceInfo> { new MediaSourceInfo { Path = <M3U8 URL>, Protocol = MediaProtocol.Http, Name = id, Id = id } }; } The result is: Roku and Emby Theater (trial) - start playing fast (5 - 10 sec) Chrome, Firefox - start playing extremely slow (over 1 minute) Microsoft Edge and Android client - never start playing, keep spinning and spinning Any suggestions on how to improve MediaSourceInfo so streams start playing faster and work on Android client? Update: This is a debug log when a stream is opened in Firefox (see 1'06" delay?): >>> MediaSourceInfo returned <<<2019-11-25 09:37:00.692 Debug MyChannel: [MyChannel][GetChannelItemMediaInfo] Starts playing: https://***.com/***.m3u82019-11-25 09:37:00.726 Info App: User policy for ****. EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True2019-11-25 09:37:00.747 Info HttpServer: HTTP Response 200 to ::1. Time: 633ms. http://localhost:8096/emby/Items/66658/PlaybackInfo?UserId=fcab20cefd4b4f00a0ccfedcd033d89b&StartTimeTicks=0&IsPlayback=true&AutoOpenLiveStream=true&MaxStreamingBitrate=140000000>>> 1 minute 6 seconds DELAY!!! <<<2019-11-25 09:38:06.918 Info HttpServer: HTTP POST http://localhost:8096/emby/Sessions/Playing. UserAgent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.02019-11-25 09:38:06.956 Info SessionManager: Playback start reported by app Emby Web 4.3.0.26 playing 720p 60fps. Started at 0 ms2019-11-25 09:38:06.958 Info HttpServer: HTTP Response 204 to ::1. Time: 40ms. http://localhost:8096/emby/Sessions/Playing2019-11-25 09:38:06.960 Debug XmlSerializer: Deserializing file C:\Users\ifurman\AppData\Roaming\Emby-Server\programdata\config\webhooks.xml2019-11-25 09:38:06.965 Debug XmlSerializer: Deserializing file C:\Users\ifurman\AppData\Roaming\Emby-Server\programdata\config\notifications.xml2019-11-25 09:38:07.082 Info HttpServer: HTTP POST http://localhost:8096/emby/Items/66658/PlaybackInfo?UserId=fcab20cefd4b4f00a0ccfedcd033d89b&StartTimeTicks=0&IsPlayback=true&AutoOpenLiveStream=true&EnableDirectPlay=false&EnableDirectStream=false&MediaSourceId=20191124%7C2019020362%7C70052703_MSG-B%7C720p_60fps&MaxStreamingBitrate=140000000. UserAgent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.02019-11-25 09:38:07.084 Debug App: GetPostedPlaybackInfo request: {"Id":"66658","UserId":"fcab20cefd4b4f00a0ccfedcd033d89b","MaxStreamingBitrate":140000000,"StartTimeTicks":0,"MediaSourceId":"20191124|2019020362|70052703_MSG-B|720p_60fps","DeviceProfile":{"EnableAlbumArtInDidl":false,"EnableSingleAlbumArtLimit":false,"EnableSingleSubtitleLimit":false,"SupportedMediaTypes":"Audio,Photo,Video","MaxAlbumArtWidth":0,"MaxAlbumArtHeight":0,"MaxStreamingBitrate":140000000,"MusicStreamingTranscodingBitrate":192000,"TimelineOffsetSeconds":0,"RequiresPlainVideoItems":false,"RequiresPlainFolders":false,"IgnoreTranscodeByteRangeRequests":false,"XmlRootAttributes":[],"DirectPlayProfiles":[{"Container":"mp4,m4v","AudioCodec":"aac,opus,flac,vorbis","VideoCodec":"h264,vp8,vp9","Type":"Video"},{"Container":"flv","AudioCodec":"aac,mp3","VideoCodec":"h264","Type":"Video"},{"Container":"opus","Type":"Audio"},{"Container":"mp3","AudioCodec":"mp3","Type":"Audio"},{"Container":"mp2,mp3","AudioCodec":"mp2","Type":"Audio"},{"Container":"m4a","AudioCodec":"aac","Type":"Audio"},{"Container":"flac","Type":"Audio"},{"Container":"webma,webm","Type":"Audio"},{"Container":"wav","Type":"Audio"},{"Container":"ogg","Type":"Audio"},{"Container":"webm","AudioCodec":"vorbis,opus","VideoCodec":"VP8","Type":"Video"},{"Container":"webm","AudioCodec":"vorbis,opus","VideoCodec":"VP9","Type":"Video"}],"TranscodingProfiles":[{"Container":"aac","Type":"Audio","AudioCodec":"aac","Protocol":"hls","EstimateContentLength":false,"EnableMpegtsM2TsMode":false,"TranscodeSeekInfo":"Auto","CopyTimestamps":false,"Context":"Streaming","MaxAudioChannels":"2","MinSegments":1,"SegmentLength":0,"BreakOnNonKeyFrames":true},{"Container":"aac","Type":"Audio","AudioCodec":"aac","Protocol":"http","EstimateContentLength":false,"EnableMpegtsM2TsMode":false,"TranscodeSeekInfo":"Auto","CopyTimestamps":false,"Context":"Streaming","MaxAudioChannels":"2","MinSegments":0,"SegmentLength":0,"BreakOnNonKeyFrames":false},{"Container":"mp3","Type":"Audio","AudioCodec":"mp3","Protocol":"http","EstimateContentLength":false,"EnableMpegtsM2TsMode":false,"TranscodeSeekInfo":"Auto","CopyTimestamps":false,"Context":"Streaming","MaxAudioChannels":"2","MinSegments":0,"SegmentLength":0,"BreakOnNonKeyFrames":false},{"Container":"opus","Type":"Audio","AudioCodec":"opus","Protocol":"http","EstimateContentLength":false,"EnableMpegtsM2TsMode":false,"TranscodeSeekInfo":"Auto","CopyTimestamps":false,"Context":"Streaming","MaxAudioChannels":"2","MinSegments":0,"SegmentLength":0,"BreakOnNonKeyFrames":false},{"Container":"wav","Type":"Audio","AudioCodec":"wav","Protocol":"http","EstimateContentLength":false,"EnableMpegtsM2TsMode":false,"TranscodeSeekInfo":"Auto","CopyTimestamps":false,"Context":"Streaming","MaxAudioChannels":"2","MinSegments":0,"SegmentLength":0,"BreakOnNonKeyFrames":false},{"Container":"opus","Type":"Audio","AudioCodec":"opus","Protocol":"http","EstimateContentLength":false,"EnableMpegtsM2TsMode":false,"TranscodeSeekInfo":"Auto","CopyTimestamps":false,"Context":"Static","MaxAudioChannels":"2","MinSegments":0,"SegmentLength":0,"BreakOnNonKeyFrames":false},{"Container":"mp3","Type":"Audio","AudioCodec":"mp3","Protocol":"http","EstimateContentLength":false,"EnableMpegtsM2TsMode":false,"TranscodeSeekInfo":"Auto","CopyTimestamps":false,"Context":"Static","MaxAudioChannels":"2","MinSegments":0,"SegmentLength":0,"BreakOnNonKeyFrames":false},{"Container":"aac","Type":"Audio","AudioCodec":"aac","Protocol":"http","EstimateContentLength":false,"EnableMpegtsM2TsMode":false,"TranscodeSeekInfo":"Auto","CopyTimestamps":false,"Context":"Static","MaxAudioChannels":"2","MinSegments":0,"SegmentLength":0,"BreakOnNonKeyFrames":false},{"Container":"wav","Type":"Audio","AudioCodec":"wav","Protocol":"http","EstimateContentLength":false,"EnableMpegtsM2TsMode":false,"TranscodeSeekInfo":"Auto","CopyTimestamps":false,"Context":"Static","MaxAudioChannels":"2","MinSegments":0,"SegmentLength":0,"BreakOnNonKeyFrames":false},{"Container":"ts","Type":"Video","VideoCodec":"h264","AudioCodec":"aac","Protocol":"hls","EstimateContentLength":false,"EnableMpegtsM2TsMode":false,"TranscodeSeekInfo":"Auto","CopyTimestamps":false,"Context":"Streaming","MaxAudioChannels":"2","MinSegments":1,"SegmentLength":0,"BreakOnNonKeyFrames":true,"ManifestSubtitles":"vtt"},{"Container":"webm","Type":"Video","VideoCodec":"vpx","AudioCodec":"vorbis","Protocol":"http","EstimateContentLength":false,"EnableMpegtsM2TsMode":false,"TranscodeSeekInfo":"Auto","CopyTimestamps":false,"Context":"Streaming","MaxAudioChannels":"2","MinSegments":0,"SegmentLength":0,"BreakOnNonKeyFrames":false},{"Container":"mp4","Type":"Video","VideoCodec":"h264","AudioCodec":"aac,opus,flac,vorbis","Protocol":"http","EstimateContentLength":false,"EnableMpegtsM2TsMode":false,"TranscodeSeekInfo":"Auto","CopyTimestamps":false,"Context":"Static","MinSegments":0,"SegmentLength":0,"BreakOnNonKeyFrames":false}],"ContainerProfiles":[],"CodecProfiles":[{"Type":"VideoAudio","Conditions":[{"Condition":"Equals","Property":"IsSecondaryAudio","Value":"false","IsRequired":false}],"ApplyConditions":[],"Codec":"aac"},{"Type":"VideoAudio","Conditions":[{"Condition":"Equals","Property":"IsSecondaryAudio","Value":"false","IsRequired":false}],"ApplyConditions":[]},{"Type":"Video","Conditions":[{"Condition":"EqualsAny","Property":"VideoProfile","Value":"high|main|baseline|constrained baseline","IsRequired":false},{"Condition":"LessThanEqual","Property":"VideoLevel","Value":"51","IsRequired":false}],"ApplyConditions":[],"Codec":"h264"}],"ResponseProfiles":[{"Container":"m4v","Type":"Video","MimeType":"video/mp4","Conditions":[]}],"SubtitleProfiles":[{"Format":"vtt","Method":"Hls"},{"Format":"vtt","Method":"External"},{"Format":"ass","Method":"External"},{"Format":"ssa","Method":"External"}]},"EnableDirectPlay":false,"EnableDirectStream":false,"EnableTranscoding":true,"AllowVideoStreamCopy":true,"AllowAudioStreamCopy":true,"IsPlayback":true,"AutoOpenLiveStream":true,"DirectPlayProtocols":["Http"]}2019-11-25 09:38:07.086 Info App: User policy for ***. EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True2019-11-25 09:38:07.086 Info HttpServer: HTTP Response 200 to ::1. Time: 4ms. http://localhost:8096/emby/Items/66658/PlaybackInfo?UserId=fcab20cefd4b4f00a0ccfedcd033d89b&StartTimeTicks=0&IsPlayback=true&AutoOpenLiveStream=true&EnableDirectPlay=false&EnableDirectStream=false&MediaSourceId=20191124%7C2019020362%7C70052703_MSG-B%7C720p_60fps&MaxStreamingBitrate=1400000002019-11-25 09:38:07.103 Info HttpServer: HTTP GET http://localhost:8096/emby/videos/66658/master.m3u8?DeviceId=TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NDsgcnY6NzAuMCkgR2Vja28vMjAxMDAxMDEgRmlyZWZveC83MC4wfDE1NzM2MDc0Njg4MDE1&MediaSourceId=20191124|2019020362|70052703_MSG-B|720p_60fps&PlaySessionId=faabe12e1c7d4c04b7e439500e4bfbcd&VideoCodec=h264&AudioCodec=aac&VideoBitrate=139808000&AudioBitrate=192000&TranscodingMaxAudioChannels=2&SegmentContainer=ts&MinSegments=1&BreakOnNonKeyFrames=True&ManifestSubtitles=vtt&h264-profile=high,main,baseline,constrainedbaseline&h264-level=51&TranscodeReasons=ContainerNotSupported.Host=localhost:8096, User-Agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0, Accept=*/*, Accept-Language=en-US,en;q=0.5, Accept-Encoding=gzip, deflate, Connection=keep-alive, Referer=http://localhost:8096/web/index.html, DNT=12019-11-25 09:38:07.110 Debug App: Master playlist:#EXTM3U#EXT-X-VERSION:3#EXT-X-INDEPENDENT-SEGMENTS#EXT-X-STREAM-INF:BANDWIDTH=168000000,AVERAGE-BANDWIDTH=140000000,VIDEO-RANGE=SDR,CODECS="avc1.640029,mp4a.40.2"live.m3u8?DeviceId=TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NDsgcnY6NzAuMCkgR2Vja28vMjAxMDAxMDEgRmlyZWZveC83MC4wfDE1NzM2MDc0Njg4MDE1&MediaSourceId=20191124|2019020362|70052703_MSG-B|720p_60fps&PlaySessionId=faabe12e1c7d4c04b7e439500e4bfbcd&api_key=71e1dd4e2d4b4e1789f9428f81988486&VideoCodec=h264&AudioCodec=aac&VideoBitrate=139808000&AudioBitrate=192000&TranscodingMaxAudioChannels=2&SegmentContainer=ts&MinSegments=1&BreakOnNonKeyFrames=True&ManifestSubtitles=vtt&h264-profile=high,main,baseline,constrainedbaseline&h264-level=51&TranscodeReasons=ContainerNotSupported2019-11-25 09:38:07.111 Info HttpServer: HTTP Response 200 to ::1. Time: 8ms. http://localhost:8096/emby/videos/66658/master.m3u8?DeviceId=TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NDsgcnY6NzAuMCkgR2Vja28vMjAxMDAxMDEgRmlyZWZveC83MC4wfDE1NzM2MDc0Njg4MDE1&MediaSourceId=20191124|2019020362|70052703_MSG-B|720p_60fps&PlaySessionId=faabe12e1c7d4c04b7e439500e4bfbcd&VideoCodec=h264&AudioCodec=aac&VideoBitrate=139808000&AudioBitrate=192000&TranscodingMaxAudioChannels=2&SegmentContainer=ts&MinSegments=1&BreakOnNonKeyFrames=True&ManifestSubtitles=vtt&h264-profile=high,main,baseline,constrainedbaseline&h264-level=51&TranscodeReasons=ContainerNotSupported2019-11-25 09:38:07.123 Info HttpServer: HTTP GET http://localhost:8096/emby/videos/66658/live.m3u8?DeviceId=TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NDsgcnY6NzAuMCkgR2Vja28vMjAxMDAxMDEgRmlyZWZveC83MC4wfDE1NzM2MDc0Njg4MDE1&MediaSourceId=20191124|2019020362|70052703_MSG-B|720p_60fps&PlaySessionId=faabe12e1c7d4c04b7e439500e4bfbcd&VideoCodec=h264&AudioCodec=aac&VideoBitrate=139808000&AudioBitrate=192000&TranscodingMaxAudioChannels=2&SegmentContainer=ts&MinSegments=1&BreakOnNonKeyFrames=True&ManifestSubtitles=vtt&h264-profile=high,main,baseline,constrainedbaseline&h264-level=51&TranscodeReasons=ContainerNotSupported.Host=localhost:8096, User-Agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0, Accept=*/*, Accept-Language=en-US,en;q=0.5, Accept-Encoding=gzip, deflate, Connection=keep-alive, Referer=http://localhost:8096/web/index.html, DNT=12019-11-25 09:38:07.128 Debug App: CodecValidation: FindVideoEncoder - Media: h264, UseHardwareCodecs: True, Mode: Automatic2019-11-25 09:38:07.133 Debug App: CodecValidation: FindVideoEncoder - Checking: 'libx264 Software Encoder' (Priority: 0)2019-11-25 09:38:07.133 Debug App: CodecValidation: Encoder supports input stream2019-11-25 09:38:07.133 Debug App: CodecValidation: FindVideoEncoder - Check successful - selecting 'libx264 Software Encoder'2019-11-25 09:38:07.154 Info App: ProcessRun 'StreamTranscode 415471' Execute: C:\Users\ifurman\AppData\Roaming\Emby-Server\system\ffmpeg.exe -loglevel +timing -i "https://***.com/***.m3u8"-map_metadata -1 -map_chapters -1 -threads 0 -sn -c:v:0 libx264 -pix_fmt yuv420p -maxrate 139808000 -bufsize 279616000 -preset veryfast -profile:v:0 high -level:v:0 4.1 -crf 23 -x264opts:0 subme=0:me_range=4:rc_lookahead=10:me=dia:no_chroma_me:8x8dct=0:partitions=none -force_key_frames "expr:if(isnan(prev_forced_t),eq(t,t),gte(t,prev_forced_t+3))" -vsync -1 -codec:a:0 aac -disposition:a:0 default -ac:a:0 2 -ab:a:0 192000 -f segment -max_delay 5000000 -avoid_negative_ts disabled -start_at_zero -segment_time 3 -individual_header_trailer 0 -segment_format mpegts -segment_write_temp 1 -segment_list_entry_prefix "hls/4424e592e4f270758209ba6ed5fbac0a/" -segment_list_type m3u8 -segment_start_number 0 -segment_list "C:\Users\ifurman\AppData\Roaming\Emby-Server\programdata\transcoding-temp\4424e592e4f270758209ba6ed5fbac0a.m3u8" -y "C:\Users\ifurman\AppData\Roaming\Emby-Server\programdata\transcoding-temp\4424e592e4f270758209ba6ed5fbac0a%d.ts"2019-11-25 09:38:07.162 Debug App: ProcessRun 'StreamTranscode 415471' Started.2019-11-25 09:38:10.259 Debug App: Waiting for 1 segments in C:\Users\ifurman\AppData\Roaming\Emby-Server\programdata\transcoding-temp\4424e592e4f270758209ba6ed5fbac0a.m3u82019-11-25 09:38:10.266 Debug App: Finished waiting for 1 segments in C:\Users\ifurman\AppData\Roaming\Emby-Server\programdata\transcoding-temp\4424e592e4f270758209ba6ed5fbac0a.m3u82019-11-25 09:38:10.275 Info HttpServer: HTTP Response 200 to ::1. Time: 3151ms. http://localhost:8096/emby/videos/66658/live.m3u8?DeviceId=TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NDsgcnY6NzAuMCkgR2Vja28vMjAxMDAxMDEgRmlyZWZveC83MC4wfDE1NzM2MDc0Njg4MDE1&MediaSourceId=20191124|2019020362|70052703_MSG-B|720p_60fps&PlaySessionId=faabe12e1c7d4c04b7e439500e4bfbcd&VideoCodec=h264&AudioCodec=aac&VideoBitrate=139808000&AudioBitrate=192000&TranscodingMaxAudioChannels=2&SegmentContainer=ts&MinSegments=1&BreakOnNonKeyFrames=True&ManifestSubtitles=vtt&h264-profile=high,main,baseline,constrainedbaseline&h264-level=51&TranscodeReasons=ContainerNotSupported2019-11-25 09:38:10.289 Info HttpServer: HTTP GET http://localhost:8096/emby/videos/66658/hls/4424e592e4f270758209ba6ed5fbac0a/4424e592e4f270758209ba6ed5fbac0a0.ts. Host=localhost:8096, User-Agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0, Accept=*/*, Accept-Language=en-US,en;q=0.5, Accept-Encoding=gzip, deflate, Connection=keep-alive, Referer=http://localhost:8096/web/index.html, DNT=12019-11-25 09:38:10.308 Info HttpServer: HTTP Response 200 to ::1. Time: 19ms. http://localhost:8096/emby/videos/66658/hls/4424e592e4f270758209ba6ed5fbac0a/4424e592e4f270758209ba6ed5fbac0a0.ts2019-11-25 09:38:10.597 Info HttpServer: HTTP POST http://localhost:8096/emby/Sessions/Playing/Progress. UserAgent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.02019-11-25 09:38:10.640 Info HttpServer: HTTP Response 204 to ::1. Time: 43ms. http://localhost:8096/emby/Sessions/Playing/Progress Edited November 25, 2019 by ZR1000A1 Link to comment Share on other sites More sharing options...
Luke 37008 Posted November 25, 2019 Share Posted November 25, 2019 and the complete log file? Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now