Dalla mia esperienza, se non vuoi assolutamente perdere la qualità, - è quello che stai cercando.
Non sono sicuro avconv
ma il comando che hai digitato sembra identico a quello che faccio FFmpeg
. In FFmpeg
puoi passare il parametro in questo modo:
ffmpeg -i INPUT.mkv -c:v libx265 -preset ultrafast -x265-params lossless=1 OUTPUT.mkv
La maggior parte degli x265
switch (opzioni senza valore) può essere specificata in questo modo (ad eccezione di quelli solo CLI, quelli vengono utilizzati solo con x265
binario direttamente).
Detto questo, vorrei condividere la mia esperienza con la x265
codifica. Per la maggior parte dei video (sia WMV, MPEG o AVC / H.264) che uso crf=23
. x265
decide il resto dei parametri e di solito fa un lavoro abbastanza buono.
Tuttavia, spesso prima di impegnarmi a transcodificare un video nella sua interezza, collaudo le mie impostazioni convertendo una piccola parte del video in questione. Ecco un esempio, supponiamo che un file mkv con stream 0 sia video, stream 1 sia audio DTS e stream 2 sia un sottotitolo:
ffmpeg -hide_banner \
-ss 0 \
-i "INPUT.mkv" \
-attach "COVER.jpg" \
-map_metadata 0 \
-map_chapters 0 \
-metadata title="TITLE" \
-map 0:0 -metadata:s:v:0 language=eng \
-map 0:1 -metadata:s:a:0 language=eng -metadata:s:a:0 title="Surround 5.1 (DTS)" \
-map 0:2 -metadata:s:s:0 language=eng -metadata:s:s:0 title="English" \
-metadata:s:t:0 filename="Cover.jpg" -metadata:s:t:0 mimetype="image/jpeg" \
-c:v libx265 -preset ultrafast -x265-params \
crf=22:qcomp=0.8:aq-mode=1:aq_strength=1.0:qg-size=16:psy-rd=0.7:psy-rdoq=5.0:rdoq-level=1:merange=44 \
-c:a copy \
-c:s copy \
-t 120 \
"OUTPUT.HEVC.DTS.Sample.mkv"
Si noti che la linea del segnale rovesciato si interrompe in un lungo comando, lo faccio per aiutarmi a tenere traccia di vari bit di un input CLI complesso. Prima di spiegarlo riga per riga, la parte in cui converti solo una piccola parte di un video è la seconda riga e la seconda ultima riga: -ss 0
significa cercare 0 secondi prima di iniziare a decodificare l'input e -t 120
significa interrompere la scrittura nell'output dopo 120 secondi. Puoi anche utilizzare i formati ora hh: mm: ss o hh: mm: ss.sss.
Ora riga per riga:
-hide_banner
impedisce FFmpeg
di mostrare le informazioni di build all'avvio. Non voglio vederlo quando scorro verso l'alto nella console;
-ss 0
cerca 0 secondi prima di iniziare a decodificare l'input. Si noti che se questo parametro viene fornito dopo il file di input e prima del file di output, diventa un'opzione di output e indica ffmpeg
di decodificare e ignorare l'input fino a x secondi, quindi iniziare a scrivere nell'output. Come opzione di input è meno preciso (perché la ricerca non è accurata nella maggior parte dei formati contenitore), ma non richiede quasi tempo. Come opzione di output è molto preciso, ma richiede molto tempo per decodificare tutto il flusso prima del tempo specificato e ai fini del test non si vuole perdere tempo;
-i "INPUT.mkv"
: Specifica il file di input;
-attach "COVER.jpg"
: Consente di allegare una copertina (miniatura, poster, qualunque cosa) all'output. La copertina è di solito mostrata negli esploratori di file;
-map_metadata 0
: Copia su tutti i metadati dall'input 0, che nell'esempio è solo l'input;
-map_chapters 0
: Copia le informazioni sui capitoli (se presenti) dall'input 0;
-metadata title="TITLE"
: Imposta il titolo del video;
-map 0:0 ...
: Mappa flusso 0 dell'input 0, il che significa che vogliamo che il primo flusso dall'input sia scritto nell'output. Poiché questo flusso è un flusso video, è il primo flusso video nell'output , quindi lo specificatore di flusso :s:v:0
. Imposta il tag della lingua su inglese;
-map 0:1 ...
: Simile alla linea 8, mappa il secondo stream (audio DTS) e imposta la sua lingua e il titolo (per una più facile identificazione quando si sceglie dai giocatori);
-map 0:2 ...
: Simile alla riga 9, tranne per il fatto che questo stream è un sottotitolo;
-metadata:s:t:0 ...
: Imposta i metadati per la copertina. Questo è richiesto per il formato contenitore mkv;
-c:v libx265 ...
: Opzioni di codec video. È così lungo che l'ho diviso in due righe. Questa impostazione è buona per i video bluray di alta qualità (1080p) con bande minime in pendenza (che x265 succhia). Molto probabilmente è un eccesso per DVD, programmi TV e video telefonici. Questa impostazione è per lo più rubata da questo post di Doom9 ;
crf=22:...
: Continuazione dei parametri del codec video. Vedi il post del forum sopra menzionato;
-c:a copy
: Copia su audio;
-c:s copy
: Copia sui sottotitoli;
-t 120
: Interrompe la scrittura sull'output dopo 120 secondi, il che ci dà una clip di 2 minuti per l'anteprima della qualità di trancoding;
"OUTPUT.HEVC.DTS.Sample.mkv"
: Nome del file di output. Taggo i nomi dei miei file con il codec video e il codec audio principale.
Accidenti. Questa è la mia prima risposta, quindi se c'è qualcosa che mi manca, lascia un commento. Non sono un esperto di produzione video, sono solo un ragazzo troppo pigro per guardare un film inserendo il disco nel lettore.
PS. Forse questa domanda appartiene a qualche altra parte in quanto non è fortemente correlata a Unix e Linux.
--lossless
potrebbe infatti ingrandire il file, se decodifica il codec precedentemente in perdita e quindi racchiude ciò che ha decodificato senza perdita di dati. La qualità rimarrà esattamente la stessa dell'input.