我有使用gstreamer錄製流的問題。 我必須分別寫入音頻和視頻,並在信號到達時切入。我有正確的工作視頻,但仍然有wav文件的問題。 即使gst-launch中的簡單管道也無法正常工作。我有波形文件,我試圖用multifilesink拆分它:
gst-launch filesrc location=test.wav ! multifilesink location=test2%d.wav next-file=4 max-file-size=512000
不過,雖然與TS文件相同的管道正在確定最終的WAV文件被損壞:
gst-launch-1.0 filesrc location=test.ts ! multifilesink location=test2%d.ts next-file=4 max-file-size=2000000
Gstreamer multifilesink wav文件拆分
2
A
回答
1
multifilesink
不知道什麼的數據分裂,所以它不會爲每個它寫入的文件添加標題。
您的.ts
文件工作的原因是因爲它被設計成流式格式,其中每個單獨的數據包將被獨立處理。因此,只要有人喜歡,就可以「調諧」到流中。解碼器將簡單地尋找它找到的下一個分組頭,並在那裏開始解碼文件起始處只有一個標題,當你將文件分割成多個文件時,這些標題就會丟失(這時文件只包含原始的PCM數據)
要解決這個問題,你可以..
- 手動將
.wav
標頭從第一個文件複製到所有其他o nes - 使用支持PCM文件的程序,並直接與它們一起工作或轉換文件(當您打開這些文件時,您必須手動設置通道數,採樣率和比特率)。
使用另一種面向流的文件格式,如
.mp3
,它來自與.ts相同的編解碼器系列,並且還爲每個幀使用單獨的4字節標題(請注意,MP3是有損文件格式)。
一個例子管道是:gst-launch filesrc location=test.wav ! wavparse ! lame ! multifilesink location=test%d.mp3 next-file=4 max-file-size=100000
+0
我想要有未壓縮的文件,所以我不能使用mp3。 複製標題也不是個好主意,因爲然後文件不知道它們有多長。有什麼辦法可以將一個wav文件分割爲1分鐘部分使用gstreamer? – user3921796 2014-09-05 07:28:19
0
如果你願意使用一些腳本,以及高達拆分任務分成不同的通話gst-launch
,我可以爲您提供了另一種可能的方法來解決你的小問題:
以下腳本是Linux bash腳本。您應該能夠把這一到Windows批處理腳本(或C或Python應用程序,如果你想):
#!/bin/bash -e
# First write the buffer stream to .buff files (annotated using GStreamer's GDP format)
gst-launch -e filesrc location=test.wav ! wavparse ! gdppay ! multifilesink next-file=4 max-file-size=1000000 location=foo%05d.buff
# use the following instead for any other source (e.g. internet radio streams)
#gst-launch -e uridecodebin uri=http://url.to/stream ! gdppay ! multifilesink next-file=4 max-file-size=1000000 location=foo%05d.buff
# After we're done, convert each of the resulting files to proper .wav files with headers
for file in *.buff; do
tgtFile="$(echo "$file"|sed 's/.buff$/.wav/')"
gst-launch-0.10 filesrc "location=$file" ! gdpdepay ! wavenc ! filesink "location=$tgtFile"
done
# Uncomment the following line to remove the .buff files here, but to avoid accidentally
# deleting stuff we haven't properly converted if something went wrong, I'm not gonna do that now.
#rm *.buff
我們什麼腳本的作用:
- 首先我們要使用
multifilesink
創建一組.buff
文件,每個文件的大小均小於1MB(gdppay
將使用其大寫標註每個緩衝區;-e
標誌gst-launch
將導致它在觸發EOS時提前終止進程,這對於您閱讀和解碼互聯網流) for
循環中的第二個gst-launch
調用採用.buff
文件之一,使用gdpdepay
(並去除它們)解析GDP標頭,添加WAV標頭並將結果寫入.wav
文件。
希望這是一個您可以接受的解決方案,因爲我懷疑有一種方法可以用一個gst-launch
運行。
相關問題
- 1. 拆分python中的wav文件
- 2. GStreamer:appsrc&multifilesink - 滯後輸出
- 3. 在WinForms應用程序中拆分wmv/wav文件
- 4. 嘗試將Wav文件拆分爲兩塊SoX
- 5. 分割音頻文件(WAV)
- 6. 無法使用gstreamer播放.wav文件apis
- 7. ROS pocketsphinx + gstreamer將語音記錄到wav文件
- 8. 拆分WIX文件
- 9. 拆分HTML文件
- 10. 拆分TIFF文件
- 11. 拆分csv文件
- 12. NLog文件拆分
- 13. 拆分csv文件
- 14. Unix拆分功能將文件拆分成多個文件:拆分記錄
- 15. 將wav文件轉換爲wav文件
- 16. 拆分文本文件
- 17. 拆分文本文件
- 18. 我如何將WAV分成更小的WAV文件?
- 19. WAV文件MediaPlayer
- 20. Wav文件頭
- 21. 玩.wav文件
- 22. 爲WAV文件
- 23. wav文件manupalation
- 24. 我有.wav文件。我想將該文件分解成部分
- 25. 拆分CSV文件爲文本文件
- 26. 將wav文件分割成片段
- 27. WAV文件分割器工具
- 28. 在WAV文件中分析聲音
- 29. WAV文件分析C(libsndfile,fftw3)
- 30. GStreamer和PLS文件
使用gst-launch-1.0和gst-launch-0.10 – user3921796 2014-09-04 11:06:54
沒有區別嗨,你能解決這個問題嗎? – 2016-02-26 14:46:14