Я працюю з нижчим середовищем.
==> 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 для нас важливий, оскільки інший розмір файлу контейнера стає ризиковим з точки зору зберігання даних.
Мені будуть вдячні, якщо ви поділитесь своїми коментарями та недоліками, щоб продовжити цю проблему.
Заздалегідь спасибі. З повагою