Pull to refresh

Comments 5

PinnedPinned comments

В случае с 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 видео (в других форматах не пробовал), запись которых была прервана из-за зависания рекордера/креша коптера/других аппаратных проблем.

Как я понимаю, наиболее устойчивый к повреждениям контейнер — это ts, в котором вещают цифровое телевидение и twitch. Там можно с любого места смотреть. Но вот операция seek подтормаживает на большом файле, хотя и приемлемо для практического использования. Смена контейнера ts↔mp4 возможна без перекодировки, копированием потоков.
Рис. 32 Структура фрагментированного MP4 файла
Интересно, а что это за программа-браузер?
Sign up to leave a comment.

Articles