最近工作上有一個需求是希望影片可以在最後停留在最後的畫面,由於 Nginx 預設在播放 mp4 播完結束後就會呈現黑色畫面,所以如果要實現將影片停在最後一個畫面,那不就是”暫停”了嗎
在 Nginx 的 http_mp4_module 本身就提供了這樣的功能,官方提到可以控制 .mp4 .m4v .m4a 等這類型的檔案支援
確認你的 Nginx 是否支援 http_mp4_module
$ nginx -V | grep http_mp4_module
在你的 server {} 加入 mp4 module
$ vim /etc/nginx/conf.d/video.com.conf server { ... location / { mp4; mp4_buffer_size 10m; mp4_max_buffer_size 100m; } ... }
mp4_buffer_size 設定在記憶體內的初始值大小,而 mp4_max_buffer_size 則是記憶體內的最大 buffer,若是你的超過則會出現
"/some/movie/file.mp4" mp4 moov atom is too large: 12583268, you may want to increase mp4_max_buffer_size
除此之外 http_mp4_module 還提供了 mp4_limit_rate 去限制你的影片。
在設定檔啟動了 mp4 module 之後可以使用 URL Get 的方式控制 mp4 影片
Example:
# 從第5秒開始播放 http://example.com/home.mp4?start=5.0 # 從第5秒開始播放並且停在9.99秒 http://example.com/home.mp4?start=5.0&9.99
參考資料: