2 Commits

Author SHA1 Message Date
d88cfa2cd3 Fixes to video thumb generation
Some checks failed
Build and Push Image / build-and-push (push) Has been cancelled
2025-07-09 20:06:59 -04:00
cd30876beb Fixed user selection
Some checks failed
Build and Push Image / build-and-push (push) Has been cancelled
2025-07-09 17:44:49 -04:00
2 changed files with 28 additions and 18 deletions

View File

@@ -121,26 +121,36 @@ public class ThumbnailService(IMongoDatabase db, AobaService aobaService)
public Maybe<Stream> GenerateVideoThumbnail(Stream data, ThumbnailSize size, CancellationToken cancellationToken = default) public Maybe<Stream> GenerateVideoThumbnail(Stream data, ThumbnailSize size, CancellationToken cancellationToken = default)
{ {
var w = (int)size; var w = (int)size;
var source = new MemoryStream(); var fn = ObjectId.GenerateNewId().ToString();
var filePath = $"/tmp/{fn}.in";
using var source = new FileStream(filePath, FileMode.CreateNew);
data.CopyTo(source); data.CopyTo(source);
source.Position = 0; source.Flush();
source.Dispose();
data.Dispose();
try
{
var output = new MemoryStream(); var output = new MemoryStream();
FFMpegArguments.FromPipeInput(new StreamPipeSource(source), opt => FFMpegArguments.FromFileInput(filePath, false, opt =>
{ {
opt.WithCustomArgument("-t 5"); opt.WithCustomArgument("-t 5");
}).OutputToPipe(new StreamPipeSink(output), opt => }).OutputToPipe(new StreamPipeSink(output), opt =>
{ {
opt.WithCustomArgument($"-vf \"crop='min(in_w,in_h)':'min(in_w,in_h)',scale={w}:{w}\" -loop 0 -r 15") opt.WithCustomArgument($"-vf \"crop='min(in_w,in_h)':'min(in_w,in_h)',scale={w}:{w}\" -loop 0 -r 15")
.ForceFormat("webp"); .ForceFormat("webp");
}).Configure(cfg =>
{
#if !DEBUG
cfg.BinaryFolder = "/usr/bin";
#endif
}).ProcessSynchronously(); }).ProcessSynchronously();
output.Position = 0; output.Position = 0;
return output; return output;
} }
catch(Exception ex)
{
return ex;
}
finally
{
File.Delete(filePath);
}
}
public async Task<Maybe<Stream>> GenerateDocumentThumbnailAsync(Stream data, ThumbnailSize size, CancellationToken cancellationToken = default) public async Task<Maybe<Stream>> GenerateDocumentThumbnailAsync(Stream data, ThumbnailSize size, CancellationToken cancellationToken = default)
{ {

View File

@@ -32,6 +32,7 @@ RUN dx bundle --platform web
# Server Build # Server Build
# This stage is used when running from VS in fast mode (Default for Debug configuration) # This stage is used when running from VS in fast mode (Default for Debug configuration)
FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS base FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS base
RUN apt-get update && apt-get install -y ffmpeg
USER $APP_UID USER $APP_UID
WORKDIR /app WORKDIR /app
EXPOSE 8080 EXPOSE 8080
@@ -57,9 +58,8 @@ RUN dotnet publish "./AobaServer.csproj" -c $BUILD_CONFIGURATION -o /app/publish
# This stage is used in production or when running from VS in regular mode (Default when not using the Debug configuration) # This stage is used in production or when running from VS in regular mode (Default when not using the Debug configuration)
FROM base AS final FROM base AS final
WORKDIR /app WORKDIR /app
USER root
RUN apt-get update && apt-get install -y ffmpeg
COPY --from=publish /app/publish . COPY --from=publish /app/publish .
ARG VERSION ARG VERSION
ENV APP_VERSION=$VERSION ENV APP_VERSION=$VERSION
ENTRYPOINT ["dotnet", "AobaServer.dll"] ENTRYPOINT ["dotnet", "AobaServer.dll"]