La conversione da WebM a MP4 in Ubuntu è lenta e di cattiva qualità


2

Ho usato il comando

ffmpeg -i input.webm -q:v 10 -c:a copy out.mp4

Ho anche provato a utilizzare al avconvposto di ffmpeg.

La conversione ha esito positivo ma la qualità è scadente. Inoltre ci vuole molto tempo. Inoltre, non funziona con Windows Media Player. (Il motivo è il mpegv1 in cui viene convertito il file.) Come posso aggiungere un'opzione per convertirlo in mpegv2?

Di seguito è riportato l'output della riga di comando:

avconv version 0.8.16-4:0.8.16-0ubuntu0.12.04.1, Copyright (c) 2000-2014 the Libav developers
  built on Sep 16 2014 18:33:49 with gcc 4.6.3 
[matroska,webm @ 0xe737a0] Estimating duration from bitrate, this may be inaccurate
Input #0, matroska,webm, from 'test.webm':
  Duration: 00:00:08.57, start: 0.000000, bitrate: N/A
    Stream #0.0: Video: vp8, yuv420p, 1536x768, PAR 1:1 DAR 2:1, 1k fps, 1k tbr, 1k tbn, 1k tbc (default) 
    Stream #0.1: Audio: vorbis, 44100 Hz, stereo, s16 (default)
[buffer @ 0xee38e0] w:1536 h:768 pixfmt:yuv420p
Output #0, mp4, to 'c2.mp4':
  Metadata:
    encoder         : Lavf53.21.1
    Stream #0.0: Video: mpeg4, yuv420p, 1536x768 [PAR 1:1 DAR 2:1], q=2-31, 200 kb/s, 1k tbn, 1k tbc (default)
    Stream #0.1: Audio: libvorbis, 44100 Hz, stereo (default)
Stream mapping:
  Stream #0:0 -> #0:0 (vp8 -> mpeg4)
  Stream #0:1 -> #0:1 (copy)
Press ctrl-c to stop encoding
frame= 8572 fps=342 q=10.0 Lsize=   90902kB time=8.56 bitrate=86984.0kbits/s dup=8438 drop=0    
video:90823kB audio:0kB global headers:0kB muxing overhead 0.086778%

Risposte:


8

Diversi problemi qui:

  • Stai usando una vecchia versione del avconvrepository Ubuntu 12.04.
  • Questa versione non ha un codificatore H.264 ( libx264) compilato al suo interno.
  • Ecco perché sceglie invece il video MPEG-4 Part II, usando l' mpeg4encoder. Mentre utilizza ancora lo stesso contenitore .MP4, MPEG-4 Part II non è efficiente come H.264.
  • Usa il tuo comando -q:v 10, che è di qualità piuttosto bassa. L'intervallo è compreso tra 1 e 31, dove 1 è il migliore e idealmente si desidera qualcosa tra 2 e 5.
  • Non è possibile copiare l'audio Vorbis su contenitori MP4, quindi -c:a copynon funzionerà.

Quindi, per risolvere questo problema, consiglierei una delle due opzioni:

  1. Continua a usare avconv. Installa apt-get install libavcodec-extra-53su Ubuntu 12.04 e libavcodec-extra-54su Ubuntu 14.04 per ottenere il supporto x264 per avconv.
  2. Usa ffmpeginvece un recente . Scarica una versione recente di ffmpeg (fai clic sul link Build statiche di Linux ). Estrai il ffmpegbinario da qualche parte e usalo.

Quindi eseguire il comando seguente (e sostituirlo ffmpegcon in avconvbase alla scelta effettuata):

ffmpeg -i input.webm -c:v libx264 -crf 20 -c:a aac -strict experimental out.mp4

Il CRF controlla la qualità, dove 18-28 sono scelte sensate. Inferiore è meglio e 23 è predefinito. È possibile impostare il bitrate audio con -b:a 128ko simile a proprio piacimento.

Se si desidera accelerare la conversione, è possibile utilizzarla -presete impostarla su una delle ultrafast, superfast, veryfast, faster, fastopzioni, ad es -preset fast. Si noti che l'impostazione di questo aumenta le dimensioni del file.

La guida alla codifica H.264 per ffmpeg è piuttosto utile e dovrebbe valere anche per avconv (ma non ci sono garanzie).

Per quanto riguarda MPEG-2, dai un'occhiata a questa domanda: come creare un file video MPEG2 con la massima qualità possibile usando FFMPEG? - e non dimenticare di scegliere -c:a libmp3lameinvece come audio.


Cosa facciamo per usarlo in Ubuntu 14.04?
Dfordevy,

Puoi fare esattamente la stessa cosa in Ubuntu 14.04 ma con libavcodec-extra-54. Per quanto riguarda il file "ancora MP4v1", devi dirmi cosa hai fatto esattamente e caricare l'output della riga di comando completo da qualche parte (ad esempio pastebin.com ).
slhck,

Ho incollato l'output di: avconv -i input.webm -c: v libx264 -crf 20 -c: un test sperimentale rigoroso aac_1min_no_preset.mp4 qui: pastebin.com/SQdbvM0Y . quando eseguo il file test_1min_no_preset.mp4, test_1min_no_preset.mp4: supporti ISO, sistema MPEG v4, versione 1
dfordevy,

Non penso che avconv o ffmpeg possano scrivere mp42tag. Perché ne hai davvero bisogno? MP4v1 non è abbastanza buono?
slhck,

Qualsiasi tag è ok per me, ma ho solo bisogno di riprodurlo con Windows Media Player.
Dfordevy,

4

ffmpeg versione 1.2.6-7: 1.2.6-1 ~ trusty1

ffmpeg -i one.webm -r 10 -cpu-used 5 -c: v libx264 -crf 20 -c: un errore sperimentale -logle-strict aac /tmp/one.mp4

Funziona molto bene Convertito video di 1 ora in 10 minuti.


-2

Provare ffmpeg -i input.webm -sameq out.mp4

In alternativa, puoi provare FFMC: http://www.noobslab.com/2013/04/latest-ff-multi-converter-for-ubuntu.html o Miro precompilato: http://www.getmiro.com / download / per-ubuntu /


dice l'opzione non riconosciuta sameq
dfordevy,

anche ffmulticonverter non ha fatto la conversione
dfordevy il

Non utilizzare sameq: superuser.com/questions/478549/… . Non significa la stessa qualità e le versioni recenti di ffmpeg non hanno più questa opzione (per buoni motivi).
slhck,


1
@Overmind I commenti utilizzano una formattazione limitata. Fai clic sul Helpcollegamento accanto alla finestra dei commenti. Non dimenticare di dover @ -ping agli utenti per ricevere una notifica.
slhck,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.