博文来自: http://xugaoxiang.com/post/112
软硬件环境
- 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
troutling小项目
https://github.com/xugaoxiang/troutling,目前已经把这个本地影片转码上传的功能加进去了。