软硬件环境

  • ffmpeg version N-89674-g57d0c24132
  • nginx 1.4.6 with ubuntu 14.04.5 server
  • windows

前言

在做基于HLS的点播系统中,需要将本地的视频文件进行转码切片,然后再上传到视频服务器中。本文就利用ffmpegHTTP中的PUT方法来实现这个功能。

http put

HTTP中的PUT请求方法,用于新增资源或者使用请求中的有效负载替换目标资源的表现形式。PUTPOST方法的区别在于,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,目前已经把这个本地影片转码上传的功能加进去了。

参考资料


Comments

comments powered by Disqus