簡體   English   中英

ffmpeg hls stream 到 nginx webdav。 刪除舊段

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM