标签: video-processing

使用 ffmpeg 进行音视频同步

我有很奇怪的视频文件。它有音频/视频同步问题。视频会很快,音频很好。视频有奇怪的帧率:26.07 fps。

如何使用 ffmpeg 修复视频流。在视频开始时,同步正常,但在视频流结束时,还剩下大约 5 分钟的音频,并且正在黑屏播放。

这是 ffmpeg -i video.avi 的输出

ffmpeg version git-2011-10-15-1d0afec, Copyright (c) 2000-2011 the FFmpeg developers
  built on Oct 15 2011 14:27:57 with gcc 4.4.5
  configuration: --enable-gpl --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libx264 --enable-nonfree --enable-postproc --enable-version3 --enable-x11grab --enable-libxvid
  libavutil    51. 21. 0 / 51. 21. 0
  libavcodec   53. 20. 1 / 53. 20. 1
  libavformat  53. 16. 0 / 53. 16. 0
  libavdevice  53.  4. 0 / 53.  4. 0
  libavfilter   2. 43. 6 …
Run Code Online (Sandbox Code Playgroud)

ffmpeg video-processing audio-video-sync

4
推荐指数
1
解决办法
4806
查看次数

可以从 h264 文件中提取原始帧吗?

我需要从我的传感器获得原始图像,但我只有 h264 视频文件。有没有办法提取原始帧?谢谢

问候

video video-processing video-streaming h.264

4
推荐指数
1
解决办法
8767
查看次数

如何减少Android中的视频大小?

我是 Android 新手。我不知道如何在 android 中压缩视频。

请给我建议选项?

compression android video-processing android-mediacodec

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

Moviepy - 使用 CSV 文件中的时间创建多个子剪辑

我正在创建一个使用 MoviePy 模块的 Python 脚本,从较大的视频中获取剪辑并将它们连接在一起。

剪辑的时间在 CSV 文件中详细说明,如下所示;

0,10

11,19

15,20

34,42等

我所做的是逐行读取 CSV 文件,然后使用 Moviepy 中的 subclip 方法创建一个存储在剪辑列表中的剪辑,但是我得到一个 IndexError - 列表索引超出范围。

可能是什么问题(如果我不使用 subclip 方法和 CSV 文件中的值,代码可以正常工作)?

这是我的代码:

video= VideoFileClip('file')

clipsArray = [] 

import csv
with open('csv file', 'r') as file:
    reader = csv.reader(file)
    for row in reader:
        startTime = row[0]
        endTime = row[1]
        clip = fullVideo.subclip(startTime, endTime)
        clipsArray.append(clip)
Run Code Online (Sandbox Code Playgroud)

错误信息是:

文件“C:\Anaconda3\envs\py35\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py”,第 685 行,在运行文件 execfile(文件名,命名空间)中

文件“C:\Anaconda3\envs\py35\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py”,第 85 行,在 execfile exec(compile(open(filename, 'rb').read(),文件名、'exec')、命名空间)

File "C:/spyder2-py3/program.py", line 32, in Clip = fullVideo.subclip(start, end) # …

python video-processing moviepy

4
推荐指数
1
解决办法
3577
查看次数

使用ffmpeg生成无任何失真的视频缩略图

200x100为了从视频中获取缩略图,我这样做了ffmpeg -ss 100 -i /tmp/video.mp4 -frames:v 1 -s 200x100 image.jpg。但是,如果源视频的宽高比与 不同200x100,则缩略图会变形(拉伸或压扁,水平或垂直),并且看起来很糟糕。

有没有一种方法ffmpeg可以找出500x200视频太宽的情况,然后从右侧和左侧100px删除,从而制作视频?并且由于与 的宽高比相同,因此缩略图不会变形。50px50px400x200400x200200x100

我知道还有其他工具可以对 生成的缩略图执行此操作ffmpeg,但我更喜欢在其中执行此操作ffmpeg,而不必再次处理缩略图。

video ffmpeg image thumbnails video-processing

4
推荐指数
1
解决办法
8187
查看次数

FFMPEG - 带有背景的淡入淡出的文本

我正在尝试淡入淡出文本(文本有背景),目前,我拥有的是以下命令:

1.混合命令

ffmpeg -y -i input.mp4 -filter_complex "drawtext=fontfile=HelveticaNeue.ttf:text='Testing': fontcolor=white:fontsize=40: box=1: boxcolor=black@0.5:boxborderw=5:x=(w-text_w)/2:y=(h-text_h)/2[subtitles];[subtitles][0:v]blend=all_expr='A*(if(between(T,1,2),(T-1),0))+B*(1-(if(between(T,1,2),(T-1),0)))'[out]"  -map '[out]' -map 0:a output.mp4
Run Code Online (Sandbox Code Playgroud)

上面的命令成功地淡入了 drawtext(也就是这个过滤器中的字幕),但由于某种原因我没有设法让它淡出它们,因为改变它的数值并没有得到我期望的结果。

我还尝试了一个不太复杂但由于其他原因而不起作用的命令:

2.淡入淡出命令

ffmpeg -y -i input.mp4 -filter_complex "drawtext=fontfile=HelveticaNeue.ttf:text='Testing': fontcolor=white:fontsize=40: box=1: boxcolor=black@0.5:boxborderw=5:x=(w-text_w)/2:y=(h-text_h)/2[subtitles]; [subtitles]fade=t=in:st=2:d=1,fade=t=out:st=3:d=1[out]"  -map '[out]' -map 0:a output.mp4
Run Code Online (Sandbox Code Playgroud)

第二个命令淡入淡出,但适用于整个视频,而不是单独的字幕部分。

有人可以帮我解决这个问题吗?

video ffmpeg video-processing video-editing

4
推荐指数
2
解决办法
4659
查看次数

iOS - 创建多个延时实时相机预览视图

我已经进行了大量研究,但由于多种原因尚未找到可行的解决方案,我将在下面概述。


问题

在我的 iOS 应用程序中,我需要三个视图来无限期地显示设备相机的延迟实时预览。

例如,视图1将显示相机视图,延迟5秒,视图2将显示相同的相机视图,延迟20秒,视图3将显示相同的相机视图,延迟30秒。

这将用于记录您自己执行某种活动,例如锻炼练习,然后在几秒钟后观察自己,以完善您的特定练习形式。

尝试过的解决方案

我尝试并研究了几种不同的解决方案,但都有问题。

1. 使用AVFoundationAVCaptureMovieFileOutput

  • 使用AVCaptureSessionAVCaptureMovieFileOutput将短片录制到设备存储中。需要短剪辑,因为您无法播放 URL 中的视频,并同时写入同一 URL。
  • 有 3AVPlayerAVPlayerLayer实例,全部按所需的时间延迟播放录制的短片。
  • 问题:
    1. 使用 切换剪辑时AVPlayer.replaceCurrentItem(_:),剪辑之间存在非常明显的延迟。这需要一个平稳的过渡。
    2. 虽然很旧,但这里的评论建议AVPlayer由于设备限制不要创建多个实例。我还没有找到证实或否认这一说法的信息。E:根据 Jake G 的评论 -AVPlayer对于 iPhone 5 及更新版本来说 10 次就可以了。

2. 使用AVFoundationAVCaptureVideoDataOutput

  • 使用AVCaptureSessionAVCaptureVideoDataOutput来通过委托方法流式传输和处理摄像机输入的每一帧didOutputSampleBuffer
  • 在 OpenGL 视图上绘制每个帧(例如GLKViewWithBounds)。AVPlayer这解决了来自 的多个实例的问题Solution 1.
  • 问题:存储每个帧以便稍后显示需要大量内存(这在 iOS 设备上不可行)或磁盘空间。如果我想以每秒 30 …

camera video-capture video-processing avfoundation ios

4
推荐指数
1
解决办法
1403
查看次数

FFmpeg - 连接视频错误,与相应的输出链接不匹配?

我正在尝试使用 ffmpeg 将一些视频合并为一个视频。

输入信息:

a.mp4 1920x808 , b.mkv 1280x720

首先我尝试了下面的命令,它工作正常:

ffmpeg -i a.mp4 -i b.mkv -f lavfi -t 0.1 -i anullsrc -filter_complex [1:v]scale=1920:808:force_original_aspect_ratio=decrease,pad=1920:808:(ow-iw)/2 :(oh-ih)/2[v1]; [0:v][0:a][v1][1:a]concat=n=2:v=1:a=1[outv][outa] -map [outv] -map [outa] -vcodec libx264 -crf 27 -preset 超快 -threads 2 out.mp4

然后我把'b.mkv'放在第一位:

ffmpeg -i b.mkv -i a.mp4 -f lavfi -t 0.1 -i anullsrc -filter_complex [0:v]scale=1920:808:force_original_aspect_ratio=decrease,pad=1920:808:(ow-iw)/2 :(oh-ih)/2[v0]; [v0][0:a][1:v][1:a]concat=n=2:v=1:a=1[outv][outa] -map [outv] -map [outa] -vcodec libx264 -crf 27 -preset 超快 -threads 2 out.mp4

但这次我得到了错误:

输入链接 in1:v0 参数(大小 1920x808, SAR 0:1)与对应的输出链接 in0:v0 参数(1920x808, SAR 3232:3231)不匹配

我不明白为什么?

任何人的想法? …

video ffmpeg video-processing

4
推荐指数
1
解决办法
2485
查看次数

如何让 ASS 字幕中的单词一次出现一个?

我正在尝试将字幕刻录到视频中,以便它们以逐字方式出现,而不是一次全部出现。

我的意思是,一个词会出现,然后另一个词会出现在它旁边,依此类推。最终线路将清除,然后重复。

例子:

一段视频显示一个人在谈论国际象棋。 屏幕底部的字幕显示“获胜”。 片刻之后,字幕变为“中奖”,然后是“中奖”,然后是“现在中奖”等等。 每个连续的单词立即完整地出现,但每个单词只有在说话者说出来时才会出现。

我想我可以创建一个Advanced Substation Alpha文件,其中字幕共享相同的结束时间但不同的开始时间,但是 FFMPEG 在渲染文件时似乎不能很好地处理:

[Script Info]
; Script generated by FFmpeg/Lavc57.107.100
ScriptType: v4.00+
PlayResX: 384
PlayResY: 288

[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,0

[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:00.00,0:00:03.46,Default,,0,0,0,,I'm
Dialogue: 0,0:00:01.00,0:00:03.46,Default,,0,0,0,,a
Dialogue: 0,0:00:01.50,0:00:03.46,Default,,0,0,0,,subtitle
Run Code Online (Sandbox Code Playgroud)

这个想法I'm会出现,然后 1 秒后a会出现在它旁边,然后subtitle是半秒后

ffmpeg video-processing subtitle

4
推荐指数
1
解决办法
863
查看次数

在python中裁剪视频

我想创建一个可以在特定帧中裁剪视频并将其保存在我的磁盘上的函数(OpenCV、moviepy 或类似的东西)

我使用参数指定我的函数作为框架的尺寸以及源和目标名称(位置)

def vid_crop(src,dest,l,t,r,b):
  # something
  # goes
  # here

left = 1    #any number (pixels)
top = 2     # ''''
right = 3   # ''''
bottom = 4  # ''''

vid_crop('myvideo.mp4','myvideo_edit.mp4',left,top,right,bottom)
Run Code Online (Sandbox Code Playgroud)

任何建议和想法都非常有帮助

python opencv video-capture video-processing moviepy

4
推荐指数
1
解决办法
6306
查看次数