操作系統為 CentOS Linux release 8.4.2105
ffmpeg 為 https://johnvansickle.com/ffmpeg 上下載的預編譯程序,在處理 http/https 應用時報了 Segmentation fault (core dumped) 錯誤。
經多番查找在 stack overflow 上找到相關貼子:
https://stackoverflow.com/questions/60528501/ffmpeg-segmentation-fault-with-network-stream-source
總結如下:
在 ffmpeg 的網站上,有構建說明, https://johnvansickle.com/ffmpeg/release-readme.txt
里面提到:
Notes: A limitation of statically linking glibc is the loss of DNS resolution. Installing nscd through your package manager will fix this. The vmaf filter needs external files to work- see model/000-README.TXT
就是說 ffmpeg 的 DNS 解析需要 nscd 這個服務才能正常。
所以解決方案有這么幾個:
1. 安裝並啟動 nscd 服務。
dnf install nscd systemctl enable nscd systemctl start nscd
2. 將 http/https 的 URL 自己手動把其中的域名部分替換成 IP 地址。(對於我來說並不適用於此
3. 將 http/https 的資源轉為本地資源,比如如果是 OSS 的文件的話,可以嘗試使用 ossutil 把 OSS bucket 掛載到雲主機上
我用的方案1。