2016-08-10 34 views
1
  • 我想將FLAC文件轉換成MP3(和Vorbis,第二次)文件。如何在PLAYING狀態下更改Gstreamer中音頻編碼的比特率?

  • 然後,這些MP3/Vorbis數據流將被原始傳輸到解碼它們的第二個設備。

  • 根據傳輸的質量,我希望能夠在運行中改變比特率。

  • 改變必須是無間隙的(因此標題中的「處於播放狀態」)。

  • 具體的編碼器是lamemp3encvorbisenc(並且不能改變)。


據我所知,改變比特率,而打實際上是不可能的,這些編解碼器。

但我想有一些乾淨而簡單的方法來改變比特率,而不會在流中引入任何空隙:我想了解其中的任何一個。

(注:我沒有寫任何,不所有,我不要求爲「最佳」的方式,我不要求進行審查,我只想一些作品。)

回答

2

通讀this ..

你會:

  • 前lamemp3enc塊元素
  • 沖洗編碼幀進入隊列發送到瘸和丟棄EOS EOS出來時,跛腳
  • 然後設置lamemp3enc進入空狀態
  • 變化
  • 設置瘸子播放或暫停的參數 - 這將與新再次預卷它數據採用新的比特率
  • 檢查時瘸是玩,然後你知道的一切工作
  • 不應該有差距隊列中有很多它你在發送轉發舊緩衝區正在做的女巫

你可以用上面的鏈接的例子來激發自己。但是你沒有做任何刪除和添加新的元素。不要忘記將它設置爲NULL狀態,因爲它會放棄所有的內部狀態(很有希望如果它沒有越野車)。那麼你只需更改參數g_object_set ...

另外我從來沒有這樣做,所以你也可以在freenode的#gstreamer的IRC上詢問如果你卡住或不確定。

HTH

+0

哦,那是好多了:目前我使用的是夫妻GstInputSelector'和'GstOutputSelector'的'但是這是在很多層面上有問題......這竟然是比我想象的要簡單:我不是用於處理探針,但它們非常強大!謝謝! – JohnW