ffmpeg: Support copying unknown streams
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
33e9473366
commit
18833daf9d
1
ffmpeg.c
1
ffmpeg.c
@ -2822,6 +2822,7 @@ static int transcode_init(void)
|
||||
enc_ctx->width = dec_ctx->width;
|
||||
enc_ctx->height = dec_ctx->height;
|
||||
break;
|
||||
case AVMEDIA_TYPE_UNKNOWN:
|
||||
case AVMEDIA_TYPE_DATA:
|
||||
case AVMEDIA_TYPE_ATTACHMENT:
|
||||
break;
|
||||
|
24
ffmpeg_opt.c
24
ffmpeg_opt.c
@ -112,6 +112,7 @@ static int input_sync;
|
||||
static int override_ffserver = 0;
|
||||
static int input_stream_potentially_available = 0;
|
||||
static int ignore_unknown_streams = 0;
|
||||
static int copy_unknown_streams = 0;
|
||||
|
||||
static void uninit_options(OptionsContext *o)
|
||||
{
|
||||
@ -1566,6 +1567,19 @@ static OutputStream *new_data_stream(OptionsContext *o, AVFormatContext *oc, int
|
||||
return ost;
|
||||
}
|
||||
|
||||
static OutputStream *new_unknown_stream(OptionsContext *o, AVFormatContext *oc, int source_index)
|
||||
{
|
||||
OutputStream *ost;
|
||||
|
||||
ost = new_output_stream(o, oc, AVMEDIA_TYPE_UNKNOWN, source_index);
|
||||
if (!ost->stream_copy) {
|
||||
av_log(NULL, AV_LOG_FATAL, "Unknown stream encoding not supported yet (only streamcopy)\n");
|
||||
exit_program(1);
|
||||
}
|
||||
|
||||
return ost;
|
||||
}
|
||||
|
||||
static OutputStream *new_attachment_stream(OptionsContext *o, AVFormatContext *oc, int source_index)
|
||||
{
|
||||
OutputStream *ost = new_output_stream(o, oc, AVMEDIA_TYPE_ATTACHMENT, source_index);
|
||||
@ -2018,6 +2032,11 @@ loop_end:
|
||||
case AVMEDIA_TYPE_SUBTITLE: ost = new_subtitle_stream (o, oc, src_idx); break;
|
||||
case AVMEDIA_TYPE_DATA: ost = new_data_stream (o, oc, src_idx); break;
|
||||
case AVMEDIA_TYPE_ATTACHMENT: ost = new_attachment_stream(o, oc, src_idx); break;
|
||||
case AVMEDIA_TYPE_UNKNOWN:
|
||||
if (copy_unknown_streams) {
|
||||
ost = new_unknown_stream (o, oc, src_idx);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
av_log(NULL, ignore_unknown_streams ? AV_LOG_WARNING : AV_LOG_FATAL,
|
||||
"Cannot map stream #%d:%d - unsupported type.\n",
|
||||
@ -2025,7 +2044,8 @@ loop_end:
|
||||
if (!ignore_unknown_streams) {
|
||||
av_log(NULL, AV_LOG_FATAL,
|
||||
"If you want unsupported types ignored instead "
|
||||
"of failing, please use the -ignore_unknown option\n");
|
||||
"of failing, please use the -ignore_unknown option\n"
|
||||
"If you want them copied, please use -copy_unknown\n");
|
||||
exit_program(1);
|
||||
}
|
||||
}
|
||||
@ -2864,6 +2884,8 @@ const OptionDef options[] = {
|
||||
"never overwrite output files" },
|
||||
{ "ignore_unknown", OPT_BOOL, { &ignore_unknown_streams },
|
||||
"Ignore unknown stream types" },
|
||||
{ "copy_unknown", OPT_BOOL | OPT_EXPERT, { ©_unknown_streams },
|
||||
"Copy unknown stream types" },
|
||||
{ "c", HAS_ARG | OPT_STRING | OPT_SPEC |
|
||||
OPT_INPUT | OPT_OUTPUT, { .off = OFFSET(codec_names) },
|
||||
"codec name", "codec" },
|
||||
|
Loading…
x
Reference in New Issue
Block a user