Comments 5
В случае с movflags=faststart
ffmpeg бокс moov
записывает в самом конце записи, так же как и в случае без этого флага (внутри этого бокса находится информация о том, где именно находится каждый кадр видео и аудио и какую длительность имеет каждый кадр - соответственно, даже размер самого moov неизвестен до тех пор, пока запись не завершена). В случае с faststart перед записью moov
все записанные данные еще будут "подвинуты" в файле на размер этого самого moov
, т.е. файл будет еще раз прочитан и перезаписан целиком.
Если под "внезапной остановкой" понимается "нажать q в ffmpeg" или что-то похожее в OBS, то moov
будет штатно записан в обоих случаях. Если же понимать что-то более серьезное, то moov
не будет в обоих случаях, и файл будет невозможно проиграть. faststart хорош тем, что если уже потом, после записи, файл удалось прочитать или скачать частично, то имеющаяся часть будет работать нормально.
Фрагментированный режим работы сохраняет метаданные дорожек (кроме длительности) сразу в moov
, а данные и метаданные кадров сохраняет небольшими кусками, что действительно позволяет сохранить большую часть данных даже при аварийном завершении работы.
В случае с movflags=faststart
ffmpeg бокс moov
записывает в самом конце записи, так же как и в случае без этого флага (внутри этого бокса находится информация о том, где именно находится каждый кадр видео и аудио и какую длительность имеет каждый кадр - соответственно, даже размер самого moov неизвестен до тех пор, пока запись не завершена). В случае с faststart перед записью moov
все записанные данные еще будут "подвинуты" в файле на размер этого самого moov
, т.е. файл будет еще раз прочитан и перезаписан целиком.
Если под "внезапной остановкой" понимается "нажать q в ffmpeg" или что-то похожее в OBS, то moov
будет штатно записан в обоих случаях. Если же понимать что-то более серьезное, то moov
не будет в обоих случаях, и файл будет невозможно проиграть. faststart хорош тем, что если уже потом, после записи, файл удалось прочитать или скачать частично, то имеющаяся часть будет работать нормально.
Фрагментированный режим работы сохраняет метаданные дорожек (кроме длительности) сразу в moov
, а данные и метаданные кадров сохраняет небольшими кусками, что действительно позволяет сохранить большую часть данных даже при аварийном завершении работы.
Для mp4
/ m4v
/ mov
/ 3gp
и m4a
есть две утилиты (точнее, одна и её форк, который вполне можно считать отдельной):
Для использования утилит необходимо иметь повреждённое видео (с телефона/коптера/другого видеорекордера), а также неповреждённое видео с того же аппарата, записанное с такими же настройками и, крайне желательно, такой же длительности.
В случае соблюдения упомянутых условий, восстанавливаемость видео (стоит попробовать обеими утилитами) достигала 100%, т.е. мне удавалось починить все mp4
видео (в других форматах не пробовал), запись которых была прервана из-за зависания рекордера/креша коптера/других аппаратных проблем.
Рис. 32 Структура фрагментированного MP4 файлаИнтересно, а что это за программа-браузер?
Предотвращение крашей в медиаконтейнерах