Все сервисы Хабра

Сообщество IT-специалистов

Ответы на любые вопросы об IT

Профессиональное развитие в IT

Удаленная работа для IT-специалистов

Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

Узнать больше
другие проекты хабра
  • Хабр
  • Карьера
  • Фриланс
Задать вопрос

rusrich

  • 0
    вклад
  • 48
    вопросов
  • 10
    ответов
  • 50%
    решений
Лайки
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • В какой программе удобно нарезать видео на фрагменты?

    sergiks
    Сергей Соколов @sergiks
    ♬♬
    ffmpeg

    разрезать можно и без перекодирования, это много быстрее:
    ffmpeg \
      -ss 15 \
      -i input.mp4 \
      -t 75 \
      -c copy \
      output_15_90.mp4
    пропустить 15 секунд от начала, взять фрагмент длиной 75 сек, сохранить без перекодирования в файл output_15_90.mp4

    Для нескольких фрагментов надо будет написать bash-скриптик (или на какой там платформе дело происходит?)

    Можно добавить и уменьшение и пережатие:
    ffmpeg \
      -ss 15 \
      -i input.mp4 \
      -vf scale=854:-2 \
      -t 75 \
      -c:v libx264 \
      -c:a aac \
      output_15_90.mp4
    сделать ширину кадра 854 точки, высоту пропорционально но кратно 2 (требование кодека), видео сжать софтверным h264, аудио кодеком AAC.
    Видео сжатие можно и ускорить с GPU если поддерживается - напр. на Маке это вместо libx264 — h264_videotoolbox
    Ответ написан 04 сент. 2022
    1 комментарий
    1 комментарий
  • При смене версии NodeJS через nvm появляется ошибка exit status 1. Что это значит?

    Joonk @Joonk
    Там будет написано доступ запрещен. Необходимо програму перезапустить через администратора
    Ответ написан 05 апр. 2022
    1 комментарий
    1 комментарий
  • Как подключиться и работать с данными в используемой базе Postgresql от проект ROR, используя Python и Django?

    sergey-gornostaev
    Сергей Горностаев @sergey-gornostaev Куратор тега Django
    Седой и строгий
    https://docs.djangoproject.com/en/3.2/howto/legacy...
    Ответ написан более года назад
    1 комментарий
    1 комментарий
  • Как получить прямой путь до файла, загруженный через Active Storage?

    bakeevDR @bakeevDR
    При чем fTXr7uMF7geiFtrS2HcxNhJE - это сам файл без расширения.
    /fT/Xr/ - эти директории генерируются рандомом.


    Директории не генерируются рандомно а берутся с названия файла по первым 4 символам , название файла можно взять из базы.
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Чем можно кэшировать файлы на сервере помимо nginx?

    paran0id
    paran0id @paran0id
    Умный, но ленивый
    varnish
    Ответ написан более двух лет назад
    1 комментарий
    1 комментарий
  • Как модифицировать код в VUE, чтобы связанные списки через v-model отображали параметр сразу?

    0xD34F
    0xD34F @0xD34F Куратор тега Vue.js
    created() {
      this.chooseChild = Object.values(this.parent)[0];
      this.chooseS = Object.values(this.chooseChild)[0];
      this.showinfo = Object.values(this.chooseS)[0];
    },

    UPD. А вообще, я бы всё переписал. Хочу, чтобы можно было строить цепочки select'ов произвольной длины.

    Вместо отдельных свойств, отвечающих за текущие значения select'ов cделаем массив:

    data: () => ({
      selectedValues: [],
      ...

    Сделаем вычисляемое свойство, представляющее массивы опций для select'ов и конечное значение. Идём вглубь объекта с данными, используя в качестве ключей выбранные значения:

    computed: {
      selectData() {
        const options = [];
        let { items } = this;
    
        while (items instanceof Object) {
          options.push(Object.keys(items));
          items = items[this.selectedValues[options.length - 1]];
        }
    
        return {
          options,
          result: items || null,
        };
      },
    },

    Создадим select'ы и отобразим конечное значение:

    <div>
      <select
        v-for="(options, i) in selectData.options"
        v-model="selectedValues[i]"
        @input="selectedValues.length = i"
      >
        <option v-for="n in options">{{ n }}</option>
      </select>
    </div>
    <div>SELECTED: <b>{{ selectData.result || '&lt; NONE &gt;' }}</b></div>

    Чтобы сразу выставить какое-то конечное значение, будем идти вглубь объекта с данными, насколько возможно, всегда выбирая нулевой ключ и помещая его в массив выбранных значений:

    created() {
      let { items } = this;
      while (items instanceof Object) {
        const key = Object.keys(items)[0];
        this.selectedValues.push(key);
        items = items[key];
      }
    },

    https://jsfiddle.net/64m37ng0/
    Ответ написан более трёх лет назад
    11 комментариев
    11 комментариев
  • Как сделать страницы сайта вставленные через iframe доступными, а по прямой ссылке на самом сайте - недоступные?

    ordinarySomebody
    Александр @ordinarySomebody
    Senior web-balabol
    На JS
    if (top === self) window.location="/";

    А для поисковиков на этих страницах можно использовать
    <meta name="robots" content="noindex" />
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как сделать страницы сайта вставленные через iframe доступными, а по прямой ссылке на самом сайте - недоступные?

    lazalu68
    Kovalsky @lazalu68
    Salmon
    Изучите механизм работы заголовка:
    config.action_dispatch.default_headers = {
        'X-Frame-Options' => 'ALLOWALL'
    }
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Сколько стоит Intel® Cache Acceleration for Linux?

    Moskus
    Moskus @Moskus
    $665
    Ответ написан более трёх лет назад
    3 комментария
    3 комментария
  • Как с помощью FFMPEG сконвертировать видеофайл без расширения?

    Moskus
    Moskus @Moskus
    У ffmpeg есть ключ -f, который позволяет явно указать формат. Список форматов получается командой -formats. Так что переименовывать не обязательно.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как получить прямой путь до файла, загруженный через Active Storage?

    Евгений Козлов @lebron32rus
    Senior Software Engineer
    ActiveStorage::Blob.service.send(:path_for, attachment.blob.key)
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как к каждому элементу массива добавить элемент из другого массива в Ruby?

    0xD34F
    0xD34F @0xD34F
    a = array1.map.with_index{|n, i| '//' + array2[i] + n}.join(' or ')
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Почему при конвертации видео в HLS в файл M3U8 прописываются последние 5 фрагментов тээсок (TS)?

    Moskus
    Moskus @Moskus
    Вы забыли параметр -hls_list_size 0. Дефолтное значение - 5, потому так и выходит.

    "Копать", как всегда, здесь: https://ffmpeg.org/ffmpeg-formats.html#hls-1
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Как конвертировать видео на одном сервере, а раздавать контент с другого, используя Ruby on Rails?

    2ord
    Капитан Пронин @2ord
    Мне кажется, что лучше организовать загрузку файлов, требующих пост-обработки, прямиком на выделенный сервер. Сервер1 можно использовать в целях экономии одновременно для приложения RoR и отдачи контента через кеширующий прокси, хотя правильно таки выделять сервер только под раздачу контента, то есть CDN. Для пост-обработки можно использовать микросервис на Ruby или другом языке на сервере2. По окончании пост-обработки оповещать об окончании задачи и загружать обработанные файлы на сервер для отдачи контента.

    Сервисы: Amazon CloudFront, Cloudflare Stream, Akamai CDN
    Самостоятельно: ATS - https://habr.com/post/113728/ , Varnish, Nginx и др.
    Ответ написан более трёх лет назад
    2 комментария
    2 комментария
  • Как в Ruby on rails вызвать системную команду FFMPEG?

    2ord
    Капитан Пронин @2ord
    При условии что ffmpeg присутствует и верно заданы параметры в ключах, команда должна выполниться. После system можно проверить код выхода процесса при помощи $?.exitstatus
    Советую заняться отладкой кода.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как сделать поля, связанные ассоциацией belongs_to необязательными для заполнения?

    oh_shi
    oh_shi @oh_shi
    belongs_to :secondmodel_object_b, optional: true
    belongs_to :secondmodel_object_c, optional: true
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Как настроить форму для вложенных ресурсов в Ruby on Rails 5.2.1, используя form_with?

    oh_shi
    oh_shi @oh_shi
    <%= form_with(model: [@parent, @child], local: true) do |form| %>
    Ответ написан более трёх лет назад
    2 комментария
    2 комментария
  • Как на сайт через PHP вставить значения из другой БД MySQL на другом сервере?

    PrAw @remzalp
    Программер чего попало на чем попало
    Вариант 1: просто коннектишься к удаленной БД, вместо localhost в настройках подключения пишешь IP сервера.
    Но с той стороны сервер БД должен быть настроен слушать не только localhost, а 0.0.0.0 или актуальный ип сервера. Плюс в настройках фаерволла разрешить доступ к серверу БД с ип первого сервера.

    Вариант 2: реализуешь на втором сервере на php какой-то примитивный api (google rest api). Пишешь скрипт, который на определенный запрос через веб генерирует запрос в БД, отдаёт результат в формате JSON.
    Из своего скрипта через curl или просто
    $obj = json_decode(file_get_contents("https://server2/api.php?id=$id"));

    и уже с этим объектом делаешь что нужно.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
Оценили как «Нравится»
Самые активные сегодня
  • Drno
    • 21 ответ
    • 0 вопросов
  • CityCat4
    CityCat4
    • 12 ответов
    • 0 вопросов
  • GNUBack
    • 7 ответов
    • 0 вопросов
  • mayton2019
    • 6 ответов
    • 0 вопросов
  • vovka3003
    Владимир Шаблий
    • 6 ответов
    • 0 вопросов
  • SidVisceos
    • 5 ответов
    • 0 вопросов
  • © Habr
  • О сервисе
  • Правила
  • Обратная связь
  • Блог

Войдите на сайт

Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации