我正在构建一个WP7应用程序来拍照并使用RTMP将图像上传到第三方服务器.不幸的是,我找不到任何合理的Windows Phone 7 RTMP客户端实现.
我已经下载了WebOrb,但似乎WPO库的WebOrb不支持RTMP.此外,我无法将Silverlight DLL集成到我的WP7应用程序中.
我也查看了FluorineFX,但它也没有WP7的版本.
您能否建议另一个在WP7上提供RTMP的库,或者让上述库与WP7一起工作的方法?
我试图理解并确切地指出何时在flex/flash中使用渐进式下载与rtmp.似乎主要的一点是,rtmp不提供http,而渐进式下载是.由于它不是rtmp,因此资源受到保护,因为无法从swf外部连接到rtmp服务器.
即使用户可以看到该目标代码并且可以找出位置
<object data="http://media.example.com/jw-player/player.swf" >
<param value="streamer=rtmp://sub.example.com/video
&file=1330/title/folder2/theflvresource.flv
&id=FlvPlayer" name="flashvars">
</object>
Run Code Online (Sandbox Code Playgroud)
他们无法连接到rtmp.所以当你想要保护资源时,rtmp似乎更有用吗?这就是它的全部吗?
如何使用librtmp库发布流?我阅读了librtmp手册页,并且为了发布,使用了RTMP_Write().
我这样做.
//Code
//Init RTMP code
RTMP *r;
char uri[]="rtmp://localhost:1935/live/desktop";
r= RTMP_Alloc();
RTMP_Init(r);
RTMP_SetupURL(r, (char*)uri);
RTMP_EnableWrite(r);
RTMP_Connect(r, NULL);
RTMP_ConnectStream(r,0);
Run Code Online (Sandbox Code Playgroud)
然后响应来自服务器的ping /其他消息,我使用一个线程响应如下:
//Thread
While (ThreadIsRunning && RTMP_IsConnected(r) && RTMP_ReadPacket(r, &packet))
{
if (RTMPPacket_IsReady(&packet))
{
if (!packet.m_nBodySize)
continue;
RTMP_ClientPacket(r, &packet); //This takes care of handling ping/other messages
RTMPPacket_Free(&packet);
}
}
Run Code Online (Sandbox Code Playgroud)
在此之后,我被困在如何使用RTMP_Write()将文件发布到Wowza媒体服务器?
序幕.我想问一下,如何在网络上创建桌面屏幕共享解决方案,但后来发现有很多这样的问题.用几个字符串来回答这个任务非常复杂.所以我花了一些时间试图找到合适的解决方案.似乎我找到了一个 - 只是想分享它.
初始任务:我们有一个Web应用程序.我们需要找到一种方式让用户与任何其他用户共享他的屏幕.实现于:Win 7 x64,Java,Wowza-3.5.0.
我们怎样才能做到这一点?
我正在尝试使用开源技术在heroku上设置音频聊天应用程序.我准备使用PHP,Node.js,Python或Ruby.我怎样才能在Heroku平台上运行RTMP服务器.我在网上找不到任何相关文件.
在heroku上设置音频聊天还有其他选择吗?
PS:第一次gstreamer用户在这里.:)
我试图从使用gstreamer连接到beaglebone的logitech c920网络摄像头流式传输视频到nginx服务器.但不知何故,rtmpsink对我失败了.但是,随着filesink能够将视频保存在beaglebone上.虽然我仍然有一些帧丢失问题而没有音频,但我希望流媒体部分能够先工作.Im使用的命令是
GST_DEBUG=4 GST_DEBUG_FILE=gst2.log gst-launch-1.0 -v -e uvch264src device=/dev/video0 name=src auto-start=true average-bitrate=5000000 iframe-period=33 src.vidsrc ! queue ! video/x-h264,width=1920,height=1080,framerate=30/1 ! h264parse ! flvmux ! rtmpsink location="rtmp://192.168.1.104:1935/hls/movie"
Run Code Online (Sandbox Code Playgroud)
我的调试输出在这里. 要旨
gstreamer在5秒内退出.
我验证了流媒体服务器的工作原理.但是从客户端来看,gstreamer并没有给我任何错误信息.或者我不知道如何正确调试它.
我坚持这个问题持续了这么多天.任何帮助,将不胜感激.
谢谢.
:我能够使用ffmpeg将本地文件发送到我的rtmp服务器,并且服务器正在按预期处理它.
ffmpeg -re -i /Users/r3dsm0k3/10.mp4 -vprofile baseline -ar 44100 -ac 1 -c copy -f flv rtmp://192.168.1.4:1935/hls/example
Run Code Online (Sandbox Code Playgroud)
用fakesink试过gstreamer并没有任何错误.
也试过v4l2src,没有运气.
我已经在 DigitalOcean 托管的 ubuntu linux 中设置了 Nginx RTMP。目前在我的桌面上以 localhost 模式运行我的 laravel Web 应用程序。直播似乎一切正常。我正在使用本地主机 JWPlayer 和开放广播软件(OBS)进行实时流媒体测试。有用。但是每当我需要将流媒体视频录制到linux目录(/var/www)时,在我点击OBS中的停止流媒体按钮后,似乎什么也没有发生,也没有任何错误。
我不知道录音是如何进行的,我尝试录制手册,上面有链接。我点击开始录制,它出现 /var/rec/{mystream}.flv
此手动版本的录制链接嵌入在 Laravel 网站中:
rtmp {
server {
listen 1935;
chunk_size 4096;
application live {
live on;
recorder rec1 {
record all manual;
record_suffix all.flv;
record_path /var/rec;
record_unique on;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
开始录音:
<a href="http://server.com/control/record/start?app=live&name=key&rec=rec1" target="_blank">Start rec1</a>
Run Code Online (Sandbox Code Playgroud)
http 的 nginx 配置:
access_log logs/rtmp_access.log;
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"'; …Run Code Online (Sandbox Code Playgroud) 我正在撰写关于直播的论文.我用的ffmpeg,与RTMP模块和dash.js从ngix服务器短跑行业.我通过ffmpeg开始流向服务器,并且通过破折号播放,播放器运行良好,但是存在一些问题.
如果mpd-dash播放列表仍然具有块t = 0,则播放器仅播放,因此每当用户请求播放器和*.mpd更新时,块t = 0播放器都不会运行.
我将*.mpd文件上传到Dash Validator并收到错误:"Schematron验证未成功 - DASH无效!".但是玩家是由nginx生成的 - rtmp模块而不是我.
在搜索了一些论坛后,我得到了一些信息,nginx-rtmp模块生成错误的短划线播放列表*.mpd Nginx rtmp模块-bug,可能是该bug被修复并合并到github中的master(我认为是Mered - 报告).但我尝试下载最新的nginx和rtmp模块,播放器也播放不正确.
如果我玩2年前的dash.all.js版本:视频只播放好(播放结束)如果播放列表*.mpd中存在chunk t = 0,或播放器不播放(播放中间播放)如果我玩dash.all.js持续版本:视频播放并很快停止播放或循环播放.
我真的需要一些帮助,我的截止日期即将到来.
这是我的nginx配置(主配置):
rtmp {
server {
listen 1935;
ping 30s;
notify_method get;
chunk_size 4000;
allow play all;
application myapp {
live on;
dash on;
dash_path /tmp/dash;
hls on;
hls_cleanup on;
hls_sync 100ms;
hls_fragment 2s;
hls_path /tmp/hls;
allow play all;
}
}
}
Run Code Online (Sandbox Code Playgroud)
和其他一些配置:
location /hls {
# Serve HLS fragments …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Nginx-rtmp建立流媒体服务.配置文件是
rtmp {
server {
listen 1935;
chunk_size 4000;
# video on demand for flv files
application vod {
play /var/flvs;
}
# video on demand for mp4 files
application vod2 {
play /var/mp4s;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我希望流媒体服务通过http而不是rtmp.最终我们希望客户端使用https连接到代理服务器,然后代理服务器使用rtmp与流服务器通信.我正在使用HTTP进行测试.所以我使用以下配置设置了HAProxy:
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin
stats timeout 30s
user haproxy
group haproxy
daemon
#tune.ssl.default-dh-param 2048
# Default SSL material locations
ca-base /etc/ssl/certs
crt-base /etc/ssl/private
# Default ciphers to use on …Run Code Online (Sandbox Code Playgroud) 我正在使用 ffmpeg 对来自本地 nginx rtmp 服务器的流进行转码,并将转码后的媒体发送回同一本地 rtmp 服务器。当流离线时,ffmpeg 保持活动状态。当流再次开始时,ffmpeg 会接手转码工作。
我希望 ffmpeg 在输入 rtmp 流停止时退出,但我找不到配置它来执行此操作。我浏览了手册页和在线文档。
为了完整起见,这些是我当前向 ffmpeg 提供的参数:
ffmpeg -i 'rtmp://localhost/live/ijsbeer' -s '1280x720' -vcodec 'libx264' -preset 'veryfast' -crf '25' -maxrate '2000k' -bufsize '1000.0k' -force_key_frames '0: 00:02' -max_mushing_queue_size '4096' -acodec '复制' -copyts -copytb '0' -f 'flv' 'rtmp://localhost/live/ijsbeer_720p'
让 ffmpeg 退出本身解决了我的两个问题。首先,当流式传输到 rtmp 服务器的编码器(OBS)重新启动时,ffmpeg 有时会遇到非单调的 DTS 问题。其次,我想实现一个基本的监控系统来通知我转码器中的问题。当输入流停止时使 ffmpeg 退出似乎是确定 ffmpeg 是否正在工作的最可靠方法。解析 stderr/stdout 并不可靠,因为没有明确的输出格式。
转码时我收到这些常规 stderr 行:
帧= 241 fps= 30 q=30.0 大小= 38kB 时间=00:00:09.74 比特率= 32.0kbits/s 速度= 1.2x
当我停止源流时会暂停。没有日志输出表明源流已退出。