我想批量转换包含数百个FLV文件的目录,以便每个文件都具有MP4等效项.我正在尝试通过编写shell脚本并从终端运行它来自动执行此过程.我该怎么做呢?大多数可用的指令都是针对使用ffmpeg的Linux,但我认为OS X没有它.谢谢.
我有两个MTS视频文件,每个文件长2分钟.我需要能够将文件连接在一起并将格式转换为MPEG4.我有一个合适的命令行,用于将MTS转换为MP4,但首先不知道如何将文件连接在一起.
网上的一些文章建议使用CAT命令,如:
cat video1.mts video2.mts > whole_video.mts
Run Code Online (Sandbox Code Playgroud)
然而,这不起作用,根据FFMPEG,"whole_video.mts"只有2分钟,而不是4分钟.
有谁知道如何将文件加在一起?FFMPEG是最好的程序吗?提前致谢.
我想写一个视频编辑软件,"逻辑"结论是我必须使用的语言是C++ ...但我不喜欢它(抱歉c ++粉丝)
我想写一些很酷的东西,比如Lisp或Haskell或Erlang ...但我不知道这些语言的开源实现(我没有钱购买许可证)让我制作了一个有竞争力的软件(在表演区)
你怎么看?您有什么推荐的吗?
要跟踪视频帧上的对象,首先我从视频中提取图像帧并将这些图像保存到文件夹中.然后我应该处理这些图像以找到一个对象.实际上我不知道这是否是实用的,因为所有的算法都是一步完成的.它是否正确?
我正在尝试决定选择哪个库来创建可以过滤视频的应用,例如美化或清晰度.
在我搜索期间,我遇到了两个候选人:OpenCv和FFmpeg,我找到了一个仅适用于FFmpeg的完整框架(所以+1为此).
我无法找到两者之间的完全比较,所以如果有人尝试过它们并且可以发布答案,那将非常有帮助.
编辑:
另一个候选人是Android的Marvin框架(Java项目) - https://code.google.com/p/android-image-filtering/
我想使用bash脚本将audio.mp3音轨添加到无声的video.mp4文件中,"cvlc""ffmpeg"命令行的正确语法是什么?
我用VLC和--no-audio选项录制了视频,因此没有可以从原始视频复制的比特率或编码等设置.
我正在尝试使用硬件支持的视频工具包解码器编写视频解码器.但是,如果我尝试初始化解码会话,如下面发布的示例,我在调用VTDecompressionSessionCreate时收到错误-8971.谁能告诉我这里做错了什么?
感谢你并致以真诚的问候,
奥利弗
OSStatus status;
int tmpWidth = sps.EncodedWidth();
int tmpHeight = sps.EncodedHeight();
NSLog(@"Got new Width and Height from SPS - %dx%d", tmpWidth, tmpHeight);
const VTDecompressionOutputCallbackRecord callback = { ReceivedDecompressedFrame, self };
status = CMVideoFormatDescriptionCreate(NULL,
kCMVideoCodecType_H264,
tmpWidth,
tmpHeight,
NULL,
&decoderFormatDescription);
if (status == noErr)
{
// Set the pixel attributes for the destination buffer
CFMutableDictionaryRef destinationPixelBufferAttributes = CFDictionaryCreateMutable(
NULL, // CFAllocatorRef allocator
0, // CFIndex capacity
&kCFTypeDictionaryKeyCallBacks,
&kCFTypeDictionaryValueCallBacks);
SInt32 destinationPixelType = kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange;
CFDictionarySetValue(destinationPixelBufferAttributes,kCVPixelBufferPixelFormatTypeKey, CFNumberCreate(NULL, kCFNumberSInt32Type, &destinationPixelType));
CFDictionarySetValue(destinationPixelBufferAttributes,kCVPixelBufferWidthKey, CFNumberCreate(NULL, kCFNumberSInt32Type, &tmpWidth)); …Run Code Online (Sandbox Code Playgroud) 我正在尝试为视频获取有代表性的帧,以便删除可能出现在视频中的冗余帧.这是我用来获取帧的方法.
./ffmpeg -i video.mp4 -vf select="eq(pict_type\,PICT_TYPE_I)" -vsync 2 -s 320x240 thumb-%02d.png
我也试过了
./ffmpeg -i video.mp4 -f image2 -vf "select=gt(scene\,.4)" -vsync vfr thumb%04d.png
这方面的主要问题是模糊.如果我只是每5秒对帧进行一次采样,我看不到任何模糊,但是使用上面两个命令我会得到很多模糊.
该视频可在此处找到,http://www.cs.umd.edu/~bharat/video.mp4
为了每10秒对视频进行一次采样,我使用以下内容:
./ffmpeg -i video.mp4 -r 1/10 filename%03d.jpg
使用正常采样输出:

使用select输出:

但是,对于某些视频,正常采样可能不好,并且可能会创建冗余帧.有没有办法在ffmpeg中使用一些选项并获得没有这种模糊的帧?如果正常采样可以获得良好的帧,则附近应该存在没有模糊的帧.我已经查看了ffmpeg中的场景切换等选项,但我不熟悉将它们用于此应用程序.
video ffmpeg image-processing video-processing computer-vision
我想在python脚本中运行以下命令,我还想让它循环遍历文件夹中的几个视频.这是我想要运行的命令.
ffmpeg -i mymovie.avi -f image2 -vf fps=fps=1 output%d.png
我希望适合这样的事情:
import ffmpy
import os
path = './Videos/MyVideos/'
for filename in os.listdir(path):
name = filename.replace('.avi','')
os.mkdir(os.path.join(path,name))
*ffmpeg command here*
Run Code Online (Sandbox Code Playgroud)
我找到了一个名为ffmpy的ffmpeg包装器,这可能是一个解决方案吗?
我正在使用以下代码打开视频流:
import cv2
video = cv2.VideoCapture()
video.open("some_m3u8_link")
success, image = video.read()
Run Code Online (Sandbox Code Playgroud)
但是,即使代码在本地工作,在Heroku success上总是错误的.
我正在使用带有以下buildpacks的cedar-14堆栈:
Heroku的/蟒蛇
https://github.com/jonathanong/heroku-buildpack-ffmpeg-latest.git
(我为ffmpeg尝试了几个buildpack选项)
ffmpeg --version在heroku实例上运行将返回ffmpeg version 4.0-static https://johnvansickle.com/ffmpeg/
是否有任何我错过的设置/配置,以使其在部署上工作?谢谢!
稍后编辑:我尝试了几个"some_m3u8_link"链接,包括来自抽搐和其他流媒体服务(包括流量传输)复制的一个例子:
python -c "import cv2; video=cv2.VideoCapture(); video.open('https://hddn01.skylinewebcams.com/live.m3u8?a=5tm6kfqrhqbpblan9j5d4bmua4'); success, image = video.read(); print(success)"
Run Code Online (Sandbox Code Playgroud)
在本地计算机上返回True,在Heroku上返回False.
(链接取自这里)