Problemi di conversione con ffmpeg

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
Linpassion
Linux 2.x
Linux 2.x
Messaggi: 337
Iscritto il: mar 30 ott 2012, 11:17
Slackware: 14.2
Desktop: xfce, fluxbox

Problemi di conversione con ffmpeg

Messaggio da Linpassion »

Allora posto questo problema che a me sembra complesso, ma forse un esperto può avere la soluzione al caso.
Dunque ho un file .mkv e con ffmpeg l'ho convertito in .mp4

Codice: Seleziona tutto

 ffmpeg -i "input file.mkv" -codec copy "output  file.mp4"

La conversione avviene con succeso ma il problema è la compatibilità con con altri dispositivi. Mi spiego meglio, il file .mp4 è visibile sul pc, neelle tv di casa, ma il lettore della sala si vede in b/n, mentre in un altro lettore si sente solo l'audio.
Ho provato ad usare hanbrake ma con stesso risultato. Cercando in rete ho trovato un'altra configurazione di ffmepeg che dovrebbe garantire il massimo della compatibilità. La stringa è

Codice: Seleziona tutto

 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 
Qui sorge un altro problema e cioè che ffmpeg non trova il codec h264. Eseguendo il test di verifica ottengo

Codice: Seleziona tutto

 ffmpeg -codecs | grep 264
ffmpeg version 4.4.1 Copyright (c) 2000-2021 the FFmpeg developers
  built with gcc 11.2.0 (GCC)
  configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --docdir=/usr/doc/ffmpeg-4.4.1/html --mandir=/usr/man --disable-debug --enable-shared --disable-static --enable-gpl --enable-version3 --enable-avresample --arch=x86_64 --disable-encoder=aac --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-gnutls --enable-libbluray --enable-libcaca --enable-libcdio --enable-frei0r --enable-openal --enable-libopus --enable-libspeex --enable-libssh --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libmp3lame --enable-opencl --enable-opengl --enable-libopenjpeg --enable-libpulse --enable-libsmbclient --enable-libxml2 --enable-librsvg --enable-libdrm
  libavutil      56. 70.100 / 56. 70.100
  libavcodec     58.134.100 / 58.134.100
  libavformat    58. 76.100 / 58. 76.100
  libavdevice    58. 13.100 / 58. 13.100
  libavfilter     7.110.100 /  7.110.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  9.100 /  5.  9.100
  libswresample   3.  9.100 /  3.  9.100
  libpostproc    55.  9.100 / 55.  9.100
 DEV.LS h264                 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (decoders: h264 h264_v4l2m2m ) (encoders: h264_v4l2m2m h264_vaapi )
bash-5.1$  
Non so tradurlo e nel caso dovrei ricompilare ffmpeg abilitando h264 in SlackBuild non c'è, perchè se non erro nalla 15.0 è gia incluso ffmpeg. Aggiungo che x264 ed x265 sono stati installati separatamente da SlackBuild nella macchina perchè mi servivano per VLC. Tutte le prove fattemi portano sempre al madesimo risultato.

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3829
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: Problemi di conversione con ffmpeg

Messaggio da joe »

Guarda, parti da dall'analisi del file incriminato.
MKV è un contenitore, bisogna vedere la codifica della traccia video che è contenuta lì dentro.
Anche mp4 che ottieni in uscita dalla conversione, in realtà mi sa tanto che cambi solo il contenitore, tanto che metti "-codec copy", come è fatta la traccia video che è contenuta in quell'MP4?

Per saperlo hai due modi:

Codice: Seleziona tutto

ffmpeg -i file.quelcheé
e metti l'output qui in risposta, così vediamo come è codificato.

Esempio con un video che ho tirato giù dal tubo (tolgo un po' di roba per evidenziare i flussi audio e video che contiene il file, tu posta pure tutto interamente come indicato sopra):

Codice: Seleziona tutto

ffmpeg -i file.mp4 2>&1|grep Stream
  Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 3548 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)
  Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 127 kb/s (default)
Ecco che da lì capisco che il flusso video è codificato in h264 avc1 ecc...
Da lì confronti che quella codifica sia supportata dai dispositivi dove lo vuoi vedere, ed eventualmente converti l'originale impostando una codifica diversa (compatibile con tv ecc) in uscita, per cui non metterai -codec copy ma qualcos'altro.

Avatar utente
ponce
Iper Master
Iper Master
Messaggi: 3046
Iscritto il: mer 5 mar 2008, 16:45
Nome Cognome: Matteo Bernardini
Slackware: slackware64-current
Kernel: 6.6.16
Desktop: lxde
Località: Pisa
Contatta:

Re: Problemi di conversione con ffmpeg

Messaggio da ponce »

qual'e' la versione di ffmpeg che hai installato? puoi verificare con

Codice: Seleziona tutto

ffmpeg -version

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3829
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: Problemi di conversione con ffmpeg

Messaggio da joe »

Io ho questa:

ffmpeg-4.4.1-x86_64-2edit

L'avevo targata "edit" perché avevo ricompilato a partire dallo Slackbuild di Pat sbloccando qualche codec, ma la versione è quella della 15.0.

Anche Linpassion vedo che ha quella versione, si vede dall'output che ha postato.
Quindi versione "4.4.1".

Avatar utente
ponce
Iper Master
Iper Master
Messaggi: 3046
Iscritto il: mer 5 mar 2008, 16:45
Nome Cognome: Matteo Bernardini
Slackware: slackware64-current
Kernel: 6.6.16
Desktop: lxde
Località: Pisa
Contatta:

Re: Problemi di conversione con ffmpeg

Messaggio da ponce »

si, e' che dall'output del comando sopra si vedono anche le opzioni di compilazione: in effetti, mi era sfuggito, si vedono pure quelle anche dall'output che ha gia' postato linpassion e non e' presente --enable-x264 come ad esempio nel mio in cui libx264 (che linpassion richiamava nel suo comando per fare l'encoding) e' abilitato anche per l'encoding

Codice: Seleziona tutto

$ ffmpeg -codecs | grep x264
ffmpeg version 5.1.3 Copyright (c) 2000-2022 the FFmpeg developers
  built with gcc 13.1.0 (GCC)
  configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --docdir=/usr/doc/ffmpeg-5.1.3/html --mandir=/usr/man --disable-debug --enable-shared --disable-static --enable-gpl --enable-version3 --arch=x86_64 --enable-nonfree --enable-libfdk-aac --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcelt --enable-libdc1394 --enable-libflite --enable-frei0r --enable-libgme --enable-libgsm --enable-libiec61883 --enable-libilbc --enable-libmodplug --enable-openal --enable-libopus --enable-librtmp --enable-libsnappy --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libv4l2 --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-libmp3lame --enable-opencl --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-opengl --enable-libopenjpeg --enable-libpulse --enable-librubberband --enable-libtesseract --enable-libxml2 --enable-librsvg --enable-vulkan --enable-libglslang --enable-libdrm --enable-libdav1d
  libavutil      57. 28.100 / 57. 28.100
  libavcodec     59. 37.100 / 59. 37.100
  libavformat    59. 27.100 / 59. 27.100
  libavdevice    59.  7.100 / 59.  7.100
  libavfilter     8. 44.100 /  8. 44.100
  libswscale      6.  7.100 /  6.  7.100
  libswresample   4.  7.100 /  4.  7.100
  libpostproc    56.  6.100 / 56.  6.100
 DEV.LS h264                 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (decoders: h264 h264_v4l2m2m h264_cuvid ) (encoders: libx264 libx264rgb h264_nvenc h264_v4l2m2m h264_vaapi )
confrontandolo con l'ultima riga dell'output di linpassion

Codice: Seleziona tutto

 DEV.LS h264                 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (decoders: h264 h264_v4l2m2m ) (encoders: h264_v4l2m2m h264_vaapi )
quindi, in alternativa:
- o ricompili ffmpeg col supporto anche per x264 (non e' autorilevato, devi passare allo SlackBuild tra gli altri parametri anche X264=yes);
- o aggiorni il tuo ffmpeg con quello di Alien Bob che ha il supporto per tutti i codec (x264 incluso) compilato statico al suo interno.

Avatar utente
Linpassion
Linux 2.x
Linux 2.x
Messaggi: 337
Iscritto il: mar 30 ott 2012, 11:17
Slackware: 14.2
Desktop: xfce, fluxbox

Re: Problemi di conversione con ffmpeg

Messaggio da Linpassion »

Ricompilare con il supporto x264 non mi è possibile perche la versione in Slackbuild è inerente alla 14.2 ed io ho attualmente ho la 15. Provo con la seconda opzione

Avatar utente
414N
Iper Master
Iper Master
Messaggi: 2922
Iscritto il: mer 13 feb 2008, 16:19
Slackware: 15.0
Kernel: 5.15.19
Desktop: KDE5
Località: Bulagna
Contatta:

Re: Problemi di conversione con ffmpeg

Messaggio da 414N »

Domanda: ma senza l'opzione

Codice: Seleziona tutto

-codec=copy
la conversione avviene comunque?
Nel caso, il video potrebbe risultare di qualità inferiore e si tratterebbe di fare tweaking dei parametri di ricodifica.
Altra opzione: se installi gpac/MP4Box, potrebbe funzionarti la conversione diretta di contenitore:

Codice: Seleziona tutto

MP4Box -add file.mkv -new file.mp4
Ultima modifica di 414N il mar 18 lug 2023, 14:20, modificato 1 volta in totale.

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3829
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: Problemi di conversione con ffmpeg

Messaggio da joe »

Prova prima di tutto a postare i dettagli del video con il comando ffmpeg che ti ho mostrato o in alternativa con mkvinfo (mkvtoolnix) o mediainfo. Solo così si vede il codec di partenza e altre caratteristiche della traccia video originale.

Avatar utente
Linpassion
Linux 2.x
Linux 2.x
Messaggi: 337
Iscritto il: mar 30 ott 2012, 11:17
Slackware: 14.2
Desktop: xfce, fluxbox

Re: Problemi di conversione con ffmpeg

Messaggio da Linpassion »

Proverò anche on altri modi che mi avete suggerito. Ieri ho riparato cos': preso un .mp4 che si vedeva in b/n e masterizzato in dvd temporaneo con dvd styler...e si vede bene: colore e audio. Ci aggiorniamo.

Rispondi