我有很奇怪的视频文件。它有音频/视频同步问题。视频会很快,音频很好。视频有奇怪的帧率: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) 我需要从我的传感器获得原始图像,但我只有 h264 视频文件。有没有办法提取原始帧?谢谢
问候
我是 Android 新手。我不知道如何在 android 中压缩视频。
请给我建议选项?
我正在创建一个使用 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) # …
200x100为了从视频中获取缩略图,我这样做了ffmpeg -ss 100 -i /tmp/video.mp4 -frames:v 1 -s 200x100 image.jpg。但是,如果源视频的宽高比与 不同200x100,则缩略图会变形(拉伸或压扁,水平或垂直),并且看起来很糟糕。
有没有一种方法ffmpeg可以找出500x200视频太宽的情况,然后从右侧和左侧100px删除,从而制作视频?并且由于与 的宽高比相同,因此缩略图不会变形。50px50px400x200400x200200x100
我知道还有其他工具可以对 生成的缩略图执行此操作ffmpeg,但我更喜欢在其中执行此操作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)
第二个命令淡入淡出,但适用于整个视频,而不是单独的字幕部分。
有人可以帮我解决这个问题吗?
我已经进行了大量研究,但由于多种原因尚未找到可行的解决方案,我将在下面概述。
在我的 iOS 应用程序中,我需要三个视图来无限期地显示设备相机的延迟实时预览。
例如,视图1将显示相机视图,延迟5秒,视图2将显示相同的相机视图,延迟20秒,视图3将显示相同的相机视图,延迟30秒。
这将用于记录您自己执行某种活动,例如锻炼练习,然后在几秒钟后观察自己,以完善您的特定练习形式。
我尝试并研究了几种不同的解决方案,但都有问题。
AVFoundation和AVCaptureMovieFileOutput:AVCaptureSession和AVCaptureMovieFileOutput将短片录制到设备存储中。需要短剪辑,因为您无法播放 URL 中的视频,并同时写入同一 URL。AVPlayer个AVPlayerLayer实例,全部按所需的时间延迟播放录制的短片。AVPlayer.replaceCurrentItem(_:),剪辑之间存在非常明显的延迟。这需要一个平稳的过渡。AVPlayer由于设备限制不要创建多个实例。我还没有找到证实或否认这一说法的信息。E:根据 Jake G 的评论 -AVPlayer对于 iPhone 5 及更新版本来说 10 次就可以了。AVFoundation和AVCaptureVideoDataOutput:AVCaptureSession和AVCaptureVideoDataOutput来通过委托方法流式传输和处理摄像机输入的每一帧didOutputSampleBuffer。GLKViewWithBounds)。AVPlayer这解决了来自 的多个实例的问题Solution 1.。我正在尝试使用 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)不匹配
我不明白为什么?
任何人的想法? …
我正在尝试将字幕刻录到视频中,以便它们以逐字方式出现,而不是一次全部出现。
我的意思是,一个词会出现,然后另一个词会出现在它旁边,依此类推。最终线路将清除,然后重复。
例子:
我想我可以创建一个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是半秒后
我想创建一个可以在特定帧中裁剪视频并将其保存在我的磁盘上的函数(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)
任何建议和想法都非常有帮助
video-processing ×10
ffmpeg ×5
video ×4
moviepy ×2
python ×2
android ×1
avfoundation ×1
camera ×1
compression ×1
h.264 ×1
image ×1
ios ×1
opencv ×1
subtitle ×1
thumbnails ×1