如何从h.264视频流中获取帧率和比特率?我可以从 SPS NAL 单元获取宽度和高度,但不能获取帧速率。
我正在尝试从本地目录获取视频文件,启用来自服务器的流并从客户端捕获这些帧。我使用了以下管道:
服务器端:
gst-launch -v filesrc location=/home/gokul/Videos/Econ_TestVideo/radioactive.mp4 ! qtdemux ! rtpmp4vpay ! udpsink host=192.168.7.61 port=5000 sync=true
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
/GstPipeline:pipeline0/GstRtpMP4VPay:rtpmp4vpay0.GstPad:src: caps = application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)MP4V-ES, profile-level-id=(string)1, config=(string)000001b001000001b58913000001000000012000c48d8800f528045a1443000001b24c61766335332e33352e30, payload=(int)96, ssrc=(uint)3003638799, clock-base=(uint)1542273545, seqnum-base=(uint)49176
/GstPipeline:pipeline0/GstRtpMP4VPay:rtpmp4vpay0.GstPad:sink: caps = video/mpeg, mpegversion=(int)4, systemstream=(boolean)false, profile=(string)simple, level=(string)1, codec_data=(buffer)000001b001000001b58913000001000000012000c48d8800f528045a1443000001b24c61766335332e33352e30, width=(int)1280, height=(int)720, framerate=(fraction)91/3, pixel-aspect-ratio=(fraction)1/1
/GstPipeline:pipeline0/GstRtpMP4VPay:rtpmp4vpay0: timestamp = 1542273545
/GstPipeline:pipeline0/GstRtpMP4VPay:rtpmp4vpay0: seqnum = 49176
/GstPipeline:pipeline0/GstUDPSink:udpsink0.GstPad:sink: caps = application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)MP4V-ES, profile-level-id=(string)1, config=(string)000001b001000001b58913000001000000012000c48d8800f528045a1443000001b24c61766335332e33352e30, payload=(int)96, ssrc=(uint)3003638799, clock-base=(uint)1542273545, seqnum-base=(uint)49176
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ... …Run Code Online (Sandbox Code Playgroud) 我知道这个主题并不容易,但我正在寻找一个 Java 类来将 HLS 流从服务器发送到客户端。
我生成的文件越来越大:
out.m3u8
out0.ts
out1.ts
out2.ts
out3.ts
out4.ts
out5.ts
out6.ts
Run Code Online (Sandbox Code Playgroud)
这是使用 ffmpeg 从原始来源生成的:
ffmpeg -i http://sourceurl.com:9981/stream/channel/1232131 out.m3u8
Run Code Online (Sandbox Code Playgroud)
我可以使用 VLC 播放它。
不知何故,我需要将其直播给客户。
在这一点上,我并不真正关心不同的比特率,我只想在移动浏览器和桌面浏览器上进行实时流传输。
我找到了这个类:
https://github.com/Red5/red5-hls-plugin/blob/master/plugin/src/main/java/org/red5/stream/http/servlet/PlayList.java
Run Code Online (Sandbox Code Playgroud)
这可能会做类似的事情。
我已将 hls.js 引入我的应用程序,希望将其用于桌面。
不过,HLS 现在应该可以在没有 hls.js 的情况下运行 IOS 设备。
应如何从服务器提供 HLS 内容?很难找到任何好的、简单的例子来做到这一点。
有人知道做到这一点所需的步骤吗?
我对 Wowza 和 Red5 进行了一些研究,但不确定他们在这个阶段可以为我提供什么,并且仅仅为了提供一些文件而设置似乎过于复杂。但请向我解释为什么情况并非如此。
我是加密媒体扩展的新手。有人有加密媒体扩展示例或任何其他用于在浏览器中播放视频的链接吗?
请帮我!我在https://github.com/pchab/AndroidRTC中使用了这个示例,将视频和音频从 Android 设备流式传输到其他 Android 设备。在这个示例中,他们使用了 2 个库:libjingle_peerConnection 和 SocketIo 客户端,但我不这样做知道如何将流数据保存为 h.264 格式吗?
我在最近的一次市议会会议上发言了几分钟。我想下载视频,以便抓取我的视频部分并将其发布到社交媒体。该市使用一些名为 Granicus 的提供商。这是网址:
有人能帮帮我吗?我尝试下载 VLC,但无法打开流。
我正在尝试编写一个集成测试,该测试实际上需要 RTMP 流式传输到第 3 方服务。如何使用ffmpeg命令生成RTMP测试流?似乎是正确的答案,但我无法让它发挥作用。
作为基线,无需 RTMP 即可ffmpeg -f lavfi -i testsrc -t 30 -pix_fmt yuv420p test.mp4工作。
ffmpeg -f lavfi -i testsrc -t 30 -pix_fmt yuv420p -f flv rtmp://mylocation给我错误rtmp://mylocation: Input/output error
我应该注意该 URL 是有效的,否则我会收到一条错误消息,指出无法打开连接。
我也尝试过ffmpeg -f lavfi -i testsrc -pix_fmt yuv420p -f flv rtmp://mylocatiom。我读过,如果你不提供时间,它会永远持续下去,并认为我可能需要它来实现 RTMP 流。我遇到了同样的错误。
这是上次尝试的完整输出,添加了下面 @Gyan 建议的参数,以及详细的日志记录。
ffmpeg -loglevel verbose -f lavfi -i testsrc -pix_fmt yuv420p -f flv -c:v libx264 -g 50 rtmp://myhost:1935/identifier
ffmpeg version 4.1 Copyright (c) 2000-2018 the …Run Code Online (Sandbox Code Playgroud) 我已经用 spring 消息构建了 WebSocket 聊天室。
现在我想建立像 Twitch 这样的流媒体网站。我在直播上搜索了很多方法。他们总是提供Andriod的框架。
首先,我想使用二进制来传输我的流。
但我担心如果连接太多我的流会崩溃。
所以我去了 youtube 和 twitch.tv 我看到 twitch 使用 m3u8 碎片并使用 WebSocket 获取信息并使用 get 或 option 获取 m3u8 文件来制作视频。
springMVC可以像DFS一样构建吗?
或者我也需要阅读一些API手册?
有人可以直接告诉我如何建立一个流媒体网站吗?
MP4文件(实际上是使用MP4格式的HLS流)包含AVC格式的H.264流:[NALU length][NALU data]. H.264 解码器需要附件 B 格式:[startcode][NALU data]. 一般来说,起始码模拟可以以AVC格式发生(例如0x00000001可以发生在编码数据内部)。这是否意味着 MP4 文件格式也可以包含带有起始码仿真的 H.264 NALU?还是应该在封装成 MP4 之前应用仿真预防?
我有一个应用程序需要从我的帐户播放 Google Drive 视频,我正在使用这个webview_flutter插件也尝试过flutter_webview_plugin,缩略图出现,但当我点击播放时,我收到以下错误:
String url = 'https://drive.google.com/file/d/1O8WF2MsdyoKpQZE2973IFPRpqwKUjm_q/preview';
WebView(
onWebViewCreated: (WebViewController controller){
webViewController = controller;
},
initialUrl: url,
javascriptMode: JavascriptMode.unrestricted,
initialMediaPlaybackPolicy: AutoMediaPlaybackPolicy.always_allow,
),
Run Code Online (Sandbox Code Playgroud)
错误:
"The deviceorientation events are blocked by feature policy. See https://github.com/WICG/feature-policy/blo
b/master/features.md#sensor-features", source: https://youtube.googleapis.com/s/player/64dddad9/player_ias.vflset/pt_BR/base.js (263)
Run Code Online (Sandbox Code Playgroud)
第二次点击播放时:
I/chromium(29212): [INFO:CONSOLE(1472)] "Uncaught (in promise) Error: Untrusted URL: https://youtube.googleapis.com/videoplayback?expire=158836583
1&ei=x1GsXtyWNuzPj-8Px_eH2Aw&ip=2804:431:c7da:c52b:854e:e83e:e7c5:eb3e&cp=QVNNWkRfVFhRQlhOOk5mQ0FhT0J5Y0k2T3ZDdjJLa0UzQVRiaHNoQlVHeXpjV3BtYW9YT2Rk
YUM&id=eb79141269cc6ad3&itag=18&source=webdrive&requiressl=yes&mh=F-&mm=32&mn=sn-bg0eznll&ms=su&mv=m&mvi=4&pl=47&ttl=transient&susc=dr&driveid=1O8
WF2MsdyoKpQZE2973IFPRpqwKUjm_q&app=explorer&mime=video/mp4&dur=2.043&lmt=1551969798109476&mt=1588351334&sparams=expire,ei,ip,cp,id,itag,source,req
uiressl,ttl,susc,driveid,app,mime,dur,lmt&sig=AOq0QJ8wRAIgEzxYGpS8RI0CRVPdZrMxdDGfkYfCezdOkiJ7iUcl5XMCIHiDsmbGel8tWT6XIU8dWdfjLJWdOlI_WHNtDNwYszU9
&lsparams=mh,mm,mn,ms,mv,mvi,pl&lsig=AG3C_xAwRAIgTq3W38roufwBwSPXe4fxB25kANk3s42N5x2oBvVWonoCIDaYJVrPpmNzcoU6q4bqogHP6W-Mw4p_5CRrwh59kZM4&cpn=bCev
241Hx8eXmwyo&c=WEB_EMBEDDED_PLAYER&cver=20200429", source: https://youtube.googleapis.com/s/player/64dddad9/player_ias.vflset/pt_BR/base.js (1472)
Run Code Online (Sandbox Code Playgroud) video-streaming webview html5-video android-videoview flutter
video-streaming ×10
video ×3
ffmpeg ×2
h.264 ×2
android ×1
eme ×1
flutter ×1
gst-launch ×1
gstreamer ×1
html5-video ×1
java ×1
javascript ×1
mp4 ×1
mpeg-dash ×1
red5 ×1
rtmp ×1
rtp ×1
spring-mvc ×1
stream ×1
twitch ×1
ubuntu ×1
webrtc ×1
webview ×1
wowza ×1
youtube ×1