[英]ffmpeg hls stream to nginx webdav. Remove old segments
我正在嘗試將 stream mp4 文件循環到我的 nginx 服務器。 我需要刪除舊段:
ffmpeg -re -stream-loop -1 -i /data/samples/BigBuckBunny.mp4 -c copy -f hls -hls_time 5 -hls_flags delete_segments -hls_list_size 5 http0.0/127/1.0.0/上傳
Everythink 沒問題,但是當 ffmpeg 嘗試刪除舊段時,我在 nginx 中遇到此錯誤:
[錯誤] 22#22: *73174 DELETE with body 不受支持,客戶端:127.0.0.1,服務器:_,請求:“DELETE /upload/stream16.ts HTTP/1.1”,主機:“127.0.0.1:8080”
我的 nginx 配置:
location /upload {
root /data/live;
dav_access user:rw group:rw all:rw;
dav_methods PUT DELETE MKCOL COPY MOVE;
create_full_put_path on;
charset utf-8;
autoindex on; }
ffmpeg 4.4.1
nginx 1.21.4
我做錯了什么?
似乎作為 hls 多路復用器基礎的 ffmpeg http 多路復用器默認為分塊傳輸編碼。 當發出 DELETE 請求時,沒有正文,但 ffmpeg 仍然使用單個零長度塊發出請求。
nginx 中的錯誤消息可能會更有幫助。 實際上,它不支持帶有正文的 webdav DELETE 請求,但它也不支持標記為分塊傳輸編碼的 DELETE 請求,無論是否有正文(參見: https://github.com/nginx/nginx /blob/master/src/http/modules/ngx_http_dav_module.c#L315 ),因此出現錯誤。
看起來應該可以使用chunked_post
選項禁用它,但它似乎不起作用。 不確定這是否是錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.