Что лучший инструмент должен преобразовать общие форматы видео в FLV на [закрытом] CLI Linux

Многие люди отмечают, что «объекты нельзя сортировать», но после этого они дают вам решение, которое работает. Парадокс, не так ли?

Никто не упоминает, почему эти решения работают. Они есть, потому что в большинстве реализаций браузера значения в объектах хранятся в том порядке, в котором они были добавлены. Поэтому, если вы создаете новый объект из отсортированного списка ключей, он возвращает ожидаемый результат.

И я думаю, что мы могли бы добавить еще одно решение - функциональный способ ES5:

function sortObject(obj) {
    return Object.keys(obj).sort().reduce(function (result, key) {
        result[key] = obj[key];
        return result;
    }, {});
}

Версия ES2015 выше (отформатирована на «однострочный»):

function sortObject(o) {
    return Object.keys(o).sort().reduce((r, k) => (r[k] = o[k], r), {});
}

Краткое объяснение приведенных выше примеров (как указано в комментариях):

Object.keys дает нам список ключей в предоставленном объекте (obj или o), то мы сортируем тех, кто использует алгоритм сортировки по умолчанию, следующий .reduce используется для преобразования этого массива обратно в объект, но на этот раз со всеми ключами отсортированы.

11
задан Thomas R 18 September 2008 в 22:48
поделиться

2 ответа

Flash может играть следующие форматы:

FLV with AAC or MP3 audio, and FLV1 (Sorenson Spark H.263), VP6, or H.264 video.
MP4 with AAC or MP3 audio, and H.264 video (mp4s must be hinted with qt-faststart or mp4box).

ffmpeg является полной хорошей утилитой преобразования; работы mencoder лучше с неясными и собственными форматами (из-за w32codecs пакета двоичного декодера), но его мультиплексирование являются довольно субоптимальными (чтение: часто полностью поврежденный). Одно решение могло бы состоять в том, чтобы закодировать H.264 x264 через mencoder и затем мультиплексировать отдельно с mp4box.

Как разработчик x264 (и энергичный пользователь флэш-памяти для воспроизведения онлайн-видео), у меня было довольно мало опыта в этом виде материала, поэтому если Вы хотите больше помощи, я также доступен на IRC Freenode на #x264, #ffmpeg, и #mplayer.

15
ответ дан 3 December 2019 в 07:14
поделиться

Большинство кодеров, по умолчанию (ffmpeg включенный) помещает атом заголовка mp4 ("moov атом") в конце видео, так как они не могут поместить заголовок, пока они не сделаны, кодируя. Однако для файла для запуска воспроизведения перед его сделанной загрузкой moov атом должен быть перемещен в переднюю сторону.

Чтобы сделать это, у Вас есть к (ре) мультиплексор с помощью mp4box (который делает это по умолчанию), или используйте qt-faststart, сценарий для ffmpeg, который просто перемещает атом в переднюю сторону. Его довольно простое.

Обратите внимание, что для FLV, по умолчанию, ffmpeg будет использовать формат видео FLV1, который довольно ужасен; более чем десятилетие, старое этой точкой и ее эффективностью, является довольно ужасными данными современными стандартами. Вы - очень более обеспеченное использование более современного формата как H.264.

2
ответ дан 3 December 2019 в 07:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: