jac*_*ook 5 ffmpeg audio recording
过去一个小时左右,我一直在尝试通过流中的桌面音频流式传输到 Twitch.tv。目前,我可以使用它来获取要在 Twitch 上显示的视频:
#! /bin/bash
INRES="1280x800" # input resolution
OUTRES="640x480" # Output resolution
FPS="30" # target FPS
QUAL="medium" # one of the many FFMPEG presets
STREAM_KEY=$(cat ~/.twitch_key)
ffmpeg \
-f x11grab -s $INRES -r "$FPS" -i :0.0 \
-f alsa -ac 2 -i pulse \
-vcodec libx264 -s $OUTRES -preset $QUAL \
-acodec libmp3lame -ar 44100 -threads 6 -qscale 3 -b 712000 -bufsize 512k \
-f flv "rtmp://live.justin.tv/app/$STREAM_KEY"
Run Code Online (Sandbox Code Playgroud)
我想要这样做的是与我的麦克风一起,我需要我的计算机正在播放的音频(例如来自 YouTube 视频的音频)上传到流中。
我也对其他选择持开放态度,但到目前为止我还没有找到任何选项。
(ALSA 方法有效,但音频很安静!)
\n\n在标题为:使用 ffmpeg 广播到 twitch.tv 的博客文章中找到了这两种方法。
\n\n首先像这样设置这些变量:
\n\nSIZE=\xe2\x80\x9d1600\xc3\x971200\xe2\x80\xb3\nBITRATE=\xe2\x80\x9d128k\xe2\x80\x9d\nFRAMERATE=\xe2\x80\x9d20\xe2\x80\xb3\nKEY=\xe2\x80\x9dyour key here\xe2\x80\x9d\n
Run Code Online (Sandbox Code Playgroud)\n\n然后将其用于 ALSA:
\n\n$ ffmpeg \\\n -f x11grab -s $SIZE -r $FRAMERATE -i :0.0 \\\n -f alsa -ac 2 -i hw:0,0 -vb $BITRATE -vcodec libx264 \\\n -threads 0 -acodec libmp3lame -ab 128k -ar 22050 \\\n -f flv \xe2\x80\x9crtmp://live.justin.tv/app/$KEY\xe2\x80\x9d\n
Run Code Online (Sandbox Code Playgroud)\n\n或者如果使用 OSS:
\n\n$ ffmpeg \\\n -f x11grab -s $SIZE -r $FRAMERATE -i :0.0 \\\n -f oss -i /dev/dsp -vb $BITRATE -vcodec libx264 \\\n -threads 0 -acodec libmp3lame -ab 128k -ar 22050 \\\n -f flv \xe2\x80\x9crtmp://live.justin.tv/app/$KEY\xe2\x80\x9d\n
Run Code Online (Sandbox Code Playgroud)\n\n我还在以下页面上找到了有关如何设置此功能的更多信息:
\n\n\n\n收到此错误:未知的输入格式:\'pulse\'
\n\n我在 ffmpeg wiki 上找到了这个。它位于标题为“流媒体指南”的页面上。
\n\n$ ffmpeg \\\n -f x11grab -s $INRES -r $FPS -i :0.0 \\\n -f pulse -ac 2 -i default -c:v libx264 -preset $QUAL \\\n -pix_fmt yuv420p -s $OUTRES -c:a libmp3lame -ab 96k -ar 22050 \\\n -threads 0 -f flv "rtmp://live.justin.tv/app/$STREAM_KEY"\n
Run Code Online (Sandbox Code Playgroud)\n