ffmpeg - Conversion de fichiers MOV en MP4 [fermé]

145

Je viens d'installer ffmpeg et j'essaie d'encoder toutes mes vidéos téléchargées dans un fichier .mp4. La plupart des utilisateurs téléchargent actuellement .mov et je veux convertir chaque vidéo en .mp4.

J'exécute la commande comme suit:

ffmpeg -i movie.mov -vcodec copy -acodec cop out.mp4

Mais tout ce que je reçois, ce sont les erreurs suivantes

ffmpeg version 0.8.5, Copyright (c) 2000-2011 the FFmpeg developers
  built on Aug 19 2012 11:38:20 with clang 3.1 (tags/Apple/clang-318.0.61)
  configuration: --enable-nonfree --enable-gpl --enable-version3 --enable-postproc --enable-swscale --enable-avfilter --enable-libmp3lame --enable-libvorbis --enable-libtheora --enable-libfaac --enable-libxvid --enable-libx264 --enable-libvpx --enable-hardcoded-tables --enable-shared --enable-pthreads --disable-indevs --cc=clang
  libavutil    51.  9. 1 / 51.  9. 1
  libavcodec   53.  7. 0 / 53.  7. 0
  libavformat  53.  4. 0 / 53.  4. 0
  libavdevice  53.  1. 1 / 53.  1. 1
  libavfilter   2. 23. 0 /  2. 23. 0
  libswscale    2.  0. 0 /  2.  0. 0
  libpostproc  51.  2. 0 / 51.  2. 0
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'movie.mov':
  Metadata:
    major_brand     : qt  
    minor_version   : 537199360
    compatible_brands: qt  
    creation_time   : 2012-03-28 07:13:20
  Duration: 00:00:26.23, start: 0.000000, bitrate: 12974 kb/s
    Stream #0.0(eng): Video: mjpeg, yuvj420p, 1280x720 [PAR 72:72 DAR 16:9], 12972 kb/s, 11.67 fps, 600 tbr, 600 tbn, 600 tbc
    Metadata:
      creation_time   : 2012-03-28 07:13:20
File 'out.mp4' already exists. Overwrite ? [y/N] y
Output #0, mp4, to 'out.mp4':
  Metadata:
    major_brand     : qt  
    minor_version   : 537199360
    compatible_brands: qt  
    creation_time   : 2012-03-28 07:13:20
    encoder         : Lavf53.4.0
    Stream #0.0(eng): Video: mjpeg, yuvj420p, 1280x720 [PAR 72:72 DAR 16:9], q=2-31, 12972 kb/s, 600 tbn, 600 tbc
    Metadata:
      creation_time   : 2012-03-28 07:13:20
Stream mapping:
  Stream #0.0 -> #0.0
Press [q] to stop, [?] for help
frame=  121 fps=  0 q=-1.0 size=   16408kB time=00:00:10.08 bitrate=13332.2kbitsframe=  306 fps=  0 q=-1.0 Lsize=   41543kB time=00:00:26.12 bitrate=13025.0kbits/s    
video:41538kB audio:0kB global headers:0kB muxing overhead 0.012531%
user1503606
la source
Êtes-vous sûr que ce sont des erreurs? Cela ressemble plus à un fichier journal pour moi. Il demande même d'écraser le mp4 précédent: le fichier 'out.mp4' existe déjà. Écraser? [y / N] y
Conrad Lotz
Question similaire dans SuperUser.
legends2k

Réponses:

254

La commande pour simplement le diffuser dans un nouveau conteneur (mp4) nécessaire à certaines applications comme Adobe Premiere Pro sans encodage (rapide) est:

ffmpeg -i movie.mov -vcodec copy -acodec copy out.mp4

Alternative comme mentionné dans les commentaires, qui réencode avec la meilleure qualité ( -qscale 0):

ffmpeg -i input.mov -q:v 0 output.mp4
Conrad Lotz
la source
70
Comme cela apparaît dans les résultats de la recherche, j'ajouterai la commande mise à jour pour le ffmpeg dès l'écriture: ffmpeg -i input.mov -qscale 0 output.mp4
StudioEvoque
14
@StudioEvoque que fait le -qscale 0drapeau?
CyberSkull
4
@CyberSkull -qscaledéfinit le niveau de compression. Plus la valeur qscale est basse, meilleure est la qualité. Les valeurs disponibles de qscale vont de 1 (qualité la plus élevée) à 31 (qualité la plus basse).
RonnyKnoxville
8
@MiguelBartelsman @Baodad un conteneur regroupe plusieurs flux vidéo et audio, ajoute un en-tête et une table des matières. Les conteneurs Quicktime (mov) et MPEG (mp4) fonctionnent très différemment, techniquement. Si vous renommez simplement un fichier Quicktime en mp4, vous prétendez qu'il s'agit d'une vidéo MPEG, mais cela reste un conteneur Quicktime. Remarque: puisque vous utilisez le copyparamètre pour le codec, vous indiquez à FFMpeg de copier les données multimédia réelles, sans aucun recodage dans un autre codec.
Ichthyo
10
@StudioEvoque attention! Ce que vous proposez ici est quelque chose de très différent de ce que le PO a fait et a probablement voulu. Vous ne donnez pas de spécification de codec, vous demandez donc à FFMpeg de transcoder les données multimédias réelles dans le codec standard associé au conteneur MP4. Même si vous utilisez les paramètres de qualité les plus élevés, le transcodage perdra toujours une certaine qualité. Ce n'est que lorsque vous utilisez que -c copyvous vous assurez que les données multimédia d'origine en tant que telles ne sont pas touchées, seul le conteneur a changé
Ichthyo