Convertir mkv en mp4 avec ffmpeg

10

Lorsque j'essaie de convertir mkv en mp4 en utilisant 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 a 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 sur ffmpeg, je ne suis pas sûr de savoir ce que signifie l’erreur ou comment la corriger.

Merci!

    
posée JohnS 04.07.2012 - 22:47
la source

6 réponses

16

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 pour avconv , car c'était le fork utilisé par Ubuntu pendant quelques années (voir les commentaires)
  • Avez-vous vraiment besoin de -absf aac_adtstoasc ? Il y avait des problèmes qui pourraient ne pas avoir été corrigés dans le fichier ffmpeg d'Ubuntu actuel. Je vous suggère d'essayer sans elle avant.
  • -vcodec copy -acodec copy peut être simplement -codec copy ou -c copy . Cela empêcherait également d’altérer d’autres flux que la vidéo et l’audio, comme les sous-titres.

Le gagnant est donc ...

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

Si cela ne fonctionne pas, merci de publier toutes les sorties du terminal.

    
réponse donnée MestreLion 02.10.2012 - 02:51
la source
2

Je sais que c'est un très vieux thread, 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 commencera à fonctionner.

Mais dans mon cas, je convertis un fichier .mkv en fichier .mp4, le résultat est simplement une corbeille. Cela réduit la précision des images.

    
réponse donnée Im'juz ChanYun 31.08.2013 - 18:18
la source
0

Il y a déjà une réponse à propos de cet Comment convertir. fichier mkv dans le fichier .mp4 sans perte?

le concept de base est que les MKV et MP4 sont des conteneurs, ce ne sont que des conteneurs, vous devez essentiellement déballer et réemballer les pistes audio et vidéo si vous souhaitez basculer entre les deux.

    
réponse donnée user827992 04.07.2012 - 23:06
la source
0

Vous l'avez obtenu sur Xubuntu 14.04 lorsque vous tentez de graver un DVD de MP4 à l'aide de DVDStyler; Bombono produit la même erreur. ffmpeg # 1154 suggère que cela pourrait avoir été corrigé dans ffmpeg , mais peut-être pas dans avconv ? libav # 478 est toujours ouvert.

Voir aussi: lien

J'ai envoyé Launchpad # 1339980 ; en résumé, utilisez une version actuelle de ffmpeg et non de avconv .

    
réponse donnée Jesse Glick 10.07.2014 - 04:53
la source
0

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

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

Cette commande effectue les étapes suivantes:

  • Boucle récursivement 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
réponse donnée Guido Bouman 12.11.2017 - 18:29
la source
0

Essayez celui-ci :: Libav sous Linux

Installation: exécuter la commande

sudo apt-get install libav-tools

Commande de conversion vidéo :: Go to folder contient la vidéo et s'exécute dans le terminal

avconv -i oldvideo.mkv -ar 22050 convertedvideo.mp4
    
réponse donnée Vishal 26.07.2018 - 03:27
la source

Lire d'autres questions sur les étiquettes