web-dev-qa-db-fra.com

Conversion de mkv en mp4 avec ffmpeg

Lorsque j'essaie de convertir mkv en mp4 à l'aide de ffmpeg, l'erreur suivante se produit:

version 0.8.3-4:0.8.3-0ubuntu0.12.04.1, Copyright (c) 2000-2012 the Libav developers   built on Jun 12 2012 16:52:09 with gcc 4.6.3  
 *** THIS PROGRAM IS DEPRECATED ***   This program is only provided for compatibility and will be removed in a future release. Please use
 avconv instead.   [matroska,webm @ 0x1e939c0] max_analyze_duration
 reached   [matroska,webm @ 0x1e939c0] Estimating duration from
 bitrate, this may be inaccurate   Input #0, matroska,webm, from
 'input.mkv':     Duration: 00:01:00.76, start: 0.000000, bitrate: 384
 kb/s  
     Stream #0.0(eng): Video: h264 (High), yuv420p, 1280x544, PAR 1:1 DAR 40:17, 25 fps, 25 tbr, 1k tbn, 50 tbc (default)  
     Stream #0.1(eng): Audio: ac3, 48000 Hz, 5.1, s16, 384 kb/s (default)  
     Stream #0.2(eng): Subtitle: [0][0][0][0] / 0x0000   Output #0, iPod, to 'output.m4v':     Metadata:  
     encoder         : Lavf53.21.0  
     Stream #0.0(eng): Video: libx264, yuv420p, 1280x544 [PAR 1:1 DAR 40:17], q=2-31, 25 tbn, 25 tbc (default)  
     Stream #0.1(eng): Audio: ac3, 48000 Hz, 5.1, 384 kb/s (default)   Stream mapping:     Stream #0.0 -> #0.0     Stream #0.1 -> #0.1  
 Press ctrl-c to stop encoding   [iPod @ 0x1e9b740] Application
 provided invalid, non monotonically increasing dts to muxer in stream
 0: -2 >= -2 av_interleaved_write_frame(): Invalid argument

J'ai utilisé cette commande pour convertir le fichier:

ffmpeg -i input.mkv -vcodec copy -acodec copy -absf aac_adtstoasc output.m4v

Le fichier d'entrée présente les caractéristiques suivantes:

mediainfo input.mkv 


>General
>
>Unique ID                                : 200459305952356554213392832683163418790 (0x96CF0ED8DB5914CBB9E18163689280A6)  
>Complete name                            : input.mkv  
>Format                                   : Matroska  
>Format version                           : Version 2  
>File size                                : 1.46 GiB  
>Duration                                 : 1h 5mn  
>Overall bit rate                         : 3 168 Kbps  
>Encoded date                             : UTC 2010-09-26 21:44:02  
>Writing application                      : mkvmerge v2.9.5 ('Tu es le seul') built on >Jun 17 2009 16:28:30  
>Writing library                          : libebml v0.7.8 + libmatroska v0.8.1  
>
>Video
>ID                                       : 1  
>Format                                   : AVC  
>Format/Info                              : Advanced Video Codec  
>Format profile                           : [email protected]  
>Format settings, CABAC                   : Yes  
>Format settings, ReFrames                : 4 frames  
>Codec ID                                 : V_MPEG4/ISO/AVC  
>Duration                                 : 1h 5mn  
>Bit rate                                 : 2 910 Kbps  
>Width                                    : 1 280 pixels  
>Height                                   : 720 pixels  
>Display aspect ratio                     : 16:9  
>Frame rate                               : 25.000 fps  
>Color space                              : YUV  
>Chroma subsampling                       : 4:2:0  
>Bit depth                                : 8 bits  
>Scan type                                : Progressive  
>Bits/(Pixel*Frame)                       : 0.126  
>Stream size                              : 1.31 GiB (90%)  
>Writing library                          : x264 core 105 r1724 b02df7b  
>Encoding settings                        : cabac=1 / ref=3 / deblock=1:0:0 / analyse=0x3:0x113 / me=hex / subme=6 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=0 / me_range=16 / chroma_me=1 / trellis=1 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=0 / chroma_qp_offset=-2 / threads=18 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / constrained_intra=0 / bframes=3 / b_pyramid=2 / b_adapt=1 / b_bias=0 / direct=3 / weightb=1 / open_gop=0 / weightp=0 / keyint=250 / keyint_min=25 / scenecut=40 / intra_refresh=0 / rc=2pass / mbtree=0 / bitrate=2910 / ratetol=1.0 / qcomp=0.60 / qpmin=10 / qpmax=51 / qpstep=4 / cplxblur=20.0 / qblur=0.5 / ip_ratio=1.40 / pb_ratio=1.30 / aq=1:1.00  
>
>Default                                  : Yes  
>Forced                                   : No  
>
>Audio
>ID                                       : 2  
>Format                                   : AC-3  
>Format/Info                              : Audio Coding 3  
>Mode extension                           : CM (complete main)  
>Codec ID                                 : A_AC3  
>Duration                                 : 1h 5mn  
>Bit rate mode                            : Constant  
>Bit rate                                 : 256 Kbps  
>Channel(s)                               : 2 channels  
>Channel positions                        : Front: L R  
>Sampling rate                            : 48.0 KHz  
>Bit depth                                : 16 bits  
>Compression mode                         : Lossy  
Stream size                              : 121 MiB (8%)  
Language                                 : English  
Default                                  : Yes  
Forced                                   : No  

Étant nouveau pour ffmpeg, je ne suis pas sûr de la signification de l'erreur ni de la façon de la corriger.

Merci!

12
JohnS

Comme j'ai déjà écrit ici , je vous suggère de modifier quelques détails dans votre ligne de commande:

  • Si vous utilisez une version d'Ubuntu antérieure à 15.04, remplacez ffmpeg par avconv, car il s'agissait de la fourche utilisée par Ubuntu pendant quelques années (voir les commentaires).
  • Avez-vous vraiment besoin de -absf aac_adtstoasc? Il avait quelques problèmes qui n'ont peut-être pas été corrigés dans le ffmpeg actuel d'Ubuntu. Je vous suggère d'essayer sans elle en premier.
  • -vcodec copy -acodec copy peut être simplifié en -codec copy ou -c copy. Cela éviterait également d'altérer d'autres flux que la vidéo et l'audio, comme les sous-titres.

Donc le gagnant est ...

ffmpeg -i input.mkv -c copy output.m4v

Si cela ne fonctionne pas, veuillez poster toutes les sorties du terminal.

18
MestreLion

Je sais que c'est un très vieux sujet, mais j'ai trouvé une solution pour exécuter avec succès ffmpeg. N'utilisez pas -vcodec copy -acodec copy, utilisez simplement ffmpeg -i input.mkv output.m4v à la place. Il va commencer à courir.

Mais dans mon cas, je convertis un .mkv en .mp4, le résultat obtenu n’est que de la corbeille. Il perd la précision des images.

3
Im'juz ChanYun

Pour convertir automatiquement tous les fichiers d'un dossier de MKV en MP4, vous pouvez créer un alias:

alias mkv2mp4="for f in ./**/*.mkv; do ffmpeg -n -i \"\$f\" -c copy \"\${f%.mkv}.mp4\" && rm \"\$f\"; done"

Cette commande effectue les étapes suivantes:

  • Boucle récursive dans le répertoire en cours à la recherche de fichiers .mkv
  • Convertit chaque fichier en .mp4 sans écraser les fichiers existants
  • Supprime le fichier source lorsque la conversion a réussi
2
Guido Bouman

Ceci a été obtenu avec Xubuntu 14.04 lorsque vous essayez de graver un DVD de MP4 avec DVDStyler; Bombono produit la même erreur. ffmpeg # 1154 suggère que cela aurait pu être corrigé dans ffmpeg, mais peut-être pas dans avconv? libav # 478 est toujours marqué ouvert.

Voir aussi: https://unix.stackexchange.com/questions/127522/avconv-error-av-interleaved-write-frame

J'ai déposé Launchpad # 133998 ; En résumé, utilisez une version actuelle de ffmpeg et non pas avconv.

0
Jesse Glick

Essayez celui-ci :: Libav sous Linux

Installation: commande d'exécution

Sudo apt-get install libav-tools

Commande de conversion vidéo :: Aller au dossier contient la vidéo et exécuté dans le terminal

avconv -i oldvideo.mkv -ar 22050 convertedvideo.mp4
0
Vishal

il y a déjà une réponse à ce sujet Comment convertir un fichier .mkv en fichier .mp4 sans perte?

le concept de base est que MKV et MP4 sont des conteneurs, ils ne sont que des conteneurs. Vous devez en principe décompresser et reconditionner les pistes audio et vidéo si vous souhaitez basculer entre les deux.

0
user827992