Неправильная продолжительность в потоке MediaRecorder на iOS

#ios #mp4 #webcam #mediarecorder #getusermedia

Вопрос:

Я пытаюсь использовать несколько файлов с помощью ffmpeg, и у меня возникли проблемы с продолжительностью файлов, созданных с помощью устройств iOS.

Я записываю видео через веб — камеру устройства с помощью:

 mediaRecorder.current = new MediaRecorder(videoPlayer.current.srcObject);
mediaRecorder.current.start();
mediaRecorder.current.ondataavailable = (e) => {
  setVideoCreatedData(e.data);
};
 

Затем я загружаю файл на свой компьютер и проверяю метаданные с помощью https://www.metadata2go.com/ и это результат:
Метаданные

Как вы можете видеть, продолжительность составляет 0 секунд.

Я хочу затем использовать этот файл с ffmpeg, однако он не определяет продолжительность, и поэтому у меня возникают проблемы.

Как я должен записать видео, чтобы получить надлежащую продолжительность метаданных файла?

Комментарии:

1. Вы работаете с так называемыми фрагментированными данными mp4. Он генерируется в режиме реального времени, поэтому его продолжительность (которая начинается в начале потока данных) неизвестна, следовательно, равна нулю. ffmpeg определенно справится с этим.

2. Спасибо за ваш комментарий. Проблема, с которой я столкнулся, заключается в том, что я соединяю несколько видео через ffmpeg, и видео, созданное с помощью устройств iOS, обрабатывается, но затем оно отображается в виде неподвижного кадра на выходном видео, созданном ffmpeg. Другие видео, записанные через Mac или Windows, отлично работают.

3. Кроме того, когда я выполняю ffprobe для файла, я получаю длительность 0,633333. bit_rate:2244291 duration:0.633333 filename:'https://s3.amazonaws.com/example.webm' format_long_name:'QuickTime / MOV' format_name:'mov,mp4,m4a,3gp,3g2,mj2' nb_programs:0 nb_streams:2 probe_score:100 size:177673 start_time:0