Чтобы перекодировать ввод в вывод с помощью H264 720p с помощью графического процессора, вы можете использовать различные инструменты и языки программирования. Вот несколько методов с примерами кода:
Метод 1: FFmpeg (командная строка)
FFmpeg — популярный инструмент командной строки для обработки видео и аудио. Для перекодирования с использованием FFmpeg с ускорением графического процессора вам понадобится версия, скомпилированная с поддержкой графического процессора NVIDIA.
ffmpeg -i input.mp4 -c:v h264_nvenc -b:v 5M -vf "scale=1280:720" output.mp4
Объяснение:
-i input.mp4: указывает входной файл.-c:v h264_nvenc: устанавливает видеокодек H.264 и включает кодирование графического процессора с использованием NVENC (кодировщик NVIDIA).-b:v 5M: устанавливает целевой битрейт видео на 5 Мбит/с. Отрегулируйте по мере необходимости.-vf "scale=1280:720": масштабирует видео до разрешения 720p (1280×720).output.mp4: указывает выходной файл.
Метод 2: Python + FFmpeg (подпроцесс)
Вы можете выполнять команды FFmpeg из сценария Python с помощью модуля subprocess.
import subprocess
input_file = "input.mp4"
output_file = "output.mp4"
command = f'ffmpeg -i {input_file} -c:v h264_nvenc -b:v 5M -vf "scale=1280:720" {output_file}'
subprocess.call(command, shell=True)
Метод 3: Python + FFmpeg (библиотека ffmpeg-python)
Библиотека ffmpeg-pythonпредоставляет Pythonic-интерфейс для FFmpeg.
import ffmpeg
input_file = "input.mp4"
output_file = "output.mp4"
ffmpeg.input(input_file).output(output_file, vcodec="h264_nvenc", b="5M", vf="scale=1280:720").run()
Метод 4: GStreamer (Python)
GStreamer — это мощная мультимедийная платформа, поддерживающая кодирование и декодирование графического процессора. Вот пример использования команды gst-launch-1.0.
import subprocess
input_file = "input.mp4"
output_file = "output.mp4"
command = f'gst-launch-1.0 -v filesrc location={input_file} ! decodebin ! nvvidconv ! video/x-raw,format=NV12,width=1280,height=720 ! omxh264enc ! video/x-h264,stream-format=byte-stream ! h264parse ! filesink location={output_file}'
subprocess.call(command, shell=True)