有没有办法将视频分割成指定长度的分段?即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. as3中的视频分割
- 2. 流式分割
- 3. 在多个分区中分割视频
- 4. 用ffmpeg解析分割视频
- 5. GStreamer分段视频
- 6. 视频文件即时分割
- 7. 将视频分割成帧/图像
- 8. 分割视频转换成在Java
- 9. FFmpeg:如何高效地分割视频?
- 10. 分割视频并保持运行
- 11. 将视频分割成小块
- 12. 如何分割YouTube视频ID?
- 13. FFmpeg视频分割时的帧丢失
- 14. Android:拍摄期间的分割视频
- 15. 如何分割OGX(视频)文件?
- 16. 跨多个N/W接口分割视频流
- 17. 将视频流MPEGTS(H264)分割为unix下的文件块
- 18. 分割使用boost ::字符串分割
- 19. 分割音频信号
- 20. 分割音频文件(WAV)
- 21. Java - Wav音频分割
- 22. 基于光流的分割
- 23. 如何将媒体分段器用于分割视频?
- 24. 使用python将视频文件分割成一组部分
- 25. C#中的图像分割(行分割和字符分割)
- 26. 使用OpenCV流视频,GStreamer
- 27. 视觉网页分割
- 28. MMDrawerController与分割视图
- 29. 在iPad中分割视图
- 30. Javascript分割屏幕视图
我甩的GStreamer和使用FFmpeg的库,而不是写了分割。不得不为此编写一个丑陋的C程序;-) – Saideira 2011-03-03 20:04:17