我在使用 FFmpeg 和 Intel QuickSync 时遇到问题。如果我从 shell 启动我的 ffmpeg 命令,它可以正常工作。但是,如果我想从 cronjob 启动相同的 ffmpeg 命令,我会遇到 Quicksync 失败
我的命令是:
/bin/ffmpeg -vsync passthrough -copytb 1 -hwaccel qsv -probesize 5000000 -analyzeduration 16000000 -c:v hevc_qsv -recv_buffer_size 67108864 -i source -filter_complex "[v:0]hwdownload,format=pix_fmts=nv12[format:0]; [format:0]cvdelogo=filename=file:buffer_queue_size=150:detect_interval=25:score_min=0.4:scale_min=0.75:scale_max=1.25:padding_left=10:padding_right=10:padding_top=10:padding_bottom=10[cvdelogo]; [cvdelogo]split=outputs=1[hwupload:0]; [hwupload:0]hwupload=extra_hw_frames=10[map:v:0]" -map [map:v:0] -c:v h264_qsv -flags:v +global_header+cgop -preset:v veryfast -g 250 -b:v:0 6200k -maxrate:v:0 6200k -bufsize:v:0 6200k -map a:0 -c:a copy -f hls -hls_flags delete_segments -hls_time 10 -hls_list_size 6 output.m3u8
如果我在终端上运行它,一切正常。但是,如果我想shell_exec
通过 cronjob 的命令从 php 启动它,我会遇到此失败:
[AVHWDeviceContext @ 0x2cc7b80] Failed to initialise VAAPI connection: -1 (unknown libva error). Error creating a QSV device
我不知道为什么 FFmpeg 没有从 cronjob 创建 vaapi 设备,请帮助我解决这个问题。
谢谢