标签: video-streaming

使用 FFmpeg、python 和 opencv 显示流

情况: 我有一个连接到树莓派的 basler 摄像头,我正在尝试使用 FFmpg 将其馈送直播到我的 Windows PC 中的 TCP 端口,以便监视摄像头前面发生的情况。

有效的事情: 我设法在树莓派上设置一个Python脚本,它负责记录帧,将它们输入管道并将它们流式传输到TCP端口。从该端口,我可以使用 FFplay 显示流。

我的问题: FFplay 非常适合快速轻松地测试您前进的方向是否正确,但我想“读取”流中的每一帧,进行一些处理,然后使用 opencv 显示流。那,我还做不到。

最低限度地表示,这是我在树莓派方面使用的代码:

command = ['ffmpeg',
           '-y',
           '-i', '-',
           '-an',
           '-c:v', 'mpeg4',
           '-r', '50',
           '-f', 'rtsp',
           '-rtsp_transport',
           'tcp','rtsp://192.168.1.xxxx:5555/live.sdp']

p = subprocess.Popen(command, stdin=subprocess.PIPE) 

while camera.IsGrabbing():  # send images as stream until Ctrl-C
    grabResult = camera.RetrieveResult(100, pylon.TimeoutHandling_ThrowException)
    
    if grabResult.GrabSucceeded():
        image = grabResult.Array
        image = resize_compress(image)
        p.stdin.write(image)
    grabResult.Release() 

Run Code Online (Sandbox Code Playgroud)

在我的电脑上,如果我在终端上使用以下 FFplay 命令,它就会工作并实时显示流:

ffplay -rtsp_flags listen rtsp://192.168.1.xxxx:5555/live.sdp?tcp

在我的电脑上,如果我使用以下 python 脚本,流就会开始,但它在函数中失败,cv2.imshow因为我不确定如何解码它:

import subprocess
import cv2

command …
Run Code Online (Sandbox Code Playgroud)

python opencv subprocess ffmpeg video-streaming

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

YouTube 是否单独存储视频和音频

youtube-dl可用于查看使用什么格式存储 YouTube 内容:

youtube-dl -F https://youtu.be/??????
Run Code Online (Sandbox Code Playgroud)

上面的命令提示音频和视频大多是分开存储的。这样对吗?YouTube 流媒体是否实时结合音频和视频?

YouTube 内容示例的格式

YouTube 内容示例的格式

youtube audio video video-streaming audio-streaming

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

为什么 MP4/AVC 容器文件中指定多个时间刻度?

我当前正在解析 MPEG-DASH 流初始化段(由 FFMPEG 生成),我注意到时间刻度是在我的文件中的多个不同位置指定的:

  • 在电影标题框中(mvhd):1000
  • 在我的视频轨道(mdhd)的媒体标题框中:15360
  • 在 AVC 配置框 (avcC) 中,更准确地说,在序列参数集的 VUI 部分中 NAL 单位:60

为什么在这么多不同的地方指定它?为什么他们有不同的价值观?这些价值有等级吗?例如,60 是否会覆盖 15360,15360 是否会覆盖 1000?

这是我用来生成我正在查看的文件的命令:

ffmpeg -f v4l2 -pixel_format yuyv422 -vcodec rawvideo -framerate 30 -video_size 640x360 -i /dev/video0 \
        -f dash -remove_at_exit false -use_template true -use_timeline true -streaming true -window_size 5 -extra_window_size 5 -seg_duration 5 -vcodec libx264 -b:v 1M -maxrate 1M -bufsize 2M  -pix_fmt yuv420p -r 30 -s 640x360 -aspect 16:9 /var/www/html/media/live.mpd
Run Code Online (Sandbox Code Playgroud)

mp4 ffmpeg timing video-streaming mpeg-dash

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

agora 和 mux 有什么区别?在 flutter 中流式传输实时视频的最佳方式是什么?

我想创建一个用于使用 flutter 流式传输实时视频的应用程序,所以我做了一些研究来做到这一点,我发现 SDK 称为 mux 和另一个称为 agora ,所以这里的问题是 mux 和 agora 之间有什么区别?在 flutter 中流式传输实时视频的最佳方式是什么?还有其他 SDK 用于此目的吗?

video-streaming dart flutter agora.io

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

将AV播放器与HTTP Live Streaming一起使用时会预先缓冲多少视频内容,并且可以更改该值

我正在编写一个视频应用程序,该应用程序可以播放来自网络的流式视频,并且正在使用AV播放器来播放。我的问题是我如何找出预先缓冲了多少视频内容,在MPMoviePlayerController中可以看到UISlider上缓冲的内容量。我想使用AV Player演示相同的内容,并且还可以更改预缓冲内容的数量。

我的理想情况是-用户使用我的应用流式传输电影文件,如果他暂停播放按钮,则电影会像您观看youtube视频一样继续缓冲。

请帮忙 !!

谢谢。

iphone avfoundation video-streaming http-live-streaming avplayer

2
推荐指数
1
解决办法
2012
查看次数

MediaPlayer无法寻求无缓冲的位置

这仅适用于所有版本的Android中的某些特定视频文件(例如此文件),但是在iOS或WP甚至使用Vitamio插件在Andorid中播放时,它是可搜索的。我认为流视频文件必须满足一些条件才能被查找。那正确吗?如果是这样,请告诉我什么条件才能制作流式视频。谢谢。

当我尝试寻找上述文件的未缓冲位置时,这是错误日志。

12-06 12:01:50.705: E/MediaPlayer(909): Error (1,-1007)
Run Code Online (Sandbox Code Playgroud)

android video-streaming seek media-player

2
推荐指数
1
解决办法
2407
查看次数

在标签中显示chrome.desktopCapture.chooseDesktopMedia中的视频?

我正在试用chrome.desktopCapture.chooseDesktopMediaChrome扩展程序,我可以得到一个桌面流就好了.

我使用以下内容将流转换blob:为后台脚本中的-URL,如下所示:

var objectUrl = URL.createObjectURL(stream);
Run Code Online (Sandbox Code Playgroud)

我似乎无法解决的是如何将其设置为注入页面上视频元素的src属性.

我尝试了以下,每个都不起作用:

在Background.js中:

var video     = document.getElementById("video");
var objectUrl = URL.createObjectURL(stream);
video.src     = objectUrl;
Run Code Online (Sandbox Code Playgroud)

在Content.js中

//objectUrl is a string received in a message from the background page by the content page
var video     = document.getElementById("video");
video.src     = objectUrl;
Run Code Online (Sandbox Code Playgroud)

我在javascript控制台中获得以下内容:

不允许加载本地资源:blob:chrome-extension:// panahgiakgfjeioddhenaabbacfmkclm/48ff3e53-ff6a-4bee-a1dd-1b8844591a91

如果我将消息中的URL一直发布到注入页面,我也会得到相同的结果.这有用吗?我真的很感激这里有任何建议.

在我的清单中我也有, "web_accessible_resources": [ "*" ]但这只是为了看它是否解决了这个问题(它没有).

google-chrome video-streaming google-chrome-extension screensharing

2
推荐指数
1
解决办法
2208
查看次数

无法流式传输TS文件

我为Android编写了一个应用程序,以便可以从SAT接收器流式传输文件。像mkv(从我的PC上复制)之类的文件可以正常工作(带有DTS的文件除外->我希望这将在以后的更新中提供)。

但是,当我想流式传输ts文件(来自Sat-Receiver的录制文件)时,我的Chromecast加载并加载或崩溃。从我的Chromecast调试器控制台返回我:无法加载元数据。

因为mkv文件可以在同一位置正常工作,所以我认为TS文件存在问题。

您可以在此处找到示例TS文件:https : //drive.google.com/file/d/0B7pcAkvWOZoNZ0RsSVVUUFNrZlk/view

也许有人可以向我解释文件为什么会出问题。

编辑

这是谷歌的答案:

目前不支持直接在HTML视频元素中播放ts文件。但是,支持属于HLS流的ts文件。有关支持的媒体的更多详细信息,请参阅以下链接:https : //developers.google.com/cast/docs/media

但是我如何制作HLS流?

video-streaming google-cast

2
推荐指数
1
解决办法
2653
查看次数

Video.js/Contrib-HLS在大多数浏览器中都没有播放HLS(代码:4 MEDIA_ERR_SRC_NOT_SUPPORTED)

我有一个我正在构建的视频播放器需要播放HLS直播和点播流.

它似乎只在Safari中正常工作.(减去我需要更新的自定义样式,忽略它)在所有其他浏览器中,我收到此错误:

VIDEOJS: ERROR: (CODE:4 MEDIA_ERR_SRC_NOT_SUPPORTED) The media could not be loaded, either because the server or network failed or because the format is not supported.

我错过了什么?看起来非常类似于contrib-hls演示页面实现,它在所有浏览器中都可以正常运行.

这是回购:https: //github.com/adult-swim/adult-swim-video-player和要看的分支是feature-latest-versions

为了测试我实际上在这里使用来自videojs-contrib-hls演示页面的下载视频:http://videojs.github.io/videojs-contrib-hls/

这是我在初始化VideoJS的地方:https://github.com/adult-swim/adult-swim-video-player/blob/feature-latest-versions/app/scripts/views/adult-swim -视频- player.js#L56

这是代码的两个编译版本:
http://www.adultswim.com/dev/as-player/ - on demand
http://www.adultswim.com/dev/as-player-live/ - live

我正在使用这些版本:
video.js:5.5.2
videojs-contrib-hls:1.3.4
videos-contrib-media-sources:2.4.4

video-streaming http-live-streaming video.js m3u8

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

如何在FFMPEG中设置比特率限制

如何限制FFMPEG中的转码视频的比特率以将其保持在限制值以下?

video ffmpeg transcoding video-streaming

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