Alleggerire video "pesanti"

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3223
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 14.2
Kernel: 4.4.38
Desktop: KDE-4.14.21

Alleggerire video "pesanti"

Messaggio da joe »

L'altra sera ho trovato un video codificato se ricordo bene in h265. Siccome era piuttosto piccolo rispetto ad altri risultati omonimi, per far più presto ho tirato giù quello lì...
Quando l'ho avviato con MPV, mi sono accorto di qualche micro-scatto di tanto in tanto... e ho verificato: la CPU era al 100%.

Dandolo in pasto a ffmpeg ecco cosa salta fuori, riporto solo quello che riguarda la traccia video, credo che la pesantezza non risieda nell'audio:

Codice: Seleziona tutto

Stream #0:0: Video: hevc (Main 10), yuv420p10le(tv), 1920x1040, SAR 1:1 DAR 24:13, 23.98 fps, 23.98 tbr, 1k tbn, 23.98 tbc (default)
    Metadata:
      BPS             : 2480929
      BPS-eng         : 2480929
      DURATION        : 01:54:21.897000000
      DURATION-eng    : 01:54:21.897000000
      NUMBER_OF_FRAMES: 164521
      NUMBER_OF_FRAMES-eng: 164521
      NUMBER_OF_BYTES : 2127985512
      NUMBER_OF_BYTES-eng: 2127985512
      _STATISTICS_WRITING_APP: mkvmerge v9.4.0 ('Knurl') 32bit
      _STATISTICS_WRITING_APP-eng: mkvmerge v9.4.0 ('Knurl') 32bit
      _STATISTICS_WRITING_DATE_UTC: 2016-12-20 23:28:46
      _STATISTICS_WRITING_DATE_UTC-eng: 2016-12-20 23:28:46
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
Con ffprobe ottengo quanto segue:

Codice: Seleziona tutto

ffprobe -v error -show_format -show_streams file.mkv

Codice: Seleziona tutto

index=0
codec_name=hevc
codec_long_name=H.265 / HEVC (High Efficiency Video Coding)
profile=Main 10
codec_type=video
codec_time_base=1001/24000
codec_tag_string=[0][0][0][0]
codec_tag=0x0000
width=1920
height=1040
coded_width=1920
coded_height=1040
has_b_frames=2
sample_aspect_ratio=1:1
display_aspect_ratio=24:13
pix_fmt=yuv420p10le
level=120
color_range=tv
color_space=unknown
color_transfer=unknown
color_primaries=unknown
chroma_location=unspecified
field_order=unknown
timecode=N/A
refs=1
id=N/A
r_frame_rate=24000/1001
avg_frame_rate=24000/1001
time_base=1/1000
start_pts=0
start_time=0.000000
duration_ts=N/A
duration=N/A
bit_rate=N/A
max_bit_rate=N/A
bits_per_raw_sample=N/A
nb_frames=N/A
nb_read_frames=N/A
nb_read_packets=N/A
DISPOSITION:default=1
DISPOSITION:dub=0
DISPOSITION:original=0
DISPOSITION:comment=0
DISPOSITION:lyrics=0
DISPOSITION:karaoke=0
DISPOSITION:forced=0
DISPOSITION:hearing_impaired=0
DISPOSITION:visual_impaired=0
DISPOSITION:clean_effects=0
DISPOSITION:attached_pic=0
DISPOSITION:timed_thumbnails=0
TAG:BPS=2480929
TAG:BPS-eng=2480929
TAG:DURATION=01:54:21.897000000
TAG:DURATION-eng=01:54:21.897000000
TAG:NUMBER_OF_FRAMES=164521
TAG:NUMBER_OF_FRAMES-eng=164521
TAG:NUMBER_OF_BYTES=2127985512
TAG:NUMBER_OF_BYTES-eng=2127985512
TAG:_STATISTICS_WRITING_APP=mkvmerge v9.4.0 ('Knurl') 32bit
TAG:_STATISTICS_WRITING_APP-eng=mkvmerge v9.4.0 ('Knurl') 32bit
TAG:_STATISTICS_WRITING_DATE_UTC=2016-12-20 23:28:46
TAG:_STATISTICS_WRITING_DATE_UTC-eng=2016-12-20 23:28:46
TAG:_STATISTICS_TAGS=BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
TAG:_STATISTICS_TAGS-eng=BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
Il mio PC ha una scheda video da poco, Nvidia GeForce 210.
E come processore un altrettanto datato Core 2 Duo CPU E8200 @ 2.66GHz.


Ok, domande:

1.
Come si spiega la CPU al 100% o giù di lì e i (credo conseguenti) microscatti durante la riproduzione del video?

2.
C'è qualche modo per istruire MPV ad usare qualche istruzione tale da coinvolgere maggiormente la scheda video in modo da risolvere questo problema.
Da questo punto di vista aggiungo che solitamente utilizzo l'output VDPAU: riporto le due impostazioni che ho in mpv.conf

Codice: Seleziona tutto

$ grep -i vdpau .config/mpv/mpv.conf
vo=vdpau
# If performance or energy usage is an issue, forcing the vdpau or vaapi VOs
hwdec=vdpau
Solitamente infatti poi vedo nelle informazioni del video (premendo I maiuscolo durante la riproduzione con mpv) ho tra le altre cose (esempio di un video da youtube):

Codice: Seleziona tutto

Video: h264 (H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10) (hwdec: vdpau)
Pixel Format: vdpau
In altre parole riesce ad usare VDPAU, che se ho ben capito è il tornasole per capire se la mia scheda video sta lavorando sgravando la CPU dal carico di decodifica/riproduzione.

Nel caso del video in oggetto invece ho:

Codice: Seleziona tutto

Video: hevc (HEVC (High Efficiency Video Coding))
Pixel Format: youv420p10
Quindi in questo caso non viene utilizzato VDPAU.

3.
Al limite si potrebbe convertire il video in questione in modo che sia più compatibile con il mio hardware?
Possibilmente senza perdere in qualità...?

Grazie mille in anticipo! :D

Avatar utente
brg
Linux 3.x
Linux 3.x
Messaggi: 500
Iscritto il: sab 12 mar 2011, 14:20
Slackware: 14.2
Kernel: 4.4.172
Desktop: KDE4
Località: Montecatini
Contatta:

Re: Alleggerire video "pesanti"

Messaggio da brg »

Usando mplayer puoi scegliere che driver utilizzare: opengl, xv, x11 ecc.

hashbang
Packager
Packager
Messaggi: 1992
Iscritto il: ven 4 giu 2010, 10:27
Nome Cognome: Luca De Pandis
Distribuzione: macOS | OpenBSD
Località: Lecce / Bergamo
Contatta:

Re: Alleggerire video "pesanti"

Messaggio da hashbang »

joe ha scritto:
sab 6 giu 2020, 17:03
Come si spiega la CPU al 100% o giù di lì e i (credo conseguenti) microscatti durante la riproduzione del video?
La tua scheda grafica non supporta la decodifica hardware su flussi video hevc, quindi il player video va in software decoding, scaricando il barile sulla CPU.
EDIT: aggiungo, che risoluzione ha il tuo monitor? Perché se il player sta riproducendo il video in downscale allora c'è da aggiungere anche quel carico sulla tua CPU. Non tutti gli algoritmi di downscale hanno lo stesso impatto sulle risorse.
2.
C'è qualche modo per istruire MPV ad usare qualche istruzione tale da coinvolgere maggiormente la scheda video in modo da risolvere questo problema.
no. Se il tuo hardware non supporta la decodifica hevc non puoi far nulla. Alla fine hai due strade: scegli un formato differente o cambia hardware. Altro non puoi fare.
3.
Al limite si potrebbe convertire il video in questione in modo che sia più compatibile con il mio hardware?
Possibilmente senza perdere in qualità...?
No. I codec video cone hevc o h264 sono lossy, non lossless.
Quindi ogni volta che sottoponi il video ad un processo di re-enconding perdi sempre qualità. Non importa se poco o molto, ma perdi sempre.
Per questo odio la parola “convertire” se applicata a audio o video con codec lossy. Non esiste nessuna conversione. Solo re-encode.

Detto ciò, puoi re-encodare il video con un formato differente, che ha un miglior supporto sulla tua gpu. H264 dovrebbe essere supportato, ma credo solo su profili 4:2:0 a 8-bit.
Non credo che chroma subsampling 4:2:2 o 4:4:4, o bit depth >=10 siano supportati.
k8s | rook | flatcar | cert-manager | calico

Codice: Seleziona tutto

host$ kubectl get packager/hashbang -n slacky -o yaml

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3223
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 14.2
Kernel: 4.4.38
Desktop: KDE-4.14.21

Re: Alleggerire video "pesanti"

Messaggio da joe »

Grande, già che ho il video lì posso fare una prova.
Vedo che sei ferrato in materia, mi dai un comando pappapronta per fare la ricodifica.. se non googolo in cerca dei oneliner che fanno al caso mio.


Per quanto riguarda il monitor Dell U2415 (1920x1200), non credevo che impattasse sulla cpu, pensavo che il discorso si fermasse alla risoluzione della scheda video:

Codice: Seleziona tutto

$ xrandr
Screen 0: minimum 8 x 8, current 1920 x 1200, maximum 8192 x 8192
DVI-I-0 disconnected primary (normal left inverted right x axis y axis)
VGA-0 disconnected (normal left inverted right x axis y axis)
DVI-I-1 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 518mm x 324mm
   1920x1200     59.95*+  59.88
   1920x1080     60.00    59.94    50.00    29.97    25.00    23.97    60.05    60.00    50.04
   1600x1200     60.00
   1280x1024     75.02    60.02
   1280x720      60.00    59.94    50.00
   1152x864      75.00
   1024x768      75.03    60.00
   800x600       75.00    60.32
   720x576       50.00    50.08
   720x480       59.94    60.05
   640x480       75.00    59.94    59.93
Direi che scheda video e monitor come risoluzione sono ok e girano al massimo supportato dal monitor 1920x1200, che lo regge anche la scheda video (massima 2560 x 1600 e da nvidia-settings vedo che la risoluzione del monitor è selezionata e non risulta "scaled" come alcune altre risoluzioni disponibili). Dico bene?
Invece il video in oggetto vedo che ha risoluzione diversa: 1920x1040
Credo che ti riferissi a questo punto cioè risoluzione del video diversa da quella del monitor/scheda video.
Come faccio a sapere se c'è un maggior carico dovuto a operazioni di downscale?

hashbang
Packager
Packager
Messaggi: 1992
Iscritto il: ven 4 giu 2010, 10:27
Nome Cognome: Luca De Pandis
Distribuzione: macOS | OpenBSD
Località: Lecce / Bergamo
Contatta:

Re: Alleggerire video "pesanti"

Messaggio da hashbang »

joe ha scritto:
sab 6 giu 2020, 23:11
Grande, già che ho il video lì posso fare una prova.
Vedo che sei ferrato in materia, mi dai un comando pappapronta per fare la ricodifica.. se non googolo in cerca dei oneliner che fanno al caso mio.

Codice: Seleziona tutto

#!/bin/bash

# Autohardsubber for UNIX - A port of the Autohardsubber utility for Unix-based systems.
# Copyright (C) 2013, 2014, 2015, Luca De Pandis. All rights reserved.

# The original Autohardsubber tool was developed by mirkosp.
# Copyright (C) 2012, 2013, 2014, 2015, mirkosp <http://task-force.lacumpa.biz>.
# All rights reserved.

# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


encoder="$(which mpv 2>/dev/null)"
preset="fast"
crf=17
dirmode=false
output="$HOME/hardsub"
vf="format=420p"

encode() {
  local file="$1"

  nice -n 19 $encoder "$file" --of mp4 --ovc libx264 --oac aac --ovcopts \
                preset=$preset,crf=$crf,profile=high,level=4.1 \
                --vf=$vf --oneverdrop --ocopyts \
                --o $output/"$(basename "$file" .mkv).mp4" || exit 4
}

while getopts "hdbD:sx:o:" parameters; do
  case "$parameters" in
      "h" )
          echo -e "Autohardsubber for UNIX v0.2

          \rUsage:
          \r\t-h\t\tShow this help screen
          \r\t-d\t\tDebug Mode (for development purposes only)
          \r\t-b\t\tHigh Quality Encode
          \r\t-s\t\tDownscale automatically 1080p videos to 720p
          \r\t-x <path>\tCustom mpv executable path
          \r\t-D <path>\tDirectory path (useful if you want to encode more files)
          \r\t-o <path>\tOutput path (Default: $HOME/hardsub)"
          exit 0
      ;;

      "d" )
          set -ex
      ;;

      "b" )
          preset="slow"
          crf=14
      ;;

      "D" )
          dirmode=true
          path="$OPTARG"
      ;;

      "s" )
          vf="scale=-10:720,$vf"
      ;;

      "x" )
          encoder="$OPTARG"
      ;;

      "o" )
          output="$OPTARG"
      ;;

      * )
          exit 1
      ;;
  esac
done

shift $((OPTIND-1))

if [ -z "$1" ] &&  ! $dirmode; then
  echo "Missing input file!"
  exit 2
elif [ -z $encoder ]; then
  echo -e "MPV not found. If you have installed it in a non-standard path,
          \rplease use the -x flag."
  exit 3
fi

mkdir -p $output

if $dirmode; then
  ( cd "$path"
    for i in $(/bin/ls *.mkv | tr " " "+"); do
        if [ ! -e "$i" ]; then
            encode "$(echo "$i" | tr "+" " ")"
        else
            encode $i
        fi
    done )
else
  encode "$1"
fi
5 anni fa scrissi questo script per convertire video H264 10-bit (Hi10P e Hi444PP in particolare) con tracce sottotitolate esterne (softsub) sotto container Matroska in video H264 8-bit con sottotitoli integrati nei frame (hardsub) sotto container MPEG 4. Questo script, autohardsubber4unix, è un port di un batch, autohardsubber, che un mio ex-collega fansubber aveva fatto per Windows.
Usa direttamente mpv come utility per l'encoding, con x264 come encoder video e libfdk_aac come encoder audio. Può anche downscalare video 1080p in video a 720p.
Di default usa preset fast e crf 17 per un encode veloce e di qualità inferiore, ma supporta anche un preset slow con crf 14 per un risultato diciamo pure migliore (anche se nell'encoding non esistono valori generici che vanno bene per tutto).

Considera che non lo mantengo da allora, quindi non so se funziona ancora, ma anche se è nato per fare hardsub sporco dovrebbe andare bene anche per casi come il tuo.

Di seguito una mini guida (puoi lanciarlo con -h per l'help screen):
CASO 1 - Singolo mkv da processare

Codice: Seleziona tutto

$ ./autohardsubber4unix <nomefile>

CASO 2 - Directory da processare

Codice: Seleziona tutto

$ ./autohardsubber4unix -D /path/della/directory

CASO 3 - Singolo file da processare con encode "alta" qualità

Codice: Seleziona tutto

$ ./autohardsubber4unix -b <nomefile>

CASO 4 - Directory da processare con encode "alta" qualità

Codice: Seleziona tutto

$ ./autohardsubber4unix -bD /path/della/directory

CASO 5 - Specifico per utenti Apple e per chi ha installato mpv in un path non standard (tipo /opt)

Codice: Seleziona tutto

$ ./autohardsubber4unix -x <path di mpv> <parametri> <nomefile>

CASO 6 - Specifico per nerd e coloro che vogliono debuggare lo script

Codice: Seleziona tutto

$ ./autohardsubber4unix -d <parametri> <nomefile>

CASO 7 - Conversione video in una directory personalizzata (ATTENZIONE: solo il path, non il nome del file). Di default viene tutto salvato in ~/hardsub.

Codice: Seleziona tutto

$ ./autohardsubber4unix <parametri> -o /path/di/destinazione <nomefile>

CASO 8 - Convertire un MKV 1080p in un MP4 720p

Codice: Seleziona tutto

$ ./autohardsubber4unix -s <parametri> <nomefile>
Per quanto riguarda il monitor Dell U2415 (1920x1200), non credevo che impattasse sulla cpu, pensavo che il discorso si fermasse alla risoluzione della scheda video:

Codice: Seleziona tutto

$ xrandr
Screen 0: minimum 8 x 8, current 1920 x 1200, maximum 8192 x 8192
DVI-I-0 disconnected primary (normal left inverted right x axis y axis)
VGA-0 disconnected (normal left inverted right x axis y axis)
DVI-I-1 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 518mm x 324mm
   1920x1200     59.95*+  59.88
   1920x1080     60.00    59.94    50.00    29.97    25.00    23.97    60.05    60.00    50.04
   1600x1200     60.00
   1280x1024     75.02    60.02
   1280x720      60.00    59.94    50.00
   1152x864      75.00
   1024x768      75.03    60.00
   800x600       75.00    60.32
   720x576       50.00    50.08
   720x480       59.94    60.05
   640x480       75.00    59.94    59.93
Direi che scheda video e monitor come risoluzione sono ok e girano al massimo supportato dal monitor 1920x1200, che lo regge anche la scheda video (massima 2560 x 1600 e da nvidia-settings vedo che la risoluzione del monitor è selezionata e non risulta "scaled" come alcune altre risoluzioni disponibili). Dico bene?
Invece il video in oggetto vedo che ha risoluzione diversa: 1920x1040
Credo che ti riferissi a questo punto cioè risoluzione del video diversa da quella del monitor/scheda video.
Esatto.
Nel tuo caso non c'è downscale perché la tua risoluzione è maggiore del video, non c'è nemmeno upscale in caso di fullscreen anche perché sei già a 1920 in orizzontale, mentre in verticale, avendo una ratio diversa, avrai le classiche bande nere.
Come faccio a sapere se c'è un maggior carico dovuto a operazioni di downscale?
Esistono degli strumenti specifici che usano gli encoder, però se non stai cercando di vedere video 1080p su monitor 720p/768p e con hardware poco performante di solito non te ne accorgi poi così tanto. Non è tanto un collo di bottiglia quanto un plus ad altri colli di bottiglia.
k8s | rook | flatcar | cert-manager | calico

Codice: Seleziona tutto

host$ kubectl get packager/hashbang -n slacky -o yaml

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3223
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 14.2
Kernel: 4.4.38
Desktop: KDE-4.14.21

Re: Alleggerire video "pesanti"

Messaggio da joe »

Be' grazie mille...

Ti accenno come ho fatto io, perché ovviamente poi ci avevo provato ieri...

- estrazione traccia video

Codice: Seleziona tutto

mkvextract tracks input-x265.mkv 0:video
- encoding con ffmpeg

Codice: Seleziona tutto

ffmpeg -i video -c:v libx264 -crf 18 -vf format=yuv420p out-video-h264-8bit
- dopodiché ho sostituito la nuova traccia video out-video-h264-8bit a quella vecchia h265 che avevo estratto nel file MKV origiginario.

Ho dato un'occhiata al risultato e direi che sul mio monitor va più che bene come qualità.
Guarderò anche il tuo script comunque tanto per capire.

Piccolo problema?
I tempi di encoding sono biblici!!!
È un'operazione da tenere come ultima spiaggia proprio se non si trovano altri formati del video ricercato. O se si vuole redistribuire in h264.

A questo proposito un paio di domande al volo:
- c'è il modo di capire quanti minuti di video sono stati lavorati?
- c'è modo di interrompere l'operazione e riprenderla in un secondo momento?
- è normale che la CPU durante l'operazione venga saturata al 100% o quasi?
- per caso c'è modo di coinvolgere la scheda video durante l'encoding? (ma credo di no nel mio caso, così come non supportava la riproduzione del formato in input, varrà immagino anche per l'encoding dello stesso file in ingresso).

Ok, grazie delle informazioni!!! :D

hashbang
Packager
Packager
Messaggi: 1992
Iscritto il: ven 4 giu 2010, 10:27
Nome Cognome: Luca De Pandis
Distribuzione: macOS | OpenBSD
Località: Lecce / Bergamo
Contatta:

Re: Alleggerire video "pesanti"

Messaggio da hashbang »

joe ha scritto:
dom 7 giu 2020, 20:56
Piccolo problema?
I tempi di encoding sono biblici!!!
Beh, è normale.
E quanto più cerchi di renderlo "migliore" tramite preset, crf e filtri tanto più diventa lento.
È un'operazione da tenere come ultima spiaggia proprio se non si trovano altri formati del video ricercato. O se si vuole redistribuire in h264.
Esatto.
Per quello il mio consiglio iniziale era: trova un formato diverso o cambia hardware. Purtroppo nel tuo caso non hai molta scelta.
- c'è il modo di capire quanti minuti di video sono stati lavorati?
FFMPEG lo dice.
Quando processa un video mostra il timing
Immagine
Guarda la penultima riga dell'output nello screen postato. Dove c'è scritto time=.... indica il minuto del video a cui è arrivato.
- c'è modo di interrompere l'operazione e riprenderla in un secondo momento?
Se non devi spegnere il laptop potresti sempre andare di SIGSTOP/SIGCONT.
- è normale che la CPU durante l'operazione venga saturata al 100% o quasi?
Certo, e vale lo stesso discorso fatto sui tempi biblici.
Per cercare di alleviare la problematica, nel mio script lancio mpv con un nice a 19, abbassando la priorità del processo.
I tempi si allungano leggermente, ma ha meno impatto sulla CPU.
Detto ciò, gli encode dovrebbero sempre operare a bassa priorità.
- per caso c'è modo di coinvolgere la scheda video durante l'encoding? (ma credo di no nel mio caso, così come non supportava la riproduzione del formato in input, varrà immagino anche per l'encoding dello stesso file in ingresso).
No. x264, che è l'encoder video che stai usando, non supporta l'hardware encoding. Oltretutto l'hardware encoding ha da sempre una qualità mediamente inferiore al software encoding.
k8s | rook | flatcar | cert-manager | calico

Codice: Seleziona tutto

host$ kubectl get packager/hashbang -n slacky -o yaml

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3223
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 14.2
Kernel: 4.4.38
Desktop: KDE-4.14.21

Re: Alleggerire video "pesanti"

Messaggio da joe »

Forse una soluzione qua c'è:

https://ipfs-sec.stackexchange.cloudfla ... 17061.html

In pratica:
- si frammenta il video in N parti piccole a piacere, tali da essere più gestibili come tempistiche di lavorazione
- si esegue su ognuna la ri-codifica
- infine quando si hanno le N parti ricodificate nel nuovo formato, si concatenano

Tu cosa ne pensi?

PS.
Mentre leggevo mi veniva in mente anche un'altra possibilità offerta da quel metodo qualora non si saturasse tutta la CPU come nel mio caso:
- splittare il video in N parti
- creare N processi che eseguano la ricodifica in modo indipendente
- concatenare tutti i frammenti ricodificati

Con questa roba, chi ha mettiamo anche 2 PC discreti, può ridurre i tempi di parecchio direi.
Nel mio caso serve solo a poter distribuire il lavoro su diverse sessioni in modo da poter spegnere il PC o poterlo usare per altre mansioni senza dover ricominciare da zero la ricodifica.

hashbang
Packager
Packager
Messaggi: 1992
Iscritto il: ven 4 giu 2010, 10:27
Nome Cognome: Luca De Pandis
Distribuzione: macOS | OpenBSD
Località: Lecce / Bergamo
Contatta:

Re: Alleggerire video "pesanti"

Messaggio da hashbang »

joe ha scritto:
dom 7 giu 2020, 22:14
Forse una soluzione qua c'è:

https://ipfs-sec.stackexchange.cloudfla ... 17061.html

In pratica:
- si frammenta il video in N parti piccole a piacere, tali da essere più gestibili come tempistiche di lavorazione
- si esegue su ognuna la ri-codifica
- infine quando si hanno le N parti ricodificate nel nuovo formato, si concatenano

Tu cosa ne pensi?

PS.
Mentre leggevo mi veniva in mente anche un'altra possibilità offerta da quel metodo qualora non si saturasse tutta la CPU come nel mio caso:
- splittare il video in N parti
- creare N processi che eseguano la ricodifica in modo indipendente
- concatenare tutti i frammenti ricodificati

Con questa roba, chi ha mettiamo anche 2 PC discreti, può ridurre i tempi di parecchio direi.
Nel mio caso serve solo a poter distribuire il lavoro su diverse sessioni in modo da poter spegnere il PC o poterlo usare per altre mansioni senza dover ricominciare da zero la ricodifica.
Sì, si può fare.
Se però la questione è semplicemente il voler spegnere il computer o usarlo per altro, secondo me è meglio utilizzare (re)nice per abbassare la priorità (questo in realtà andrebbe fatto sempre), SIGSTOP e poi usare l'ibernazione anziché lo spegnimento.

Altra soluzione, che è quella che uso io, è usare un server per l'encoding. Su Kimsufi (OVH) ne puoi affittare uno a poco prezzo, e con quello potresti eventualmente sia codificare che vederlo in "streaming" con mpv.

Comunque anche quella dello split può essere una soluzione.
k8s | rook | flatcar | cert-manager | calico

Codice: Seleziona tutto

host$ kubectl get packager/hashbang -n slacky -o yaml

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3223
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 14.2
Kernel: 4.4.38
Desktop: KDE-4.14.21

Re: Alleggerire video "pesanti"

Messaggio da joe »

Ho dato un'occhiata a Kimsufi, ma intendi soluzioni server dedicato o VPS?
Immagino la prima... nel tuo caso di che processore parliamo ad esempio?

hashbang
Packager
Packager
Messaggi: 1992
Iscritto il: ven 4 giu 2010, 10:27
Nome Cognome: Luca De Pandis
Distribuzione: macOS | OpenBSD
Località: Lecce / Bergamo
Contatta:

Re: Alleggerire video "pesanti"

Messaggio da hashbang »

joe ha scritto:
dom 7 giu 2020, 23:16
Ho dato un'occhiata a Kimsufi, ma intendi soluzioni server dedicato o VPS?
Immagino la prima... nel tuo caso di che processore parliamo ad esempio?
Dedicato.
Secondo me anche un KS-2 può andar bene. Tanto se lo devi usare solo per encoding, non hai nemmeno bisogno di usare l'interfaccia grafica, quindi puoi installare un Linux minimale (consiglio Arch per queste cose, perché essendo rolling e bleeding edge hai subito le ultime versioni degli encoder a disposizione con poco sbattimento) e lavorare con quello.
Lanci un encode con GNU screen o tmux e lo lasci lavorare tranquillo.

Inoltre se lo vuoi usare come "streaming" non hai bisogno di niente se non di un webserver minimale (tipo lighttpd) che faccia da file server al tuo path.
Poi immetti la URL su mpv e via.
k8s | rook | flatcar | cert-manager | calico

Codice: Seleziona tutto

host$ kubectl get packager/hashbang -n slacky -o yaml

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3223
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 14.2
Kernel: 4.4.38
Desktop: KDE-4.14.21

Re: Alleggerire video "pesanti"

Messaggio da joe »

Praticamente ci fai quello che vuoi, nei limiti delle risorse hardware giusto? Cioè ci potresti per dire anche installare slackware per esempio, o usare il server come seedbox... Dico bene? O ancora che so, metterci un server email? Vedo che non c'è sul volume di traffico dati... Dico bene?

Be' buono a sapersi... Al momento non mi serve così tanto, ma non si sa mai in futuro.
Grazie del suggerimento! :)

hashbang
Packager
Packager
Messaggi: 1992
Iscritto il: ven 4 giu 2010, 10:27
Nome Cognome: Luca De Pandis
Distribuzione: macOS | OpenBSD
Località: Lecce / Bergamo
Contatta:

Re: Alleggerire video "pesanti"

Messaggio da hashbang »

joe ha scritto:
dom 7 giu 2020, 23:38
Praticamente ci fai quello che vuoi, nei limiti delle risorse hardware giusto? Cioè ci potresti per dire anche installare slackware per esempio, o usare il server come seedbox... Dico bene? O ancora che so, metterci un server email? Vedo che non c'è sul volume di traffico dati... Dico bene?

Be' buono a sapersi... Al momento non mi serve così tanto, ma non si sa mai in futuro.
Grazie del suggerimento! :)
Esatto.
Io ad esempio ho un KS-12 che uso come hypervisor (CentOS + libvirt), dove ho un cluster Kubernetes. Mi fa anche da DNS (bind) e Load Balancer (haproxy).
Volendo sì, puoi anche usarlo come seedbox. Prima avevo un rtorrent proprio per quello.

Slackware è disponibile tra i template, però non l'ho mai installata lì. Di solito sono sempre andato di CentOS 7, e ora 8.

Unica nota: non è previsto il KVM. In caso di problemi c'è una rescue mode a scelta: una basata su Debian e l'altra su FreeBSD.
k8s | rook | flatcar | cert-manager | calico

Codice: Seleziona tutto

host$ kubectl get packager/hashbang -n slacky -o yaml

Rispondi