自制视频功能开发
自制视频功能开发需求
1、视频文件上传:从前端把视频文件上传到后台服务器;
2、视频文件转码:后台服务器把视频文件转码。ffmpeg的使用(容器的更换)
3、七牛云存储的使用 以及七牛云sdk的使用:视频处理完后,存到七牛云,用七牛云的SDK进行开发,把视频上传上去。
4、异步队列服务器celery的使用 + redis
ffmpeg知识
ffmpeg是一个对音视频进行处理的命令行工具,由C开发。ffmpeg -i input.file -c copy output.file
input.file就是原文件的地址,output.file就是输出地址。
一、把视频传到后台
我们现在要把外链视频和自定义视频都放在一个页面里,所以需要对之前的ExternalVideo修改一下,增加自定义视频:
class ExternalVideo(View):
TEMPLATE = 'dashboard/video/external_video.html'
print('hehehehe')
@dashboard_auth
def get(self, request):
error = request.GET.get('error', '')
data = {
'error': error}
cus_videos = Video.objects.filter(from_to=FromType.custom.value)
# 自制的视频不要,除此以外的视频都要
ex_videos = Video.objects.exclude(from_to=FromType.custom.value)
data['ex_videos'] = ex_videos
data['cus_videos'] = cus_videos
return render_to_response(request, self.TEMPLATE, data=data)
然后html中也增加自定义视频,把之前外链视频的table拿过来修改一下就可以了。
然后针对自定义视频的附属信息部分,我们需要修改一下:如果是自定义视频,我们就把地址链接的输入框,改成本地文件上传。
找到我们的video_sub HTML文件
对地址编辑区域进行修改:
<p>地址与选集编辑区域</p>
% if video.from_to != 'custom':
<label>添加地址</label><input id="url" type="text" name="url" class="form-control"/><br>
% else:
<label>上传视频</label><input id="url" type="file" name="url" class="form-control"/><br>
% endif
如果是上传自定义文件的话,我们还需要对form添加一个enctype属性,加上之后就可以上传到后端了。
整体是这个样子:
% if FromType(video.from_to) == FromType.custom:
<form enctype="multipart/form-data" class="form-horizontal edit-area add-video-area add-url" method="post">
% else:
<form class="form-horizontal edit-area add-video-area add-url" method="post">
<p>地址与选集编辑区域</p>
% if FromType(video.from_to) != FromType.custom:
<label>添加地址</label