Die Frage Remux zu MKV, aber alle Streams mit FFmpeg hinzufügen erklärt, wie alle Streams zu einer MKV-Datei gemuxt werden.
Dies schlägt jedoch fehl, wenn ein Stream von FFMPEG nicht unterstützt wurde.
Verwenden Sie zum Beispiel den Befehl für eine AVI-Datei mit 2 Videostreams und einem Untertitel-Stream:
ffmpeg -y -i filename.avi -map 0 -c copy filename.mkv
Geben Sie die folgende Ausgabe aus:
ffmpeg version 2.3.1 Copyright (c) 2000-2014 the FFmpeg developers
built on Aug 6 2014 13:32:20 with gcc 4.4.3 (Ubuntu 4.4.3-4ubuntu5.1)
configuration: --enable-static --disable-shared --disable-asm --disable-doc --disable-devices --disable-network --disable-bsfs --disable-protocols --enable-protocol=file --disable-filters --disable-yasm --enable-pic --disable-iconv
libavutil 52. 92.100 / 52. 92.100
libavcodec 55. 69.100 / 55. 69.100
libavformat 55. 48.100 / 55. 48.100
libavdevice 55. 13.102 / 55. 13.102
libavfilter 4. 11.100 / 4. 11.100
libswscale 2. 6.100 / 2. 6.100
libswresample 0. 19.100 / 0. 19.100
[avi @ 0x2dd8760] non-interleaved AVI
[avi @ 0x2dd8760] Could not find codec parameters for stream 2 (Unknown: none): unknown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options
Input #0, avi, from 'filename.avi':
Duration: 00:01:01.00, start: 0.000000, bitrate: 4285 kb/s
Stream #0:0: Video: h264 (Constrained Baseline) (H264 / 0x34363248), yuv420p, 720x576, 2140 kb/s, 25.52 fps, 25.50 tbr, 25.52 tbn, 50 tbc
Metadata:
title : sim0_video_H264_0_
Stream #0:1: Video: h264 (Constrained Baseline) (H264 / 0x34363248), yuv420p, 720x576, 2140 kb/s, 25.52 fps, 25.50 tbr, 25.52 tbn, 50 tbc
Metadata:
title : sim2_video_H264_0_
Stream #0:2: Unknown: none
Cannot map stream #0:2 - unsupported type.
Gibt es eine Möglichkeit, nicht unterstützte Streams zu ignorieren?
Antworten:
Das Debuggen von ffmpeg zeigt, dass die AVI-Datei einen Untertitel-Stream enthält, der einen leeren Header im AVI-Stream-Format hat.
In einer solchen Situation setzt die Methode avi_read_header nicht st-> codec-> codec_type
Weiter open_output_file druckt das Protokoll und beendet es ohne Bedingung.
Wenn Sie eine AVI-Datei mit einem leeren Stream-Format-Header unterstützen, müssen Sie ffmpeg ändern.
quelle