软硬件环境
- ffmpeg version N-89674-g57d0c24132
- nginx 1.4.6 with ubuntu 14.04.5 server
- windows
前言
在做基于HLS
的点播系统中,需要将本地的视频文件进行转码切片,然后再上传到视频服务器中。本文就利用ffmpeg
和HTTP
中的PUT
方法来实现这个功能。
http put
HTTP
中的PUT
请求方法,用于新增资源或者使用请求中的有效负载替换目标资源的表现形式。PUT
与POST
方法的区别在于,PUT
方法是幂等的即调用一次与连续调用多次是等价的(没有副作用),而连续调用多次POST
方法可能会有副作用,比如将一个订单重复提交多次。
nginx配置文件
修改文件 /etc/nginx/sites-available/default
server {
listen 8888 default_server;
root /opt/www;
index index.html index.htm
client_max_body_size 10000m;
location / {
try_files $uri/ = 404;
dav_methods PUT DELETE MKCOL COPY MOVE;
create_full_put_path on;
dav_access user:rw group:rw all:rw;
}
location /vod {
dav_methods PUT DELETE MKCOL COPY MOVE;
create_full_put_path on;
dav_access user:rw group:rw all:rw;
}
}
这里的/opt/www/vod
目录就是用来存放切片文件的,nginx
默认的用户名是www-data
,所以确保www-data
对/opt/www/vod
有读写权限。
sudo chown -R www-data:www-data /opt/www/vod
客户端操作
ffmpeg
转码的命令跟之前的差不多,就多了个method
方法
ffmpeg -re -i test.mp4 -vcodec libx264 -acodec aac -strict -2 -preset ultrafast -hls_playlist_type vod -f hls -method PUT http://10.0.0.188:8888/vod/test/index.m3u8