Ответы пользователя по тегу FFmpeg
  • Почему возникает ошибка конвертации в случае если видео находиться не в 0 стриме?

    Alex-rsk
    @Alex-rsk
    Бэкендер
    У вас команда неправильная, похоже.
    >> -map 0:v:1
    отображает аудиотрек входного файла во второй трек выходного. Нужно -map 1:v:0
    и еще у вас тут странное:
    >> -g 5 -force_key_frames "expr:gte(t, n_forced * 5)"
    -g 5 говорит вставлять ключевые кадры каждый пятый кадр, -force_key_frames "expr:gte(t, n_forced * 5)" - говорит вставлять ключевые кадры каждые 5 секунд. Т.к. у вас не указан FPS, на выходе это может привести к появлению сегментов рандомной длины. Кстати, и длина сегмента у вас не указана (-segment_time).
    Ответ написан
    Комментировать
  • Как реагировать на отключение устройства?

    Alex-rsk
    @Alex-rsk
    Бэкендер
    -reconnect
    Reconnect automatically when disconnected before EOF is hit.

    -reconnect_at_eof
    If set then eof is treated like an error and causes reconnection, this is useful for live / endless streams.

    -reconnect_on_network_error
    Reconnect automatically in case of TCP/TLS errors during connect.

    -reconnect_on_http_error
    A comma separated list of HTTP status codes to reconnect on. The list can include specific status codes (e.g. ’503’) or the strings ’4xx’ / ’5xx’.

    -reconnect_streamed
    If set then even streamed/non seekable streams will be reconnected on errors.

    -reconnect_delay_max
    Set the maximum delay in seconds after which to give up reconnecting.

    -reconnect_max_retries
    Set the maximum number of times to retry a connection. Default unset.

    -reconnect_delay_total_max
    Set the maximum total delay in seconds after which to give up reconnect

    https://ffmpeg.org/ffmpeg-protocols.html
    Ответ написан
    Комментировать
  • FFmpeg - проблема функции concat, увеличивается FPS при объединении видео, как исправить?

    Alex-rsk
    @Alex-rsk
    Бэкендер
    Подозреваю, что в первом видео нет аудиодорожки, поэтому в результирующем видео тоже нет (проверьте через ffprobe) . В таком случае надо добавить пустую аудиодорожку в первое видео.

    ffmpeg -f lavfi -i anullsrc=channel_layout=stereo:sample_rate=<рейт второго видео> -i logo.mp4 -shortest -c:v copy -c:a <Кодек второго видео> new_logo.mp4

    По поводу фпс задайте его явно : -c:v h264 -r 25.
    Ответ написан
    Комментировать
  • Какими ключами задать ffmpeg повтор и ожидание при закачке ts из m3u8 (HLS)?

    Alex-rsk
    @Alex-rsk
    Бэкендер
    Попробуйте перед -i добавить
    -timeout 10000000 -reconnect 1 -reconnect_at_eof 1 -reconnect_streamed 1 -reconnect_delay_max 2

    Чтобы сохранялись промежуточные закачки, предлагаю сохранять выкачанное фрагментами по 2-10сек (зависит от длины сегмента стрима). Потом сделаете 1 конкат для файлов и получите большой фильм. Фильтр -f segment в помощь.
    Ответ написан
    4 комментария
  • Как выровнять длины треков в mp4 файле?

    Alex-rsk
    @Alex-rsk Автор вопроса
    Бэкендер
    Получилось так:

    ffmpeg -i input.mp4 -filter_complex "[0:a]adelay=80ms|80ms[a1]; [a1]atrim=duration=10[a2]" -map 0:v -map "[a2]" -c:v copy output.mp4

    668e87cae2b96681312045.png
    Ответ написан
    Комментировать