使用 vdpau 将运行文本添加到视频流中



我有一个任务是在接收时将运行文本添加到视频流(或文件(。视频需要在带有 Armbian 的小隔间上运行。我用 mpv 测试了标志 --hwdec=vdpau,视频运行比没有它更流畅。为了添加运行文本,我尝试使用 lavfi-drawtext 过滤器,但是当我使用它时,mpv 回退到软件解码并看到滞后。这是我使用的示例之一:

mpv --hwdec=vdpau Videos/VID* -vf lavfi=[drawtext=fontsize=40:fontcolor=yellow:x=w-50*t:y=h/2:textfile=livetext.txt:reload=1]

该命令的输出带有 --msg-level=vd=v,它来自我的工作 PC,在隔间板上它还警告音频/视频不同步:

Playing: Videos/VID_20180129_120726.mp4
 (+) Video --vid=1 (*) (h264 1080x1920 30.000fps)
 (+) Audio --aid=1 --alang=eng (*) (aac 2ch 44100Hz)
[vd] Container reported FPS: 30.000000
[vd] Codec list:
[vd]     h264 - H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
[vd]     h264_crystalhd (h264) - CrystalHD H264 decoder
[vd]     h264_cuvid (h264) - Nvidia CUVID H264 decoder
[vd] Opening video decoder h264
[vd] Probing 'vdpau'...
[vd] Trying hardware decoding.
[vd] Selected video codec: h264 (H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10)
Opening video filter: [lavfi graph=drawtext=fontsize=40:fontcolor=yellow:x=w-50*t:y=h/2:textfile=/opt/mpv-text/livetext.txt:reload=1]
[vd] Pixel formats supported by decoder: vdpau vaapi_vld yuv420p
[vd] Codec profile: High (0x64)
[vd] Requesting pixfmt 'vdpau' from decoder.
Using hardware decoding (vdpau).
[vd] Decoder format: 1080x1920 vdpau[yuv420p] bt.709/bt.709/bt.1886/limited CL=mpeg2/4/h264
[ffmpeg] Impossible to convert between the formats supported by the filter 'src' and the filter 'auto_scaler_0'
[lavfi] Can't configure libavfilter graph.
Video filter chain:
  [in] 1080x1920 vdpau[yuv420p] bt.709/bt.709/bt.1886/limited SP=1.000000 CL=mpeg2/4/h264
  [lavfi] "lavfi.00" 1080x1920 vdpau[yuv420p] bt.709/bt.709/bt.1886/limited SP=1.000000 CL=mpeg2/4/h264   <---
  [out] ???
Falling back to software decoding.
[vd] Detected 8 logical cores.
[vd] Requesting 9 threads for decoding.
AO: [pulse] 44100Hz stereo 2ch float
[vd] Decoder format: 1080x1920 yuv420p bt.709/bt.709/bt.1886/limited CL=mpeg2/4/h264
VO: [opengl] 1080x1920 yuv420p
AV: 00:00:03 / 00:00:36 (9%) A-V:  0.000
[vd] Uninit video.

经过长时间的搜索,我怀疑这里的 mpv 硬件加速是否可能。如果是这样,也许您可以就其他工具提供建议来实现这一目标?我是这个领域的新手,也许有一种更有效的方法可以将运行文本添加到视频中。谢谢。

我找到了一种可以移动文本(ASS(的字幕格式,因此不需要视频过滤器。标签move(x1,y1,x2,y2)可以做到这一点,请参考下面的标签:

http://docs.aegisub.org/3.2/ASS_Tags/

最新更新