Файл mpux Remux, содержащий поток данных - PullRequest
0 голосов
/ 13 сентября 2018

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

Это прекрасно работает для видео и аудио потоков, но когда видео включает в себя поток данных (на самом деле это временной код 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? Любой совет или указатели?

...