J'ai essayé de supprimer les flux audio inutiles d'un fichier MKV (Matroska). La raison pour laquelle je veux le faire est d'éviter d'avoir à sélectionner manuellement le flux souhaité dans Windows Media Player.
Le fichier d'entrée donne les informations ffmpeg suivantes:
Stream #0.0: Video: mpeg4, yuv420p, 704x396 [PAR 1:1 DAR 16:9], 29.98 tbr, 1k tbn, 29.98 tbc
Stream #0.1(eng): Audio: aac, 24000 Hz, 5.1, s16
Stream #0.2(jpn): Audio: aac, 24000 Hz, 5.1, s16
Stream #0.3(eng): Subtitle: 0x0000
Stream #0.4(eng): Subtitle: 0x0000
Stream #0.5: Attachment: 0x0000
Stream #0.6: Attachment: 0x0000
Puisque je veux les streams 0, 1 et 3 (sub), ma commande ffmpeg ressemble à ceci:
ffmpeg -i input.mkv -map 0:0 -map 0:1 -map 0:3 -vcodec copy -acodec libmp3lame -newsubtitle test.mkv
ce qui donne étrangement l'erreur:
At least one output file must be specified
Suppression des sous-titres:
ffmpeg -i input.mkv -map 0:0 -map 0:1 -vcodec copy -acodec libmp3lame test.mkv
me donne ceci:
Number of stream maps must match number of output streams
Il semble que je ne comprenne pas vraiment comment fonctionne l'option "carte". Quelqu'un pourrait-il m'aider à le comprendre?
--atracks
option n'existe plus, à la place on devrait utiliser soit--audio-tracks
ou--video-tracks
.Essayez
-f
de forcer le format spécifié:la source
Il y a vraiment deux problèmes distincts ici:
Dans la première ligne de commande, l'ordre des paramètres peut être incorrect. Je pense que le
-newaudio
commutateur doit être à la fin, après le nom du fichier de sortie.La deuxième ligne de commande, "Suppression des sous-titres", puisque le fichier d'entrée a des sous-titres, vous devez utiliser le
-sn
commutateur pour les supprimer. Sinon, il semble que FFmpeg veuille au moins un spécifié dans la-map
liste.la source
Dans votre première commande, vous n'avez pas spécifié que test.mkv était votre fichier de sortie. On dirait que vous devez changer cette partie pour qu'elle ressemble à quelque chose
... -c copy test.mkv
ou spécifier le codec comme... -c:s copy test.mkv
.Et je ne sais pas ce que fait ce
-newsubtitle
drapeau là-dedans. Mais si vous souhaitez ajouter un fichier de sous-titres, vous devriez pouvoir faire un autre indicateur d'entrée-i input.srt
. Regarde ça lien pour cela.Dans votre deuxième commande, je pense qu'il semble que vous essayez de mapper le flux vidéo et de le copier. Donc, vous voudrez peut-être essayer de supprimer l'
-vcodec copy
instruction et cela devrait simplement fonctionner. :)la source
l
spécificateur de flux .