gpt4 book ai didi

python - 在 android/python 中使用 opencv 处理视频的问题

转载 作者:行者123 更新时间:2023-12-04 23:35:01 25 4
gpt4 key购买 nike

我正在尝试打开视频并使用 python 逐帧获取帧数组以进行后处理。
我在 android termux 中,我用 python3 安装了 ffmpeg 和 opencv2。
当我尝试打开视频时

import cv2
import numpy as np
# create VideoCapture object
cap = cv2.VideoCapture('video.mp4')

if (cap.isOpened() == False):
print('Error while trying to open video. Please check again...')
我总是收到打印错误。
'尝试打开视频时出错。请再检查一次...'。 cap.isOpened() 是假的,我没有得到任何异常。我在网上读到,在 android opencv 上它只会从 mpeg avi 读取。
我尝试使用 ffmpeg 将 video.mp4 转换为 video.avi,但仍然失败。我尝试了一堆 ffmpeg 命令,到目前为止都没有奏效。
任何 ffmpeg 命令可以将我的视频转换为 android 上的 opencv 可读的内容?
或者使用ffmpeg-python或带有ffmpeg的子进程管道将视频帧加载到数组frames[] = ...中的一些代码?
使用的ffmpeg命令列表
ffmpeg -i video.mp4 -vcodec mjpeg output.mjpeg
ffmpeg -i output.mjpeg -vcodec output.avi
ffmpeg -i output.mjpeg -vcodec mjpeg output.avi

ffmpeg -i video.mp4 video.avi
ffmpeg -i video.mp4 -vcodec mjpeg out.avi
Ffmpeg -i video.mp4 output
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'video.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf57.83.100
Duration: 00:02:42.34, start: 0.000000, bitrate: 4705 kb/s
Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, smpte170m/bt470bg/smpte170m, progressive), 1280x608, 4570 kb/s, 30.01 fps, 30 tbr, 1000k tbn (default)
Metadata:
handler_name : VideoHandler
vendor_id : [0][0][0][0]
Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s (default)
Metadata:
handler_name : SoundHandler
vendor_id : [0][0][0][0]

最佳答案

我最终使用 ffmpeg 而不是 opencv。原来opencv无法在android上处理vfr mp4,它只支持非常有限的.avi集。
我能够使用 ffmpeg 过滤器并将视频重新编码为 CFR。
我使用 2 pass 转换使其成为恒定的 30fps 视频。

ffmpeg -i pvp2.mp4 -vsync cfr pvp2cfr2.mp4
ffmpeg -i pvp2cfr2.mp4 -filter:v fps=30 pvp2cfr30.mp4

关于python - 在 android/python 中使用 opencv 处理视频的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71778077/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com