2016-06-18 90 views
0

我正在使用VLCJ,我希望保存使用mediaPlayer.playMedia()播放的視頻剪輯;到我的桌面。我知道這可以通過使用:sout字符串設置媒體選項來完成,但我不知道要設置哪些選項,並且無法理解Web上的示例選項字符串。有人可以幫助解釋以下內容:sout選項字符串?VLCJ保存媒體播放器捕獲

String[] options = {":sout=#transcode{vcodec=mp4v,vb=4096,scale=1,acodec=mpga,ab=128,channels=2,samplerate=44100}:duplicate{dst=file{dst=" + fileName + "},dst=display}", ":input-slave=alsa://hw:0,0"}; 

我只需要一個選項陣列,它使用fileName目標創建一個mp4視頻。這些選項對我來說是失敗/錯誤的。通過使用這些選項

String[] options = {":sout=#transcode{vcodec=mp1v,vb=2048,scale=1,acodec=mpga,ab=128,channels=2,samplerate=44100}:duplicate{dst=file{mux=mpeg1,dst=" + fileName + "},dst=display}", ":input-slave=dshow://hw:0,0" }; 
>丟棄幀

- 5秒以上遲視頻的:

另外,VLCJ似乎滴下噸幀的與該錯誤

avcodec中解碼器錯誤

+0

這些選項與vlcj完全沒有關係,相反它們是VLC流/轉碼選項,所以我建議將焦點放在VLC文檔上。可能你想保存原始流而不是轉碼。 – caprica

+0

唉,我會怎麼做。我正在考慮這樣做,而不是整個過程。我對VLC非常陌生,做原始轉儲是我的第一個意圖。 –

回答

1

要保存原始流,請在播放媒體時使用與以下內容類似的媒體選項:

String mrl = "your-streaming-mrl"; 
String[] opts = {"sout=#duplicate{dst=std{access=file,mux=raw,dst=output-file.ext}}"}; 

顯然,您可以用適當的替換「your-streaming-mrl」和「output-file.ext」。

然後:

mediaPlayer.playMedia(mrl, opts); 

您將需要等待(聽)用於媒體播放器「已完成」事件已保存的文件之前已準備就緒。

在保存的文件準備就緒之前,您可能還需要在媒體播放器上明確調用release()

+0

無論如何說,有原始轉儲文件,但它正在播放的主要文件不會完成,因爲它不斷被流式傳輸。現在第二個文件只是腐敗= [儘管感謝一堆! –

+0

我想如果你停止媒體播放器,等待停止的事件,然後釋放媒體播放器,你應該沒問題。但我不是100%確定的。 – caprica