我正在尝试提取几个视频的所有帧。这些视频是在以可变帧速率保存输出的相机上捕获的,因此,某些帧在时间上比其他帧更接近(根据mediainfo从 ~27 到 ~30 fps )
这个帧要和一些元数据同步,所以我不仅需要提取它们,还要保留视频每一帧拍摄的[相对]时间信息。
我一直在使用 ffmpeg 来提取视频帧,当视频帧率不再恒定时,挑战就来了。任何其他不同于 ffmpeg 的方法或程序都可以,只要它能完成工作。
我正在尝试在不同时间点用多个图像叠加视频。这里的问题是图像可能比视频大,但它们应该缩小(保持纵横比)并且缺失的空间应该用黑色填充。
这是我到目前为止所拥有的:
-i 'input_video.mp4'
-i 'input_image_1.jpg'
-i 'input_image_2.jpg'
-i 'input_image3.jpg'
-i 'input_image4.jpg'
-filter_complex "[0][1] overlay=0:0:enable='between(t,0.0,2.0)'[s1];
[s1][2] overlay=0:0:enable='between(t,7.0,9.0)'[s2];
[s2][3] overlay=0:0:enable='between(t,18.0,20.0)'[s3];
[s3][4] overlay=0:0:enable='between(t,20.0,22.0)'[s4];"
-vf 'scale=min(iw*540/ih,960):min(540,ih*960/iw),
pad=960:540:(960-iw)/2:(540-ih)/2'
-pix_fmt yuv420p -c:a copy
'output_image.mp4'
Run Code Online (Sandbox Code Playgroud)
scale 和 pad 中的值是动态导出的,对应于视频高度和视频宽度。
然而,FFmpeg 抱怨这个突击队-filter_complex不能-vf在同一个突击队中使用。我不想首先缩小图像或从中创建视频文件,然后覆盖这些视频。
任何指示表示赞赏。
如何将我的所有文件连接到一个带有mkv扩展名的文件夹中?我知道我可以使用该命令指定特定文件:
ffmpeg -i "concat:00019.MTS|00020.MTS|00021.MTS|00022.MTS" output.mp4
Run Code Online (Sandbox Code Playgroud)
但我不确定如何更改它以便它在大量视频文件上执行相同的操作。我怎样才能做到这一点?
我正在为用户开发视频存储服务,我需要在保存大型视频 (vg 4K) 之前将其压缩到 1080p。是否有 JS 库(浏览器或 Node)可以帮助完成此任务?也许是网络服务?
我也接受语言建议。
我只找到了播放“.mp4”文件的方法。我什至尝试下载 .avi 文件,但它显示文件已损坏。我什至尝试使用在线工具将 .avi 更改为 .mp4,但没有任何效果。
我已经使用 Cloud Firestore 一个月了,对到目前为止的进展情况非常满意,除了一个因素,这当然是计费。我的应用程序是一个使用过多带宽的短视频应用程序。每个视频平均约为 2MB。压缩后上传。目前大约有 700 名用户在使用该应用程序,我没想到在这么小的用户群下账单会增长这么多。账单仍在我的免费试用期内,对我来说并不多,但将来以这个费率,肯定会清空我的口袋。
我也在使用云 Firestore 和存储。我最初的想法是使用另一个 CDN 网络(我猜 Firebase 也不是 CDN)——也许是 Bunnycdn 来托管视频。现在,问题是如果我切换到 Bunnycdn 或其他 CDN 存储提供商,Firebase 带宽会减少吗?我认为高带宽主要是因为视频,因此,如果我切换到另一个托管服务提供商/CDN,Firebase 带宽不会那么高,我的这种方法是否正确?当然,会有来自 Bunnycdn 左右的计费,但我猜他们的带宽使用价格比 Firebase 便宜得多。
用户在应用中上传和观看视频。
android bandwidth video-processing firebase google-cloud-firestore
我正在使用 ffmpeg 将图像缩放到特定点(x,y)。
我希望该点是缩放的最终位置。我现在使用的命令是:
ffmpeg -y -i zoomInimg.jpg -vf "scale=6198:2350:-1,zoompan=z='min(max(zoom,pzoom)+0.06,10)':d=2400:x=4000 :y=1000 :s=6198x2350" -t 5 zoomIn.mp4
Run Code Online (Sandbox Code Playgroud)
我想要一个将图像缩放到点(x=4000,y=1000)的视频。
我想使用 ffmpeg 和 python 在图像上叠加透明视频
我可以通过终端成功完成此操作,但无法让 ffmpeg 命令在 python 中工作。当我位于包含文件的目录中时,以下命令会在终端中生成我想要的结果。
ffmpeg -i head1.png -i hdmiSpitting.mov -filter_complex "[0:v][1:v] overlay=0:0" -pix_fmt yuv420p -:a copy output3.mov
Run Code Online (Sandbox Code Playgroud)
在 python 中,我的代码很简单:
import os
import subprocess
command = "ffmpeg -i head1.png -i hdmiSpitting.mov -filter_complex \"[0:v][1:v] overlay=0:0\" -pix_fmt yuv420p -c:a copy output3.mov"
subprocess.call(command,shell=True)
Run Code Online (Sandbox Code Playgroud)
代码运行,没有任何错误指示,但没有产生任何输出。
我在这里缺少什么?
我用于cv2从我拥有的不同帧创建视频。创建视频时,我无法更改 fps(每秒帧数)。我希望视频在开始时较慢,但到结束时较快,这意味着开始时的 fps 较小,但到最后时较大。但是,当我实例化时,cv2.VideoWriter我无法再更改 fps。我应该怎么办?
可复制的代码
import numpy as np
import cv2, os
import matplotlib
image_size = 200
def create_image_array(image_size):
image_array = np.random.randn(image_size, image_size)
row = np.random.randint(0, image_size)
image_array[row, :] = 100
return image_array
frame_numbers = 200
for i in range(frame_numbers):
image_array = create_image_array(image_size)
matplotlib.image.imsave(f'./shots/frame_{i:03d}.png', image_array)
def make_a_video(shots_folder, video_path):
shots_folder = 'shots'
fps = 25
images = [img for img in os.listdir(shots_folder) if img.endswith(".png")]
images = sorted(images)[:]
frame = cv2.imread(os.path.join(shots_folder, images[0]))
height, width, layers = frame.shape …Run Code Online (Sandbox Code Playgroud) 我有一个从网络摄像头捕获并在 python 中使用 OpenCV 的视频文件。网络摄像头标称 FPS 为 30 FPS,但由于环境的原因,实际 FPS 有所不同,有时可能低至 24 FPS。录制的视频是使用 OpenCV 创建的VideoWriter,使用 MP4V FOURCC 并且始终具有 30 的 FPS 值,如果实际 FPS 不是 30,这会使视频的持续时间不正确。我有一个文件,其中包含从网络摄像头读取每个帧时的时间戳(使用 python 生成time.time())。
问题:
使用 FFMPEG(或其他软件),我可以使用时间戳信息创建新的视频文件(可能是 VFR 文件),然后将其转换为 CFR 文件吗?
我不确定创建具有正确时基的视频文件的正确方法是什么。也许我可以分割视频的帧并将它们保存为图像,然后使用时间戳和图像来创建 VFR 视频,但我想看看是否可以用另一种更优雅的方式来做到这一点。
提前致谢!
video-processing ×10
ffmpeg ×7
video ×4
python ×3
android ×1
bandwidth ×1
firebase ×1
javascript ×1
join ×1
mkv ×1
mp4 ×1
multimedia ×1
node.js ×1
opencv ×1
opencv3.0 ×1
python-3.x ×1
scale ×1
subprocess ×1