有沒有辦法將視頻分割成指定長度的分段?即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