Innanzitutto dovresti capire la differenza tra l'utilizzo dei profili FFmpeg e le opzioni della riga di comando diretta. -vpre
usa un .ffpreset
file che si trova in /usr/share/ffmpeg/
o dove è stato installato ffmpeg. È una serie di coppie option = value e nel tuo caso avresti dovuto definirlo tu stesso (almeno non conosco un baseline
preset fornito con ffmpeg).
Vorrei sconsigliare l'uso dei preset a meno che tu non l'abbia creato tu stesso e sappia a cosa servono le opzioni della riga di comando. Uso ffmpeg da anni ormai e non ho mai usato i preset: non ho mai dovuto farlo.
Una tipica riga di comando per generare video H.264 compatibile con la maggior parte dei dispositivi sarebbe:
ffmpeg -i <input> \
-c:v libx264 -crf 23 -profile:v baseline -level 3.0 -pix_fmt yuv420p \
-c:a aac -ac 2 -b:a 128k \
-movflags faststart \
output.mp4
Alcune note:
H.264 / AAC è la migliore combinazione per un ampio supporto in HTML5. I browser che non dispongono di decodificatori H.264 avranno tuttavia bisogno anche di un video VP8 / Vorbis. Per alcuni esempi da riga di comando, vedi questa risposta . Vedi anche la pagina di supporto del browser di Wikipedia per altri codec.
H.264 funziona anche su tutti i dispositivi mobili.
Le opzioni -profile:v baseline
e -level 3.0
sono necessarie solo per i vecchi dispositivi mobili che non sono in grado di gestire le funzionalità H.264 ad alta intensità di CPU. In genere è possibile lasciarli fuori o invece utilizzare -profile:v main
.
Il CRF imposta la qualità (18-28 è un intervallo ragionevole, inferiore significa migliore qualità). Ovviamente puoi anche usare un bitrate fisso con -b:v 1000k
o simile. Scegli un bitrate che corrisponda alla risoluzione del video. Alcuni dispositivi a bassa potenza potrebbero non essere in grado di gestire bitrate inutilmente elevati.
L' -movflags faststart
opzione è essenziale per lo streaming, poiché sposta i metadati del contenitore all'inizio del file anziché lasciarlo alla fine. Ciò consentirà di avviare immediatamente la riproduzione invece di dover attendere il completo caricamento del file.
Tuttavia, tutto si riduce alla ricerca del minimo comune denominatore per tutti i dispositivi a cui ti rivolgi, che potrebbe non esistere sempre. Certamente non vorrai usare nessun altro codec (cioè peggio ) di H.264. In effetti, non sarebbe saggio offrire video con codifica Baseline ai client che possono decodificare il profilo principale o alto. Scambieresti la qualità contro la ridotta complessità della decodifica.
Dalla mia esperienza, i dispositivi Android possono riprodurre Baseline H.264 con audio AAC-LC in un contenitore MP4. Non ho mai avuto problemi con esso. In effetti, alcuni dispositivi possono anche riprodurre profili più alti, sebbene non sia ufficialmente supportato. iOS in genere supporta anche Baseline H.264, ma puoi sicuramente utilizzare il profilo principale anche su alcuni dispositivi. Vedi questo post (che è un po 'obsoleto) per alcune linee guida.
Se hai utenti con problemi di riproduzione, dovresti scoprire quale video sta causando problemi e ottenere maggiori dettagli sull'hardware e sul software del lettore che stanno utilizzando. Quindi potremmo parlare della risoluzione di quel caso particolare.