有没有办法将视频分割成指定长度的分段?即60分钟视频到12x5分钟。用gstreamer分割/分割视频流
2
A
回答
1
据我所知,你需要开发自己的“分割”。这与您创建HTTP Live流式文件所需的类似。可能有一个更简单的解决方案,但这里是我会做的:
你可以使用multifilesink下一个文件=缓冲区(或下一个文件标记,如果段不能适合一个相对较小的程序(在Python中)在记忆中)。
你需要编码或解复用器的输入流,和MUX流回来。当达到所需持续时间时,剪切关键帧上的多路复用流并推送聚合缓冲区(或标记虚假关键帧,例如,强制接收器以创建新文件)。重新初始化muxer(或附加muxer streamheader)以获取具有正确标题的文件,而不是单独播放(取决于muxer)。
1
gnonlin
和gnlfilesource
针对本作。您必须将视频转码为该过程的一部分,因为gstreamer没有特殊的支持来分割某些格式而无需转码。
对于如何从一个音频文件,使剪辑的例子见How do I use gstreamer to make an audio clip from a segment of a longer source?。
0
我能做到使用Perl用的GStreamer和GLib的绑定类似的东西。我的黑客滥用GStreamer Pipeline状态以重置文件链接的位置。我使用流源,因此在set_state('null')可接受之后重置为零行为。您需要管理源元素中的搜索位置以支持正确的分段。
my $g_pipeline = GStreamer::Pipeline->new('pipeline');
....
my $g_filesink = GStreamer::ElementFactory->make(filesink => "filesink");
$g_filesink->set(location => $file_name);
...
$g_pipeline->add(..., $g_filesink);
my $delay = 5000; # switch output file at this interval
my $timer = Glib::Timeout->add($delay,
sub {
$g_pipeline->set_state('null');
...
$g_filesink->set(location=> $next_file_name);
$g_pipeline->set_state('playing');
}
);
0
相关问题
- 1. 流式分割
- 2. 用ffmpeg解析分割视频
- 3. GStreamer分段视频
- 4. 如何分割OGX(视频)文件?
- 5. 如何分割YouTube视频ID?
- 6. 分割视频转换成在Java
- 7. 视频文件即时分割
- 8. FFmpeg:如何高效地分割视频?
- 9. 将视频流MPEGTS(H264)分割为unix下的文件块
- 10. 跨多个N/W接口分割视频流
- 11. 分割使用boost ::字符串分割
- 12. Java - Wav音频分割
- 13. 基于光流的分割
- 14. 如何将媒体分段器用于分割视频?
- 15. 使用python将视频文件分割成一组部分
- 16. C#中的图像分割(行分割和字符分割)
- 17. 视觉网页分割
- 18. 在J2ME中分割/分割文件
- 19. VB.NET - 分割成多个分割号码
- 20. DirectShow视频切割
- 21. 打开cv C++:如何分割视频几个部分?
- 22. Android将视频图片分割成部分
- 23. 用Matlab分割音频文件
- 24. Python:使用多分割分隔符分割文件
- 25. 分割使用TCL
- 26. 分割使用VB.net
- 27. 分割使用LINQ
- 28. 分割使用Ghostscript
- 29. 分割使用JavaScript
- 30. boost分割使用
我甩的GStreamer和使用FFmpeg的库,而不是写了分割。不得不为此编写一个丑陋的C程序;-) – Saideira 2011-03-03 20:04:17