我正在使用這個腳本:http://www.thegameengine.org/miscellaneous/streaming-twitch-tv-ubuntu/串流至 Twitch。它可以工作,但我不想傳輸我的麥克風,只想傳輸電腦音訊。我應該如何更改腳本來實現這一目標?
答案1
選擇電腦音訊
脈衝音頻
這可以透過 PulseAudio 和pavucontrol
.從HOWTO:在 Linux 上正確的截圖:
安裝
pavucontrol
。開始錄音ffmpeg
。開始pavucontrol
。轉到“錄音”選項卡,您會發現ffmpeg
那裡列出了。將音訊擷取從“內部音訊模擬立體聲”變更為“內部音訊模擬立體聲監視器”。現在它應該記錄系統和應用程式音訊而不是麥克風。該設定將被記住。下次您想要使用 進行錄製時
ffmpeg
,它將自動開始錄製系統音訊。如果您想恢復此狀態,請pavucontrol
再次使用以變更回麥克風輸入。
阿薩斯
或者,如果您的音訊系統支援通常標記為的環回設備,則 ALSA 可以擷取系統音訊:立體聲混音,混合波出,單聲道混合, 或者你聽到什麼。檢查alsamixer
你是否有其中之一,但是如今硬體環回並不常見。然後參考FFmpeg Wiki:使用 ALSA 捕捉音訊如果您的系統支援此功能,請取得正確的語法。
否則我相信你可以使用 ALSA 進行軟體環回,但我可能是不正確的並且沒有這方面的經驗。
蹩腳的腳本
ffmpeg
那個可怕的、重複出現的腳本中的命令有一些問題:
-preset
應該使用而不是-vpre
-qscale
被 libx264 忽略(使用-crf
或-b:v
)- 圖片組未設定(使用
-g
) - 應使用 VBV(使用
-maxrate
和-bufsize
) - 輸出可能不使用相容的色度子取樣方案(使用
-pix_fmt yuv420p
) - x11grab 輸入應該使用
-framerate
,而不是-r
-threads 6
看起來像是一個任意數字,而且並非每個人都使用相同的硬體。您應該使用預設值(透過刪除-threads
,但它是“貪婪的”),或者設定一個適當的值,允許您以令人滿意的速率進行編碼,但仍然允許足夠的電量來執行您正在錄製的其他內容。
該命令應該是這樣的:
ffmpeg \
-f alsa -ac 2 -i "$INAUD" \
-f x11grab -video_size "$INRES" -framerate "$FPS" -i :0.0 \
-vcodec libx264 -s "$OUTRES" -preset "$QUAL" -maxrate 1000k -bufsize 2000k -g 50 -pix_fmt yuv420p \
-acodec libmp3lame -ar 44100 -b:a 128k \
-f flv "$STREAM_URL"
筆記:不要盲目地使用我的範例值-maxrate
、-bufsize
、-g
和-b:a
。您必須根據您的需求進行調整,如中所述使用 FFmpeg 對串流媒體網站進行編碼。另請參閱FFmpeg H.264 影片編碼指南。