我看起来应该是一个非常简单的问题,但事实证明它比我想象的要困难得多.这是问题所在:
我有一个相当大的图像序列,由编号的帧组成(Maya的输出,它的价值).图像目前采用Targa(.tga)格式,但如果重要的话,我可以将它们转换为PNG或其他任意格式.重要的是,他们有一个alpha通道.
我想要做的是以编程方式将它们变成视频剪辑.格式并不重要,但它需要无损并具有alpha通道.Quicktime容器中的未压缩视频可能是理想的.
我最初的想法是ffmpeg,但是在浪费了大部分时间之后,它似乎根本没有对alpha通道的支持.我要么缺少某些东西,要么底层的libavcodec不会这样做.
那么,这里的正确方法是什么?像ffmpeg这样的命令行工具会很好,但是在Windows上运行并且可以从脚本调用的任何解决方案都可以.
注意:在视频中使用alpha chanel实际上并不是那么罕见,如果你想将它合成在另一个视频片段或静止图像之上,它真的很有用.据我所知,未压缩的视频,Quicktime动画编解码器和Sorenson Video 3编解码器都支持透明度,我也听说过H.264.我们真正谈论的是32位色深,这得到了广泛支持; Quicktime .mov文件和Windowss .avi文件都可以处理它,也可能更多.
Quicktime Pro非常乐意将图像序列转换为32位.mov文件.点击导出,将颜色深度更改为"百万种颜色+",选择动画编解码器,将质量提高到100,然后就是 - 无损压缩视频,带有alpha字符,并且自编解码器以来它几乎可以在任何地方播放自1.0版以来一直是Quicktime的一部分.问题是,Quicktime Pro没有任何类型的命令行界面(至少在Windows上).ffmpeg支持使用Quicktime Animation编解码器(它称为qtrle)进行编码,但它只支持24位的位深度.
问题是找不到支持Alpha通道的视频格式.Quicktime Animation是理想的,但即使是未压缩的视频也应该可以使用.问题是找到一个支持它的工具.
好吧,我有一个相当简单的设计.
class Update(models.Model):
pub_date = models.DateField()
title = models.CharField(max_length=512)
class Post(models.Model):
update = models.ForeignKey(Update)
body = models.TextField()
order = models.PositiveIntegerField(blank=True)
class Media(models.Model):
post = models.ForeignKey(Post)
thumb = models.ImageField(upload_to='frontpage')
fullImagePath = models.ImageField(upload_to='frontpage')
Run Code Online (Sandbox Code Playgroud)
是否有一种简单的方法允许用户在一个页面上创建更新?
我想要的是让用户能够进入管理界面,添加新的更新,然后在编辑更新时添加一个或多个帖子,每个帖子都有一个或多个媒体项目.此外,我希望用户能够在更新中重新排序帖子.
我目前的尝试在admin.py中有以下内容:
class MediaInline(admin.StackedInline):
model = Media
class PostAdmin(admin.ModelAdmin):
inlines = [MediaInline,]
Run Code Online (Sandbox Code Playgroud)
这让用户添加一个新的Post项目,选择相关的Update,将Media项目添加到它,然后点击save - 这很好.但是没有办法在一个地方看到属于给定更新的所有帖子,这反过来意味着你不能在更新中浏览帖子.这对最终用户来说真的很混乱.
救命?
我目前正在编写一个非常标准的基于Django的应用程序(基本上是一个花哨的CRM /联系人列表).它有点工作,但随着我不断尝试使用越来越多的AJAXy UI代码(使用jQuery)来改进界面,它开始变得非常痛苦.我得到了很长的脆弱的jQuery事件处理程序块,它们解析DOM,将更改推送回服务器,获取一些JSON,并尝试基于此更新DOM.
我觉得,至少,我可能想要添加一些客户端模板.或者,我可以尝试切换到JS框架,并使用我的Django应用程序作为数据库抽象层.或者即使我知道并喜欢Python,我也可以放弃Django应用程序,并尝试使用JS/Node.js解决方案.
有没有其他人处于这种情况?你是怎么解决的?
那么......我该怎么做?我收集了一些框架和模板系统的链接.没有特别的顺序:
这显然是LinkedIn用来解决类似的问题.它在服务器端使用Node.js并不理想(我从未使用过Node),但至少它不是基于JVM的.它似乎在github上处于休眠状态 - 我发现了人们一直想知道维护者去哪里的邮件列表.听起来确实不错 - 来自LinkedIn的博客文章很好地销售这项技术,尤其是编译它的能力.但它似乎只是模板化.这足以满足我的需求吗?
这个选项有Python和JS实现,看起来很受欢迎......但是我找不到任何似乎在使用Django的Mustache模板的人.这是因为它太容易得到博客文章,还是不可能或不可取的?它也非常有限; 至少我可能需要转向某种MVC JS框架,对吧?
有这么多的框架令人望而生畏.乍一看,所有这些看起来都非常好.如果我走这条路,似乎我需要重写我的应用程序,我真的很想找到一个已经做过类似事情的人.而且,如果有一个明确的选择来自Django的人作为背景,那将是很好的选择; 我不想学习六个不同的框架来评估它们.
这看起来很有趣,因为它在一个包中处理客户端和服务器端,但有点不成熟.他们警告不要在生产中使用它,如果我理解文档,它还不支持任何形式的持久性,这是......限制.我觉得如果它完成了它将是我想要的完美 ...
所以,呃......现在怎么样?有没有人使用这些工具中的任何一个来尝试将客户端渲染添加到Django webapp?怎么回事?
虽然通常总是为工作选择合适的语言是好的,但有时候尝试用一种非常不合适的语言来做某事是有益的.
将这个想法推到了不合逻辑的结论......你将如何在批处理文件中实现快速排序?它甚至可能吗?
我正在尝试允许用户创建一个转换并向此转换对象添加一个类别数组.我试图使用knockout的foreach绑定到类别数组,并让用户向转换添加新类别.我已经创建了一个jsfiddle来说明我在这里要解释的内容.
http://jsfiddle.net/msell/ueNg7/16/
当用户修改转换时,JSON对象会正确构建,但我无法获得要显示的转换列表.
django ×2
javascript ×2
batch-file ×1
codec ×1
command-line ×1
django-admin ×1
ffmpeg ×1
knockout.js ×1
python ×1
sorting ×1
transparency ×1
video ×1