我通过一个简单的system.process使用FFMPEG(来自java应用程序)并试图将视频剪切成块。我试图将其削减为10秒增量。我的FFMPEG命令如下所示:
# This dictionary lets you convert the text back to the integer.
# You might prefer to build it dynamically instead.
TEXT_TO_STATUS_INTEGER = {
'Started': 1,
'DONE': 0,
}
class MyModelAdmin(admin.ModelAdmin):
def get_search_results(self, request, queryset, search_term):
queryset, use_distinct = super(PersonAdmin, self).get_search_results(request, queryset, search_term)
if search_term in TEXT_TO_STATUS_INTEGER:
queryset |= self.model.objects.filter(status=TEXT_TO_STATUS_INTEGER[search_term])
return queryset, use_distinct
他们看起来不对我,但我的视频没有以10秒的增量出现。他们似乎在随机点上“分裂”。关于我做错了什么想法?
供参考:
ffmpeg -i SampleVideo.mp4 -ss 00:00:00.00 -t 00:00:10.00 -strict -2 1438458522836/1438458522836_0.mp4
ffmpeg -i SampleVideo.mp4 -ss 00:00:10.01 -t 00:00:20.00 -strict -2 1438458522836/1438458536306_1.mp4
ffmpeg -i SampleVideo.mp4 -ss 00:00:20.01 -t 00:00:30.00 -strict -2 1438458522836/1438458546042_2.mp4
ffmpeg -i SampleVideo.mp4 -ss 00:00:30.01 -t 00:00:40.00 -strict -2 1438458522836/1438458561165_3.mp4
ffmpeg -i SampleVideo.mp4 -ss 00:00:40.01 -t 00:00:50.00 -strict -2 1438458522836/1438458577187_4.mp4
ffmpeg -i SampleVideo.mp4 -ss 00:00:50.01 -t 00:01:00.00 -strict -2 1438458522836/1438458587935_5.mp4
任何帮助都将不胜感激。
答案 0 :(得分:2)
如FFMPEG documentation中所述:
-ss position(输入/输出) 当用作输入选项(
-i
之前)时,在此输入文件中寻找位置。 请注意,在大多数格式中,无法精确搜索,因此ffmpeg将在位置之前寻找最接近的搜索点。当启用转码和-accurate_seek(默认值)时,搜索之间的这个额外段点和位置将被解码和丢弃。在进行流复制或使用-noaccurate_seek时,它将被保留。当用作输出选项(在输出文件名之前)时,解码但丢弃输入,直到时间戳到达位置。
位置可以是以秒为单位,也可以是
hh:mm:ss[.xxx]
形式。
所以,你不会得到一个确切的起点,但是因为-t
停止"听"当指针达到指定的时间时,你不会得到统一的时间,但它们都会在你想要的时候结束。
答案 1 :(得分:2)
今天遇到同样的问题,使用以下命令:
ffmpeg -ss 00:00:55.25 -i input.mp4 -t 00:00:04.75 -c copy output.mp4
这始终为我提供持续时间关闭几秒钟的输出。 在 this explanation 之后,我将命令重新定义为:
ffmpeg -i input.mp4 -ss 00:00:55.25 -to 00:01:00.0 -c copy output.mp4
现在精度范围从 0 到 0.02 秒。