Puredyne/流媒体音频和视频
待办事项
待办事项
运行一次
mkfifo stream.ogv
然后要流式传输,运行这两行
dvgrab - | ffmpeg2theora -f dv -x 352 -y 288 -v 7 -o stream.ogv - & cat stream.ogv | oggfwd icecast.example.org 8000 password /stream.ogv
如果编码速度比实时速度慢,并且你的 CPU 内核已满载,请调整大小和质量(-v)以降低。如果你的 CPU 负载低于 50% 并且视频流畅但难看,请将它们提高。如果编码跟不上实时速度,则你的流式传输会中断。观察 Shell 中的第二个计时器 - 它们都应该几乎处于相同的值。
待办事项
你可以在线流式传输你的视频:FreeJ 使用 Ogg/Theora 编解码器进行编码并广播到 Icecast 服务器。
在流式传输音频通道时,你还需要运行一个 Jack 守护进程并将它连接到 FreeJ 输出。
在流式传输期间,还可以实时保存视频的本地副本。以下是一个脚本示例
<syntaxhighlight lang="text"> // 音频输入通过 Jack 从运行的其他应用程序获取
// 端口名称 缓冲区大小 采样率
audio = new AudioJack("alsaplayer", 2048, 44100);
// 酌情调整以下值,请参阅 Jack 文档
// 创建一个视频编码器对象
// 值 1-100 视频质量 视频比特率 音频质量 音频比特率
encoder = new VideoEncoder(10, 64000, 0, 24000);
// 将音频通道添加到编码的视频中
encoder.add_audio(audio);
// 配置编码器以通过 Icecast 服务器流式传输
encoder.stream_host("giss.tv");
encoder.stream_port(8000);
encoder.stream_title("testing new freej");
encoder.stream_username("source");
encoder.stream_password("2t645");
encoder.stream_mountpoint("freej-test.ogg");
// 在运行的 FreeJ 引擎上注册编码器
register_encoder(encoder);
// 开始网络流式传输
encoder.start_stream();
// 将流式传输记录到本地文件
encoder.start_filesave('Video/freej-test.ogg');
</syntaxhighlight lang="text">
我们可以将上面的代码粘贴到一个脚本中,并使用 freej -j stream.js 运行它。
除了调整此脚本以适应各种帐户外,还可以将它作为更大型 FreeJ 脚本的一部分来包含,以将多个源与文本和效果混合,甚至可以通过 MIDI、OSC 或操纵杆来控制它。
用于仅声音队列
gst-launch-0.10 alsasrc ! audio/x-raw-int,rate=44100,channels=2,depth=16 ! queue ! audioconvert ! vorbisenc quality=0.8 ! oggmux ! tee name=tt \ ! queue ! filesink location=artsbirthday-day3-$datenum.ogg tt. ! queue ! shout2send ip=x.x.x.x port=8000 password=mypass mount=mount.ogg
用于火线视频
gst-launch-0.10 videomixer name=mix ! ffmpegcolorspace ! video/x-raw-yuv ! queue ! theoraenc quality=32 name=venc \ oggmux name=mux ! tee name=tt ! queue ! filesink location=streamfile.ogg \ tt. ! queue ! shout2send mount=/stream.ogg port=8000 password=xxx ip=xxx \ alsasrc ! queue ! audioconvert ! vorbisenc name=aenc aenc. ! mux. \ venc. ! mux. \ dv1394src do-timestamp=true typefind=true ! queue ! dvdemux ! dvdec ! queue ! videorate ! videoscale ! ffmpegcolorspace ! video/x-raw-yuv, width=352, height=288,framerate=15/1 ! videobox left=0 top=0 border-alpha=0 ! mix.
替代方法
gst-launch-0.10 v4l2src device=/dev/video0 ! video/x-raw-yuv,width=320,height=240 ! queue ! videorate ! video/x-raw-yuv,framerate=25/2 \ ! videoscale ! video/x-raw-yuv,width=320,height=240 ! ffmpegcolorspace ! tee name=tscreen ! queue ! autovideosink tscreen. ! queue \ ! theoraenc quality=16 ! queue ! oggmux name=mux osssrc device=/dev/dsp ! audio/x-raw-int,rate=22050,channels=1 ! queue ! audioconvert z \ ! vorbisenc quality=0.2 ! queue ! mux. mux. ! queue ! shout2send ip=giss.tv port=8000 password=PASS mount=YOURMOUNTPOINT.ogg
GISS 是一个由志愿者运营的非商业性网络,使用自由软件创建,用于免费媒体。 http://giss.tv