FFmpeg не вдається конвертувати веб-файли, коли h264_nvenc змушений


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

==> Куда 9.1.85

==> GPU: GeForce GTX 1080ti

Моя мета - прискорити модифікацію відео через джерело GPU, оскільки на моєму медіа-сервері є високий трафік.

Ось основні етапи мого процесу:

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 = stereo, volume = 0.5 [a1]; [1: a] aformat = sample_fmts = fltp: sample_rates = 44100: channel_layouts = стерео, обсяг = 0,5 [a2]; [a1] [a2] amerge, pan = стерео | c0

4.Додайте шрифт до часу caller_temp fil, який не вдається з помилкою нижче.

час 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: розширення = строковий час: basetime = 1518172680000000: text = '% Y-% m-% d% H-% M-% S' -обмежений -2-найкоротший -c: a libvorbis -c: v h264_nvenc final_font_test.webm

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

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

Ось деталі мого веб-файлу:

Потік № 0: 0 (англ.): Відео: vp8, yuv420p, 640x480, SAR 1: 1 DAR 4: 3, 27,58 tbr, 1k tbn, 1k tbc (за замовчуванням) Метадані: title: Відеопотік № 0: 1 (eng) : Аудіо: opus, 48000 Гц, стерео, fltp (за замовчуванням)

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

Я подивився на матрицю підтримки кодування відео / кодування nvidia, схоже, моя gpu повинна підтримувати це перетворення.

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

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

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

Мені будуть вдячні, якщо ви поділитесь своїми коментарями та недоліками, щоб продовжити цю проблему.

Заздалегідь спасибі. З повагою


Ви використовуєте кодер H264, який WebM-контейнер не підтримує. Вам потрібен кодер VP8 / 9, який використовує обладнання nvidia, але я не бачу такого.
Gyan

Дякую, Мульвія, за відгуки. Чи є у вас якісь рекомендації щодо того, яке обладнання може підтримувати кодування vp8 / vp9 замість nvidia geforce? Або у вас є якісь рекомендації, щоб досягти найкращої продуктивності роботи з цим наявним графічним процесором, я маю на увазі різний тип вихідного контейнера.
oktay eşgül

Ви можете заощадити на MKV.
Gyan

Будь-який коментар щодо vp8 / vp9, що підтримує апаратне забезпечення GPU.
октай ешгюл

У Linux можна використовувати VAAPI для використання графічних процесорів Intel для VP8 / 9.
Gyan

Відповіді:


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

Драйвер Mesa VAAPI використовує апаратне забезпечення UVD (Уніфікований відеодекодер) та VCE (Video Coding Engine), знайдене у всіх останніх графічних картах та APU .
der_michael

Quicksync підтримує кодування VP8, починаючи з Braswell та VP9 з озера Аполлон , див.: Trac.ffmpeg.org/wiki/Hardware/QuickSync
der_michael
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.