利用ffmpeg和http_put实现本地视频的转码上传

/

软硬件环境

  • 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

  1. server {
  2. listen 8888 default_server;
  3. root /opt/www;
  4. index index.html index.htm
  5. client_max_body_size 10000m;
  6. location / {
  7. try_files $uri/ = 404;
  8. dav_methods PUT DELETE MKCOL COPY MOVE;
  9. create_full_put_path on;
  10. dav_access user:rw group:rw all:rw;
  11. }
  12. location /vod {
  13. dav_methods PUT DELETE MKCOL COPY MOVE;
  14. create_full_put_path on;
  15. dav_access user:rw group:rw all:rw;
  16. }
  17. }

这里的/opt/www/vod目录就是用来存放切片文件的,nginx默认的用户名是www-data,所以确保www-data对/opt/www/vod有读写权限。

  1. sudo chown -R www-data:www-data /opt/www/vod

客户端操作

ffmpeg转码的命令跟之前的差不多,就多了个method方法

  1. 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,目前已经把这个本地影片转码上传的功能加进去了。

参考资料

转载请注明作者和出处,并添加本页链接。
原文链接: http://xugaoxiang.com/post/112

给我留言