Commit Graph

453 Commits

Author SHA1 Message Date
Nyanmisaka
53c91c2c14
Apply suggestions from code review
Co-authored-by: BaronGreenback <jimcartlidge@yahoo.co.uk>
2020-11-28 21:14:55 +08:00
nyanmisaka
d19edefbcd fix image extraction 2020-11-28 20:55:56 +08:00
Fernando Fernández
e21e00cad5 Merge remote-tracking branch 'upstream/master' into no-scaling 2020-11-19 23:18:25 +01:00
Greenback
9a323f6df0 More spelling corrections. 2020-11-18 13:46:14 +00:00
Fernando Fernández
38c3b6fcd3 Fix build and thread detection logic 2020-11-18 10:20:59 +01:00
Fernando Fernández
94cae4f145 Specify threads to ffmpeg properly 2020-11-17 16:44:04 +01:00
Fernando Fernández
a6ad36b57a Don't scale images extracted by ffmpeg 2020-11-17 14:20:18 +01:00
Stéphane Senart
28ee4f0a7f [AudioTranscoding] Add FLAC as supported target audio format and be able to define the corresponding target sample rate 2020-10-22 11:09:59 +02:00
Stanislav Ionascu
cd4641dca0 Remove PlayableStreamFileNames as unused
Since ffmpeg can play and transcode ISO files and BDMV folders directly,
there's no use of that property.
2020-10-01 22:20:34 +02:00
Stanislav Ionascu
3ad6232973 Add probe / direct-stream / transcoding support for BluRays
This commit (and ffmpeg built with libbluray support), adds support
for playback of bluray images (bd-iso) and bluray folders.
2020-10-01 21:59:57 +02:00
BaronGreenback
5464eaed4a
Update EncoderValidator.cs 2020-09-19 16:40:39 +01:00
crobibero
8b96881aa1 Clean up json Converters 2020-08-26 08:22:48 -06:00
Bond_009
119f64f5e7 Make some methods async 2020-08-21 22:01:19 +02:00
Anthony Lavado
72115c91e0
Merge pull request #3943 from Bond-009/ffmpeg
Simplify FFmpeg detection code
2020-08-21 15:04:58 -04:00
Bond-009
6292a9e4e9
Merge branch 'master' into warn24 2020-08-20 18:50:15 +02:00
Bond_009
301e029d42 Add unsupported ffmpeg version to tests 2020-08-20 17:45:40 +02:00
Bond_009
cb5cb075a9 Simplify FFmpeg detection code 2020-08-20 17:16:09 +02:00
Bond-009
5160e627f1
Merge branch 'master' into feature/ffmpeg-version-check 2020-08-20 16:40:03 +02:00
Bond_009
ab2147751f Make MediaBrowser.MediaEncoding warnings free 2020-08-20 12:16:24 +02:00
Bond_009
2b400c99ef Fix warnings 2020-08-19 17:50:50 +02:00
Bond-009
d9f6953416 Minor fixes 2020-08-04 17:14:07 +02:00
Bond-009
53f99d5d4b Add some analyzers to MediaBrowser.MediaEncoding 2020-08-04 17:08:09 +02:00
Bond-009
18efa25a6f Enable TreatWarningsAsErrors for MediaBrowser.MediaEncoding 2020-08-04 16:20:52 +02:00
Bond_009
e98351b912 Replace \d with [0-9] in ffmpeg detection and scan code 2020-07-20 14:14:15 +02:00
dkanada
87d7c4a62e
Merge pull request #3500 from nyanmisaka/vpp-qsv
Add FFmpeg 4.3 detection and solve the green line on QSV HWA
2020-07-14 20:31:13 +09:00
nyanmisaka
f5c5352861 add FFmpeg 4.3 detection and tests 2020-07-04 19:14:49 +08:00
Max Git
3588ee5229 Merge branch 'master' into feature/ffmpeg-version-check 2020-07-02 23:50:13 +02:00
Neil Burrows
6b532b3da5
User string.Empty instead of ""
Co-authored-by: Patrick Barron <18354464+barronpm@users.noreply.github.com>
2020-06-29 20:52:20 +01:00
Neil Burrows
4389773508 Respect FFMpeg path passed via Environment Variable 2020-06-29 17:17:28 +01:00
Max Git
c35c401d65 Merge branch 'master' into feature/ffmpeg-version-check 2020-06-23 09:20:50 +02:00
telans
8de6452967
fix some documentation periods 2020-06-20 18:13:11 +12:00
Max Git
33f78df051 Merge branch 'master' into feature/ffmpeg-version-check 2020-06-17 02:52:38 +02:00
Bond-009
9af6eda0b4
Merge pull request #3343 from telans/comment-stops
Add full stop at end of comments (SA1629)
2020-06-16 11:54:58 +02:00
telans
247f9c61e6
fix SA1513/SA1516 2020-06-16 16:11:30 +12:00
Max Git
e6c197b969 Cleanup 2020-06-16 01:09:41 +02:00
telans
9018f8d8be
Add full stop at end of comments (SA1629) 2020-06-16 10:37:52 +12:00
Max Git
ef3200e178 Remove redundant cast 2020-06-15 19:50:09 +02:00
Max Git
11f3a0dc58 Use Version instead of double. Use correct version number for libavdevice. 2020-06-15 15:10:59 +02:00
dkanada
dabb869a6b
Merge branch 'master' into hwaccel 2020-06-15 20:21:25 +09:00
Max Git
37e737e012 Merge from master & fix conflict 2020-06-15 12:12:03 +02:00
telans
3d9049ef08
fix SA1508 2020-06-15 10:45:55 +12:00
telans
acd4389653
fix SA1005 2020-06-15 10:41:00 +12:00
artiume
0476acf5d5 Update EncoderValidator.cs 2020-06-08 14:45:26 +03:00
crobibero
44957c5a9a Use typed logger where possible 2020-06-05 18:15:56 -06:00
rotvel
480fd0a66a
Update MediaBrowser.MediaEncoding/Encoder/EncoderValidator.cs
Co-authored-by: Cody Robibero <cody@robibe.ro>
2020-06-01 16:00:58 +02:00
Max Git
e103d087d3 Try harder at detecting FFmpeg version and enable the validation 2020-06-01 07:10:15 +02:00
Vasily
aa17a53e83 Skip only line saying "Hardware acceleration methods:" instead of some random one 2020-05-26 19:05:44 +03:00
Vasily
628734931c Fix missing commas and merge defects 2020-05-26 18:49:15 +03:00
artiume
3c82379759 Update EncoderValidator.cs 2020-05-26 18:29:58 +03:00
artiume
407de0209e Update MediaEncoder.cs 2020-05-26 18:29:58 +03:00
artiume
1ff95289ef Update EncoderValidator.cs 2020-05-26 18:29:58 +03:00
nyanmisaka
b4b93995f7 add more separate hw decoding toggles 2020-05-26 18:06:49 +03:00
Max Git
cee587d6e3 Try harder to find ffmpeg in app directory. While here do some cleanup 2020-04-27 03:25:57 +02:00
Mark Monteiro
8f02fb9a4f Remove unused usings
This addresses the new issues identified in SonarCloud analysis
2020-04-22 13:09:59 -04:00
Mark Monteiro
f815059698 Merge remote-tracking branch 'upstream/master' into register-services-correctly 2020-04-20 20:11:33 -04:00
Bond_009
a73e1f18b6 Minor improvements 2020-04-19 11:16:09 +02:00
Mark Monteiro
9728aa8b0a Merge branch 'master' into register-services-correctly 2020-04-13 17:06:24 -04:00
Joshua M. Boniface
bf92694f8b
Merge pull request #2715 from nyanmisaka/libfdk-aac
Prefer to use libfdk_aac encoder for better audio quality when it is available
2020-04-12 19:17:11 -04:00
Mark Monteiro
7152b55747 Use a separate line for each property initializer 2020-04-11 13:28:21 -04:00
Mark Monteiro
17e8813378 Use ActivatorUtilities to construct MediaEncoder and update constructor to inject EncodingHelper correctly 2020-04-11 10:53:13 -04:00
Mark Monteiro
e0f40f57d8 Merge remote-tracking branch 'upstream/master' into remove-common-process 2020-04-03 20:22:03 -04:00
Bond-009
f31efce52d
Merge branch 'master' into usings 2020-04-01 22:42:43 +02:00
nyanmisaka
db23660660 prefer to use libfdk_aac for better audio quality 2020-03-30 15:53:49 +08:00
Mark Monteiro
1f5caa46c5 Fix some more issues with disposing Process instances 2020-03-27 01:53:08 +01:00
Mark Monteiro
97c36d11d4 Use a TimeSpan instead of ms and support providing a custom CancellationToken 2020-03-27 01:09:09 +01:00
Mark Monteiro
b947d98266 Delete unnecessary ProcessFactory abstraction 2020-03-27 00:45:48 +01:00
Mark Monteiro
ee2f911a2b Remove unnecessary CommonProcess abstraction 2020-03-27 00:10:16 +01:00
Bond_009
e9d1eabd53 Remove unused usings 2020-03-24 16:12:06 +01:00
Bond_009
a07ee65365 Minor improvements 2020-02-23 10:53:51 +01:00
Bond-009
f3a1729964 Address comments 2020-01-16 15:02:50 +01:00
Bond-009
e882b03e81 Add back support for DVDs copied as folders 2020-01-16 13:30:38 +01:00
Nyanmisaka
2c10891b66
turn on indentation. 2020-01-15 18:45:28 +08:00
Nyanmisaka
e95239e281
add support for AMD h264_amf & hevc_amf 2020-01-11 01:36:25 +08:00
Bond_009
cf2e2a3f30 Fix exceptions while scanning
Fixes these exceptions:
```
[2019-12-22 20:48:14.779 +01:00] [ERR] Error in WaitForExit
System.InvalidOperationException: No process is associated with this object.
   at System.Diagnostics.Process.EnsureState(State state)
   at System.Diagnostics.Process.EnsureState(State state)
   at System.Diagnostics.Process.GetWaitState()
   at System.Diagnostics.Process.WaitForExitCore(Int32 milliseconds)
   at System.Diagnostics.Process.WaitForExit(Int32 milliseconds)
   at Emby.Server.Implementations.Diagnostics.CommonProcess.WaitForExit(Int32 timeMs) in /home/pi/dev/jellyfin/Emby.Server.Implementations/Diagnostics/CommonProcess.cs:line 100
   at MediaBrowser.MediaEncoding.Encoder.MediaEncoder.StopProcess(ProcessWrapper process, Int32 waitTimeMs) in /home/pi/dev/jellyfin/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs:line 785
[2019-12-22 20:48:14.790 +01:00] [INF] Killing ffmpeg process
[2019-12-22 20:48:14.795 +01:00] [ERR] Error killing process
System.InvalidOperationException: No process is associated with this object.
   at System.Diagnostics.Process.EnsureState(State state)
   at System.Diagnostics.Process.EnsureState(State state)
   at System.Diagnostics.Process.Kill()
   at Emby.Server.Implementations.Diagnostics.CommonProcess.Kill() in /home/pi/dev/jellyfin/Emby.Server.Implementations/Diagnostics/CommonProcess.cs:line 95
   at MediaBrowser.MediaEncoding.Encoder.MediaEncoder.StopProcess(ProcessWrapper process, Int32 waitTimeMs) in /home/pi/dev/jellyfin/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs:line 799
[2019-12-22 20:48:14.808 +01:00] [ERR] Error in "ffprobe"
System.Text.Json.JsonException: The JSON value could not be converted to System.String. Path: $.streams[0].start_pts | LineNumber: 32 | BytePositionInLine: 26.
 ---> System.InvalidOperationException: Cannot get the value of a token type 'Number' as a string.
   at System.Text.Json.Utf8JsonReader.GetString()
   at System.Text.Json.Serialization.Converters.JsonConverterString.Read(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options)
   at System.Text.Json.JsonPropertyInfoNotNullable`4.OnRead(JsonTokenType tokenType, ReadStack& state, Utf8JsonReader& reader)
   at System.Text.Json.JsonPropertyInfo.Read(JsonTokenType tokenType, ReadStack& state, Utf8JsonReader& reader)
   at System.Text.Json.JsonSerializer.HandleValue(JsonTokenType tokenType, JsonSerializerOptions options, Utf8JsonReader& reader, ReadStack& state)
   at System.Text.Json.JsonSerializer.ReadCore(JsonSerializerOptions options, Utf8JsonReader& reader, ReadStack& readStack)
   --- End of inner exception stack trace ---
   at System.Text.Json.ThrowHelper.ReThrowWithPath(ReadStack& readStack, Utf8JsonReader& reader, Exception ex)
   at System.Text.Json.JsonSerializer.ReadCore(JsonSerializerOptions options, Utf8JsonReader& reader, ReadStack& readStack)
   at System.Text.Json.JsonSerializer.ReadCore(JsonReaderState& readerState, Boolean isFinalBlock, ReadOnlySpan`1 buffer, JsonSerializerOptions options, ReadStack& readStack)
   at System.Text.Json.JsonSerializer.ReadAsync[TValue](Stream utf8Json, Type returnType, JsonSerializerOptions options, CancellationToken cancellationToken)
   at MediaBrowser.MediaEncoding.Encoder.MediaEncoder.GetMediaInfoInternal(String inputPath, String primaryPath, MediaProtocol protocol, Boolean extractChapters, String probeSizeArgument, Boolean isAudio, Nullable`1 videoType, Boolean forceEnableLogging, CancellationToken cancellationToken) in /home/pi/dev/jellyfin/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs:line 399
   at MediaBrowser.Providers.MediaInfo.FFProbeVideoInfo.ProbeVideo[T](T item, MetadataRefreshOptions options, CancellationToken cancellationToken) in /home/pi/dev/jellyfin/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs:line 122
   at MediaBrowser.Providers.Manager.MetadataService`2.RunCustomProvider(ICustomMetadataProvider`1 provider, TItemType item, String logName, MetadataRefreshOptions options, RefreshResult refreshResult, CancellationToken cancellationToken) in /home/pi/dev/jellyfin/MediaBrowser.Providers/Manager/MetadataService.cs:line 815
```
2019-12-22 22:09:09 +01:00
Bond_009
0bf8bfbb0c Merge branch 'master' into mediaencoding 2019-12-10 23:00:59 +01:00
ferferga
94ef239de0 Add full Raspberry Pi hardware decoding support 2019-11-25 23:09:23 +01:00
Bond_009
cc5acf37f7 Make probesize and analyzeduration configurable and simplify circular
dependencies

Makes the probesize and analyzeduration configurable with env args.
(`JELLYFIN_FFmpeg_probesize` and `FFmpeg_analyzeduration`)
2019-11-25 12:07:59 +01:00
Bond_009
3e1aab6b29 Fix ffmpeg version check for unknown versions 2019-09-29 13:43:47 +02:00
Bond_009
1b01a6ece1 Add tests for EncoderValidator
* Add support for ffmpeg 4.2
* Parse the complete ffmpeg version instead of only the first 2 digits
* Make max and min version optional
* Remove max limitation (for now)
* Style improvements
2019-09-28 19:41:34 +02:00
Bond_009
1616f24cee Fix more warnings 2019-09-01 18:39:23 +02:00
JMCC
5d85076ad5 Enable Exynos V4L2-m2m HW encoder 2019-05-11 17:17:32 +02:00
Bond-009
91cd7d2f6b Limit amount of ffmpeg processes extracting images at once 2019-04-30 23:35:39 +02:00
Phallacy
a7e31ef31f applied changes to just also search jellyfin base dir 2019-04-09 00:27:41 -07:00
redSpoutnik
480a6607e2
Merge branch 'master' into subtitle-display-title 2019-03-16 17:54:57 +01:00
redSpoutnik
427688a0a0 Change subtitles DisplayTitle behavior 2019-03-14 22:31:51 +01:00
PloughPuff
b864e9da2a Finalise removal of --ffprobe switch
Removed --ffprobe from src files and server/docker scripts.
2019-03-12 22:09:18 +00:00
Bond-009
ab9859ecef Address comment 2019-03-07 21:42:56 +01:00
Bond_009
37ea50a572 Reduce the amount of exceptions thrown 2019-03-07 21:42:56 +01:00
PloughPuff
2617a49b78 Renamed Init() to SetFFmpegPath() 2019-03-05 21:29:15 +00:00
PloughPuff
656bffbbb2 Remove --ffprobe logic 2019-03-05 21:29:15 +00:00
PloughPuff
8104e739d5 Address review comments from Bond 2019-03-05 21:29:15 +00:00
PloughPuff
ed69e690b8 Review comments
Address review comments from JustAMan, Bond-009 and cvium.
2019-03-05 21:29:15 +00:00
PloughPuff
20775116f7 Reworked FFmpeg path discovery and always display to user
1) Reworked FFmpeg and FFprobe path discovery (CLI switch, Custom xml, system $PATH, UI update trigger).  Removed FFMpeg folder from Emby.Server.Implementations.  All path discovery now in MediaEncoder.

2) Always display FFmpeg path to user in Transcode page.

3) Allow user to remove a Custome FFmpeg path and return to using system $PATH (or --ffmpeg if available).

4) Remove unused code associated with 'prebuilt' FFmpeg.

5) Much improved logging during path discovery.
2019-03-05 21:24:54 +00:00
Joshua M. Boniface
5587dd8bfb
Merge pull request #900 from ploughpuff/validator
Implement proper FFmpeg version checking
2019-03-05 11:07:49 -05:00
Vasily
f1086a72bf
Improve logic when determining return value
Co-Authored-By: ploughpuff <33969763+ploughpuff@users.noreply.github.com>
2019-02-28 15:58:41 +00:00
PloughPuff
7668ecf9c9 Use Version Class to ease comparisons 2019-02-27 18:20:48 +00:00
Claus Vium
aafed63c3f Set EnableRaisingEvents to true for processes that require it 2019-02-24 16:33:05 +01:00
PloughPuff
69ea15f73a Use string interpolation
Two further review comments from JustAMan.
2019-02-16 00:47:38 +00:00
PloughPuff
d8d237f6f2 Review comments
Addressed review comments from JustAMan.  Removed code to determine experimental version.  Store major and minor as two ints.  Allow control of a min and max recommended version.
2019-02-15 23:51:22 +00:00
PloughPuff
a6bde0943e Implement proper FFmpeg version checking
Three routes to determine FFmpeg version:
1) Grab the 'ffmpeg version x.y' from from the -version output.  This should work for all pre-built binaries.
2) Compare the library versions against known contents of FFmpeg versions.  This is fallback aimed at custom builds.
3) Compare libavcodec version to determine if newer than latest known release.  This suggests user is running within latest/HEAD/master build.
2019-02-14 22:08:48 +00:00