标签: video-streaming

检索比特率时无法使用 HLS 获取 AVAsset 的轨道

我在我的应用程序中使用 HLS 流,我正在使用 AVPlayer。现在我想使用 AVAsset 获取视频轨道的比特率。虽然我添加了观察者和其他东西,但我的轨道数组总是空的。我是在正确的轨道上还是遗漏了什么?

video-streaming http-live-streaming ios avplayer

3
推荐指数
1
解决办法
2348
查看次数

记录传入的 mjpeg 流?

我有一个来自 IP cam 的传入 mjpeg 流。现在我可以使用 ffmpeg 和 openGL 显示它,但是当我尝试将所有传入的流保存到一个文件中并稍后播放时,播放器(VLC)无法打开该文件。

有人告诉我,我需要在开始/停止录制时添加一些标题,让播放器知道文件的格式。但我找不到关于这个主题的任何参考。任何人都可以分享有关此主题的示例吗?

ffmpeg video-streaming

3
推荐指数
1
解决办法
9775
查看次数

减少 HLS 流 FFMPEG 的延迟

我通过 ffmpeg 使用了 hls 流。
在开始流延迟存在几秒钟。
当我想在非常延迟的情况下从流中的 4k 视频中进行串流时。
我能做什么?

streaming ffmpeg video-streaming http-live-streaming

3
推荐指数
1
解决办法
1万
查看次数

GStreamer 中的 UdpSink 在 Windows 中不起作用

我是 GSTreamer 的新手。我尝试使用 GStreamer 上传视频。在运行以下命令时,

gst-launch-1.0 videotestsrc !udpsink 端口=5200

我收到如下警告。

WARNING: from element /GstPipeline:pipeline0/GstUDPSink:udpsink0: Attempting to send a UDP packets larger than maximum size (115200 > 65507)
Additional debug info:
gstmultiudpsink.c(715): gst_multiudpsink_send_messages (): /GstPipeline:pipeline0/GstUDPSink:udpsink0:
Reason: Error sending message: A message sent on a datagram socket was larger than the internal message buffer or some other network limit, or the buffer used to receive a datagram into was smaller than the datagram itself.
0:00:56.934530706  4912 0000000002F09640 WARN            multiudpsink gstmultiudpsink.c:715:gst_multiudpsink_send_messages:<udpsink0> warning: Attempting …
Run Code Online (Sandbox Code Playgroud)

windows rtp video-streaming gstreamer

3
推荐指数
1
解决办法
3332
查看次数

WebRTC:编码器实现中的 RTPFragmentationHeader 是什么?

我已修改h264_encoder_impl为使用基于 nvidia 网格的硬件编码器。这是通过用 Nvidia API 调用替换 OpenH264 特定调用来完成的。编码流可以成功写入文件,但写入_buffer_sizeencoded_image_还不够,RTPFragmentationHeader还需要填充。

// RtpFragmentize(EncodedImage* encoded_image,
//                       std::unique_ptr<uint8_t[]>* encoded_image_buffer,
//                       const VideoFrameBuffer& frame_buffer,
//                       SFrameBSInfo* info,
//                      RTPFragmentationHeader* frag_header)

// encode
openh264_->Encode(input, &info /*out*/);

// fragmentize ?
RtpFragmentize(&encoded_image_ /*out*/, &encoded_image_buffer_, *frame_buffer, 
               &info, &frag_header /*out*/); 

// ...

// send 
encoded_image_callback_->OnEncodedImage(encoded_image_, &codec_specific, &frag_header);
Run Code Online (Sandbox Code Playgroud)

当前Openh264根据实施填充frag_headerRTPFragmentize()和VP8不同填充它。我可以看到 NAL 单元和层也计算的东西,encoded_image->_length但我不知道如何。

我在任何地方都找不到关于它的任何文档。我只有 VP8 和 OpenH264 实现。

那么什么是RTPFragmentationHeader?它有什么作用?什么是encoded_image->_length?使用自定义H264编码器时如何正确填充?我可以找到 startcode 但接下来呢?如何填满它的所有成员?

video video-streaming h.264 webrtc openh264

3
推荐指数
1
解决办法
1334
查看次数

ffmpeg rtp 流媒体错误:RTP:丢弃收到的旧数据包太晚了

我通过 ffmpeg 开始视频传输,如下所示:

ffmpeg -f video4linux2 -i /dev/video0 -vcodec libx264 -preset ultrafast -crf 20 -tune zerolatency -s 800x600 -r 25 -b:v 0.9M -sdp_file video.sdp -f rtp rtp://192.168.10.24:5010    
Run Code Online (Sandbox Code Playgroud)

我以这种方式重现:

ffplay -protocol_whitelist file,udp,rtp video.sdp    
Run Code Online (Sandbox Code Playgroud)

一切正常。然后我中断传输,几秒钟后我恢复。ffplay 不会立即开始重现但出现错误:

....
[sdp @ 0x6ebf80] RTP: dropping old packet received too lateB f=1/1
    Last message repeated 14 times
[sdp @ 0x6ebf80] RTP: dropping old packet received too lateB f=1/1
    Last message repeated 33 times
[sdp @ 0x6ebf80] RTP: dropping old packet received too lateB f=1/1
    Last message …
Run Code Online (Sandbox Code Playgroud)

ffmpeg rtp video-streaming

3
推荐指数
1
解决办法
2678
查看次数

如何通过 ffmpeg 生成多速率 mpeg-dash 流

我想创建多比特率的破折号流并提供它。我还想使用 dash.js 播放器的质量选择器。像图片:

dash.js 播放器质量选择器 生成 .mpd 文件需要哪些标志和配置?

ffmpeg video-streaming mpeg-dash dash.js

3
推荐指数
1
解决办法
2842
查看次数

Angular 2 中支持 Youtube 和 Vimeo 视频的视频播放器插件

到目前为止,我一直在使用https://videogular.github.io/videogular2/docs/在我的应用程序中播放我的自定义视频,但最近当我尝试播放源为 youtube 和 vimeo 的视频时,此插件不支持它。

是否有更好的开源替代方案可用于播放来自 Angular 2+ 中各种插件的视频。

html video-streaming html5-video angular

3
推荐指数
1
解决办法
5187
查看次数

通过ffplay播放USB网络摄像头流时出现“无法解码APP字段”

我正在尝试在 Windows 中使用 ffplay 播放 USB 网络摄像头流(不确定它是哪种格式..)。我可以毫无问题地观看视频,但我一直在控制台中出现以下错误。

ffplay.exe -f dshow -i video="Logitech HD Webcam C615" -loglevel debug

[mjpeg @97a118cc80] 无法解码 APP 字段:处理输入检查日志时发现无效数据 以获取更多详细信息

我真的需要担心这个错误吗?或者我需要在命令中提供的任何过滤器来解决这个错误。

注意:我尝试使用 ffmpeg 将流保存到文件中,但遇到了同样的问题。

提前致谢。

webcam ffmpeg video-streaming

3
推荐指数
1
解决办法
4901
查看次数

Azure Blob 存储是否默认支持部分内容 206?

我正在使用 Azure blob 存储来存储我的所有图像和视频。我已经实现了上传和获取功能,并且运行良好。我在加载视频时遇到 1 个问题,因为当我使用在 Azure blob 存储上上传该视频后生成的 url 时,它会先下载所有内容,然后再将其呈现给用户。因此,如果视频大小为 100 mb,它将下载所有 100 mb,直到用户将无法看到视频。

我做了很多研发,才知道在渲染视频时,我需要获取部分内容(状态 206)而不是一次获取整个视频。添加请求头“Range:bytes-500”后,我尝试点击博客网址,但它仍在下载整个内容。因此,我检查了一些开源视频 URL,并尝试点击视频 URL 和“Range”请求标头,它成功地给出了 206 响应状态,这意味着它正确地给了我部分内容而不是完整视频。

我读了一些论坛,他们说 Azure 存储支持部分内容概念,需要从属性中启用它。但是我已经检查了 Azure 存储帐户下的所有选项,但没有找到任何可以启用此功能的选项。

任何人都可以帮我解决这个问题,或者我需要启用 Azure 门户上的任何内容吗?这是我从一个星期以来一直在为此进行研发的事情。任何帮助将非常感激。

谢谢!注意安全。

rendering azure video-streaming azure-storage-blobs azure-blob-storage

3
推荐指数
1
解决办法
1255
查看次数