使用python在django中将任何格式(flv、3gp、MXF等)的视频转换为MP4

Posted

技术标签:

【中文标题】使用python在django中将任何格式(flv、3gp、MXF等)的视频转换为MP4【英文标题】:convert the videos of any format(flv,3gp,MXF etc.,) to MP4 in django using python 【发布时间】:2013-02-22 06:09:59 【问题描述】:

我正在使用 django 并且非常新手在使用它。目前正在构建一个基本的上传页面,将视频上传到硬盘(基本上是在 django project 内的 media 文件夹中)

所以我的代码工作正常,视频已成功上传到媒体文件夹。

我在一个单独的 html 页面上显示所有上传的视频,使用 html video tag, 所以实际上问题是MP4格式的视频正在播放而剩下的没有。

下面是我的部分html代码和视图函数

uploads_list.html

<div style="padding-top:90px;">
  <video id="vid"   controls="controls">
           <source src="MEDIA_URLvideos/django_cms-_frontend_editing_1280x720.mp4" type="video/mp4" />       
   </video>
  <video id="vid_2"   controls="controls">
           <source src="MEDIA_URLvideos/1100000.flv" type="video/ogg" />       
   </video>
</div>

所以最后我的意图是,在上传时将所有上传的视频转换为MP4格式并存储在media文件夹中,这样我们就可以使用html video标签显示所有这些视频。

views.py

def upload_file(request):
    if request.method == 'POST':
        form = UploadFileForm(request.POST, request.FILES)
        if form.is_valid() and form.is_multipart():
            handle_uploaded_file(request.FILES['file'])
            return HttpResponseRedirect('/uploads_list')  # which renders `uploads_list.html` page
    else:
        form = UploadFileForm()
    return render_to_response('uploads_form.html', 'form': form,'total_files':os.listdir(settings.MEDIA_ROOT),'path':settings.MEDIA_ROOT,context_instance=RequestContext(request))

def handle_uploaded_file(file,path=''):
    filename = file._get_name()
    destination_file = open('%s/%s' % (settings.MEDIA_ROOT, str(path) + str(filename)), 'wb+')
    for chunk in file.chunks():
        destination_file.write(chunk)
    destination_file.close()

所以谁能告诉我,如何将上传的任何类型的视频(格式如flv3gpMXF 等)转换为MP4 格式,然后再存储到@ django 中的 987654335@ 文件夹?

【问题讨论】:

***.com/questions/4778607/… @catherine: 有什么帮助,将视频转换为 mp4 需要很长时间,有什么超快速的方法可以在 python 中将视频转换为 mp4 ***.com/questions/1120707/… 【参考方案1】:
import subprocess
subprocess.call('ffmpeg -i video.flv video.mp4') 

【讨论】:

k 可以将 .flv 视频文件转换为 mp4 正确,但其他格式如 3gp、MXF 等呢,因为用户可以上传任何类型的视频(如果他不限于上传时只上传 MP4 格式文件 :) ) 对吗?所以最后我们需要将上传的任意格式的视频转换成MP4格式,这样我们就可以像上面那样使用video标签直接显示那个文件了!!! 另外将视频转换为mp4需要很长时间,是否有任何超快速的方法可以在python中将视频转换为mp4?

以上是关于使用python在django中将任何格式(flv、3gp、MXF等)的视频转换为MP4的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 中将动画 .gif 转换为 .webm 格式?

videojs兼容flv等格式视频

使用python在django中将数据库转换为csv

在 django 模板中使用 python 字符串格式化

在 Google App Engine 中将 docx 文件呈现为 django 模板

如何在 Django 中将 Http Post 参数的 Json 值转换为 Python 字典?