我一直在以下环境工作。
==> 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
==> 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原始来电视频与被叫方音频存储对话。
time 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,锅=立体声| C0
4.将时间字体文件添加到caller_temp文件中,该文件失败并出现以下错误。
time 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: expansion = strftime:basetime = 1518172680000000:text ='%Y-%m-%d%H-%M-%S'-strict -2 -shortest -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的预告片时出错:参数无效
==================================
以下是我的webm文件的详细信息:
流#0:0(eng):视频:vp8,yuv420p,640x480,SAR 1:1 DAR 4:3,27.58 tbr,1k tbn,1k tbc(默认) 元数据: 标题:视频 流#0:1(eng):音频:opus,48000 Hz,立体声,fltp(默认)
==================================
我看一下nvidia视频编码/解码支持矩阵,我的gpu似乎应该支持这种转换。
https://developer.nvidia.com/video-encode-decode-gpu-support-matrix
=================================
但是,当我将输出文件格式更改为mp4 / avi / mpeg时,GPU可以毫无问题地使用。但是,webm对我们很重要,因为其他容器文件大小随着存储视角而变得有风险。
如果您分享您的意见和反馈以继续解决此问题,我将不胜感激。
提前致谢。 问候