Файл mpux Remux, содержащий поток данных

Я занимаюсь разработкой приложения, которому необходимо клонировать видеофайл MP4 со всеми потоками с помощью FFmpeg C++ API и успешно заставить его работать, основываясь на примере ремуксинга FFmpeg.

Это прекрасно работает для видео и аудио потоков, но когда видео включает в себя поток данных (на самом деле это временной код QuickTime согласно MediaInfo), я получаю эту ошибку.

Output #0, mp4, to 'C:\Users\user\Desktop\shortOut.mp4':
    Stream #0:0: Video: hevc (Main 10) (hev1 / 0x31766568), yuv420p10le(tv,progressive), 3840x2160 [SAR 1:1 DAR 16:9], q=2-31, 1208 kb/s
    Stream #0:1: Audio: mp3 (mp4a / 0x6134706D), 48000 Hz, stereo, s16p, 32s
    Stream #0:2: Data: none (tmcd / 0x64636D74), 0 kb/s
[mp4 @ 0000000071edf600] Could not find tag for codec none in stream #2, codec not currently supported in container

Я обнаружил, что это происходит в звонке avformat_write_header(),

Имеет смысл, что если FFmpeg не знает кодек, он не может записать в заголовок об этом, но я обнаружил, что с помощью командной строки ffmpeg я могу заставить его работать идеально, используя команду copy для потока, что-то вроде:

ffmpeg -i input.mp4 -c:v copy -c:a copy -c:a copy output.mp4

Я анализировал реализацию ffmpeg.c, чтобы понять, как они выполняют потоковое копирование, но было очень больно следить за огромным конвейером.

Что было бы правильным способом для смешивания потока данных этого типа с FFmpeg C++ API? Любой совет или указатели?

0 ответов

Другие вопросы по тегам