软硬件环境
- 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
