Официальный сайт https://ffmpeg.org/download.html.
и добавлен в переменные среды
ffmpeg -v ffmpeg версия 6.0 Авторские права (c) 2000–2023, разработчики FFmpeg создали с помощью Apple clang версии 14.0.3 (clang-1403.0.22.14.1)
Отображение номера версии указывает на успех.
На стороне браузера нажмите F12, чтобы войти в интерфейс для просмотра сетевых запросов, фильтрации информации m3u8
, поиска содержимого для предварительного просмотра, щелкните видео, найдите воспроизведение прямой трансляции, щелкните его и перетащите индикатор выполнения назад, если его нет. контент, обновите его. Этот запрос доступен до загрузки видео, его нельзя записать.
Первый шаг — взглянуть на компьютерный зал, откуда берется header
.
На втором этапе Ctrl + A выбирает все содержимое предварительного просмотра.
Что-то вроде этого:
#EXTM3U#EXT-X-VERSION:3#EXT-X-MEDIA-SEQUENCE:1#EXT-X-TARGETDURATION:35#EXTINF:33.000,xxx/1.ts?auth_key=xxx ...
Сохраните его как aa.bj.m3u8
в том же каталоге, что и скрипт Python. Обратите внимание, что bj в середине может отличаться : sz означает Шэньчжэнь, а bj означает Пекин.
Затем выполните скрипт python3 a.py
Будет создана папка кэша, которая поддерживает возобновление загрузки и будет автоматически удалена после завершения загрузки.
Параметр -mac-crf
нельзя использовать для сжатия видео, и необходимо заменить инструкции кодировщика.
Демо-версия, отличная от скрипта автоматизации
запросы на импорт, os, re, time# sz означает Шэньчжэнь, bj означает Пекин, base_url = "https://dtliving-sz.dingtalk.com/live_hp/" def get_url(): url_list = [] with open("aa. m3u8", "r") как f: s = f.readlines() for i in s: if re.match(r".*?ts.*?", i): url_list.append(base_url + i) return url_listdef download(): urls = get_url() для i, URL-адрес в enumerate(urls): с open(f"{i + 1}.ts", "wb") как f: ответ = Requests.get(url[: -1]) # Удалить символы новой строки print(i, "ok") # time.sleep(1)# Интегрировать имена файлов для облегчения слияния FFmpeg def parse_filename(): base_path = os.getcwd() urls = get_url() с open ("file.txt", "w+") как f: для i в диапазоне (1, 1 + len(urls)): путь = f"file '{base_path}/{i}.ts'n" print( path) f.write(path)if __name__ == "__main__": download() print("загрузка завершена...") parse_filename()
В случае успеха будет загружена серия二进制
файлов: 1.ts, 2.ts, 3.ts, ...
Если это неправильно, это файл с содержимым формата xml
, и при открытии будет отображаться сообщение об ошибке.
Решение состоит в том, чтобы проверить, не совпадает ли base_url
или неверны ли sz и bj.
ffmpeg -f concat -safe 0 -i file.txt -c скопировать a.mp4
Я считаю, что если после слияния файл слишком велик, вы можете использовать ffmpeg
для повторного сжатия или использовать h256/hevc
для повторного кодирования, чтобы получить меньший размер файла.
Рекомендуется использовать программное сжатие Permutate.
Использование более эффективного формата кодирования видео — распространенный метод уменьшения размера видеофайлов за счет использования формата кодирования видео с более высокой степенью сжатия. Вот пример использования FFmpeg для преобразования видео в формат кодирования H.265:
ffmpeg -i input.mp4 -c:v libx265 -crf 28 output.mp4
Приведенная выше команда преобразует входное видео input.mp4 в формат кодирования H.265 и сохраняет результат как файл output.mp4. Среди них параметр -c:v указывает видеокодер, libx265 указывает на использование кодера x265, параметр -crf указывает на качество видео, а 28 указывает на целевое качество видео. Чем меньше значение, тем выше качество видео и качество. больше размер файла.
Тест, видео 1.3г сжимается до размера 231м, но скорость слишком низкая скорость=0.8, на 3 часа сжатия видео у меня ушло 4 часа, ищу другие способы
hevc_videotoolbox не так хорош, как libx265, но очень быстр на моем MacBook air 13 m1.
Как и большинство кодировщиков с аппаратным ускорением, hevc_videtoolbox не так эффективен, как libx265. Поэтому вам может потребоваться установить значительно более высокий битрейт по сравнению с libx265, чтобы обеспечить эквивалентное качество. Это может противоречить цели перекодирования из H.264 в HEVC/H.265.
Официальный сайт https://trac.ffmpeg.org/wiki/HWAccelIntro#VideoToolbox
# VideoToolbox [¶](https://trac.ffmpeg.org/wiki/HWAccelIntro#VideoToolbox "链接到这一节") [VideoToolbox](https://developer.apple.com/documentation/videotoolbox) is the macOS framework for video decoding and encoding. The following codecs are supported: - Decoding: H.263, H.264, HEVC, MPEG-1, MPEG-2, MPEG-4 Part 2, ProRes - Encoding: H.264, HEVC, ProRes To use H.264/HEVC hardware encoding in macOS, just use the encoder `-c:v h264_videotoolbox` or `-c:v hevc_videotoolbox` for H.264 or HEVC respectively. Check `ffmpeg -h encoder=...` to see encoder options. VideoToolbox supports two types of rate control: - Bitrate-based using `-b:v` - Constant quality with `-q:v`. Note that the scale is 1-100, with 1 being the lowest and 100 the highest. Constant quality mode is only available for Apple Silicon and from ffmpeg 4.4 and higher.
Включите ускорение GPU 3 и укажите видеокодер для кодирования. Следует отметить, что VideoToolbox не поддерживает CRF, поэтому битрейт необходимо указывать через -b:v
.
Кодек AVOption crf (выберите качество для режима постоянного качества) не использовался ни для одного потока. Наиболее вероятная причина — либо неправильный тип (например, параметр видео без видеопотоков), либо это частная опция какого-либо кодера, который был установлен. фактически не используется ни для одного потока.
Тестирование параметров по умолчанию происходит примерно в 10 раз быстрее.
ffmpeg video -i input.mp4 -c:v hevc_videotoolbox output.mp4
кадр=126360 кадр/с=114 q=-0.0 Lsize= 413400кБ время=02:55:29,95 битрейт= 321,6кбит/с dup=663 падение=0 скорость=9,51x видео: 315854 КБ аудио: 93814 КБ субтитры: 0 КБ другие потоки: 0 КБ глобальные заголовки: 0 КБ издержки мультиплексирования: 0,910847%
Он примерно в 10 раз быстрее предыдущего, а размер файла увеличился с 800м до 400м, но снизилась степень сжатия. Протестирую еще несколько файлов.
Кодировки, соответствующие h264 в macOS, включают libx264 и h264_videotoolbox. Эти две скорости аналогичны, но libx264 требует высокой загрузки ЦП, а размер перекодированного файла также невелик. Я слышал, что требования к декодированию для воспроизведения видео будут выше.
После моего теста я обнаружил, что для записи и трансляции файлов используется кодировка h264. Кодировка H265 имеет очевидные преимущества в формате 4k, и во многих спортивных сценах DingTalk воспроизводит только 12 кадров и качество изображения 1080p. Нет необходимости использовать h265. запись и трансляцию я изучал. Большинство из них ppt, а спортивных кадров очень мало.
Рекомендуется следовать следующим инструкциям:
find ./ -name '*.mp4' -exec sh -c 'ffmpeg -i "$0" -c:v libx264 -crf 30 -c:a aac "${0%%.mp4}-hevc.mp4"' {} ;
Источник кода https://blog.51cto.com/u_15366127/6084937 ↩
Несколько способов использования ffmpeg для уменьшения размера видео https://juejin.cn/post/7222575963564654648 ↩
Аппаратное ускорение FMPEG https://blog.xm.mk/posts/1a3h/ ↩