2

Я работал с ниже окружающей среды.

==> Ubuntu 16.04.3

==> FFmpeg:3.4.2

- конфигурация: --prefix =/usr/local/ffmpeg_new/ --enable-cuda --enable-cuvid --enable-nvenc --enable-nonfree --enable-libnpp --extra-cflags = -I/usr/local/ cuda/ include --extra-ldflags = -L/usr/local/ cuda/ lib64 --enable-libvpx --enable-libvorbis --enable-libfreetype

==> Cuda 9.1.85

==> Графический процессор: GeForce GTX 1080ti

Моя цель - ускорить модификацию видео через источник графического процессора, так как на моем медиа-сервере высок трафик.

Вот основные этапы моего процесса:

1.Сплит видео и аудио звонящего.

время ffmpeg -y -i 230087_caller.webm -vn -ab 256 230087_caller.wav

2.Сплит видео и аудио звонящего

время ffmpeg -y -i 230087_callee.webm -vn -ab 256 230087_callee.wav

3.Mux оригинальное видео звонящего с аудио звонящего для хранения разговора.

время ffmpeg -y -i 230087_caller.webm -i 230087_callee.wav -filter_complex '[0:a] aformat = sample_fmts = fltp:sample_rates = 44100:channel_layouts = стерео, громкость = 0,5 [a1]; [1: а] aformat = sample_fmts = fltp:sample_rates = 44100:channel_layouts = стерео, объем = 0,5 [а2]; [A1] [a2] amerge, панорамирование = стерео | c0

4.Добавьте файл времени шрифта к фильму caller_temp, который завершается с ошибкой ниже.

время ffmpeg -y -i caller_temp.webm -vf drawtext = fontfile =/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf:x = 8:y = 8:fontsize = 16:fontcolor = yellow @ 1: расширение = strftime: basetime = 1518172680000000: текст = '% Y-% m-% d% H-% M-% S' -строчный -2 -shortest -c: libvorbis -c: v h264_nvenc final_font_test.webm

[webm @ 0x29e8540] Для WebM поддерживаются только видео VP8 или VP9, а также субтитры Vorbis или Opus и WebVTT. av_interleaved_write_frame(): неверный аргумент Ошибка записи трейлера output_temwp.webm: неверный аргумент

==================================

Вот детали моего файла webm:

Поток # 0: 0(англ.): Видео: vp8, yuv420p, 640x480, SAR 1: 1, DAR 4: 3, 27,58 тбр, 1 Кбайт, 1 Кбайт (по умолчанию) Метаданные: заголовок: Видеопоток № 0: 1 (англ.): Аудио: опус, 48000 Гц, стерео, fltp (по умолчанию)

==================================

Я взглянул на матрицу поддержки кодирования / декодирования видео NVIDIA, мой GPU, похоже, должен поддерживать это преобразование.

https://developer.nvidia.com/video-encode-decode-gpu-support-matrix

=================================

Однако, когда я изменил формат выходного файла на mp4/avi/mpeg, GPU можно использовать без каких-либо проблем.Тем не менее, webm важен для нас, так как размер файла другого контейнера становится рискованным с точки зрения хранения.

Я буду признателен, если вы поделитесь своими комментариями и отзывами, чтобы продолжить работу над этой проблемой.

Заранее спасибо. С уважением

1 ответ1

0

Согласно Матрице поддержки NVENC поддерживает только AVCHD (H.264) и HEVC (H.265).

Вы можете использовать NVDEC для декодирования VP8/9 с использованием совместимого графического процессора.

Для аппаратно поддерживаемой кодировки VP8/VP9, пожалуйста, проверьте поддержку кодера VAAPI в FFMPEG.

Чтобы использовать декодер по умолчанию для некоторого ввода, затем загрузите кадры в VAAPI и закодируйте с VP9 и настройками по умолчанию:

ffmpeg -vaapi_device /dev/dri/renderD128 -i input.mp4 -vf 'format=nv12,hwupload' -c:v vp9_vaapi output.webm

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .