问题标签 [pyav]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2772 浏览

python-3.x - 可以使用pyav获取视频中帧的时间戳 - python

如何从 pts 和 time_base 或 duration 获取视频或 rtmp 流中帧的时间戳?非常感谢!

PS:frame.time 与实际时间不符

0 投票
2 回答
2925 浏览

python - 使用 PyAV 的视频中的帧数

我使用 PyAV 库,因为它是 Python 中最常用的库之一。

这是我想使用的代码的简单示例:

我显然可以使用其他库来加载库,但是由于它的处理速度,如果可能的话,我更喜欢使用 PyAV。

问题1:是否可以使用 PyAV 获得帧数?如果是,如何?

问题2:在这种情况下,我会考虑使用另一个库来逐帧加载和处理视频。哪个库可以让我以尽可能快的速度完成上述操作。我知道以下内容,但不知道它们如何比较:

  1. PIMS在 PyAV 之上,可以添加一些有趣的功能吗?
  2. MoviePy(仅限于适合 RAM 的视频),但是 perf 呢?
  3. Imageio(可能与上述相同的限制),但是 perf 呢?
  4. OpenCV(可能与上述相同的限制),但是 perf 呢?
  5. 其他的 ?
0 投票
1 回答
955 浏览

python - pyAV 的 pip 安装失败,退出状态为 1181

我无法通过 pip 安装 PyAV。首先它需要我下载 Microsoft Visual C++ Build Tools

当我安装它时,我收到以下错误

我什至尝试从源代码构建 PyAV,但同样的问题仍然存在。我该如何解决这个问题?

0 投票
1 回答
2056 浏览

audio-streaming - pyav:将视频和音频从流式 hls 中保存到单独的文件中

我正在编写一个脚本来将视频关键帧(到frame_{0}.jpg)和音频提取到一个单独的.mp3文件中。这是我到目前为止所拥有的:

如何将音频流保存到文件(最好是块)。我需要启动一个单独的捕获例程并并行运行,还是可以在上面的循环中捕获?

不幸的是,我查看了pyav github 帖子没有运气。不知道如何在一个循环中做到这一点。

0 投票
0 回答
896 浏览

python - PyAV:在重新混合流时强制新的帧速率?

我有一个 Python 程序,它通过网络接收一系列 H264 视频帧,我想显示这些视频帧,并且可以选择记录。相机以 30FPS 的速度记录并尽可能快地发送帧,由于网络条件的变化,这不是始终如一的 30FPS;有时它会落后然后赶上,很少会完全丢帧。

“显示”部分很简单;我不需要关心时间或流元数据,只需在帧到达时尽快显示它们:

“记录”部分看起来应该很容易:

事实上,这会产生一个包含所有帧的有效 MP4 文件,如果我用它播放它就mplayer -fps 30可以正常工作。但这-fps 30绝对是必需的:

请注意,12,800 帧/秒。它应该看起来像这样(通过调用mencoder -fps 30框架并将其导入其中产生):

检查从输入流中获得的数据包和帧,我看到:

因此,数据包和帧根本没有时间戳;它们的 time_base 与最终文件中的时基相机的实际帧速率都不匹配;编解码器的帧率和时基与最终文件、相机帧率或其他视频流元数据不匹配!

当涉及到时间和帧率问题时,PyAV 文档几乎完全不存在,但我尝试手动设置流、数据包和帧的各种组合,但没有time_base成功。我总是可以再次重新录制录制的视频以获得正确的帧速率,但我宁愿首先编写正确的视频文件。dtspts

那么,如何让 pyAV 以产生正确标记为 30fps 的输出的方式重新混合视频?

0 投票
1 回答
137 浏览

python - 在解复用的数据包中找不到 NAL 开始

我一直在使用 PyAV 和 aiortc 使用 webrtc 设置视频流。我想重新打包数据包并发送它们而不进行转码。我遇到的问题是 aiortc 是 av_read_frame 调用不会生成 NAL 启动序列,之后 aiortc 在尝试查找时失败。

我做了一个测试,打印每个打包机的第一个开头:

这产生了:

所以似乎有某种起始码,但不是为 NAL 指定的起始码(0x000001 或 0x00000001):https ://stackoverflow.com/a/23516925/3442097

有谁知道这里有什么问题?

0 投票
0 回答
849 浏览

python - 从子进程标准输出解码原始 H264 帧

我正在尝试使用 python 从子进程中提取原始 h264 流中的帧。此代码旨在用于流式传输 android 屏幕,它基于休闲命令

python代码如下所示:

输出是休耕

0 投票
1 回答
3271 浏览

python - 使用 PyAV 将视频直接读入 Numpy(无迭代)

是否可以使用 PyAV 将视频直接读入 3D Numpy?目前,我正在遍历每一帧:

第一帧定义了一个 2D Numpy 数组(i=0);每个后续帧 (i>0) 使用 堆叠到第一个数组上np.dstack。理想情况下,我想一次将整个视频读入一个 3D Numpy 灰度帧数组。

0 投票
0 回答
205 浏览

python-3.x - 使用 PyAV 生成音频广播服务器(UDP 套接字)

我必须创建一个从 PC 麦克风捕获音频并将其作为 UDP 数据包广播的服务。我在 Debian 平台上,我必须使用 Python (3.7)。

我想使用PyAV ,因为我必须使用aiortc将此广播系统链接到本地​​自定义 WebRTC 服务,该服务依赖于 PyAV。

我必须这样做,因为我无法从多个进程(RTC 对等方)访问相同的音频源(ALSA),所以我想在 localhost 环境中创建一个 UDP 广播系统。这是最佳做法吗?你还有别的想法吗?

我在这里注意到,通过调用:av.open("udp://xxx:nnn", format="alsa")我应该能够接收音频 UDP 数据包,但我不知道如何生成一个从麦克风捕获并发送 UDP 数据包的 UDP 服务器,所以,如何创建服务器端这个实现?特别是,我设法通过以下方式捕获音频:av.open("hw:0", format="alsa"),如何通过 UDP 套接字发送捕获的缓冲区?

0 投票
0 回答
201 浏览

python - Python av在无限循环中播放文件

使用https://pypi.org/project/av/尝试打开文件以进行无限播放。但循环以最后一帧结束。

搜索和阅读手册后,测试代码如下:

(注意:这些选项预计将传递给aiortc.contrib.media.MediaPlayer并以类似方式工作):

问题:在无限循环中播放文件应该是什么options(如果可能的话)?(不只是一次)