我正在尝试使用 ffmpeg 从视频文件中获取海报帧。
我一直在关注本教程并提出以下代码(取自/改编自我提供的链接):
public bool GetVideoThumbnail(string path, string saveThumbnailTo, int seconds)
{
string parameters = string.Format("-i {0} {1} -vcodec mjpeg -ss {2} -vframes 1 -an -f rawvideo", path, saveThumbnailTo, seconds);
if (File.Exists(saveThumbnailTo))
{
return true;
}
else
{
using (Process process = Process.Start(pathToConvertor, parameters))
{
process.WaitForExit();
}
return File.Exists(saveThumbnailTo);
}
}
目前,此代码已成功在正确的目的地(saveThumbnailTo)中创建文件,只有图片是全黑的。我尝试更改代码中的秒值,以确保我不只是从视频开始获得一张空白图片。顺便说一下,路径是指我的视频存储的位置。
我目前正在调用上面的代码,如下所示:
GetVideoThumbnail(videoPath, folderPath + "/poster.jpg", 100)
..然后将其传递给我的视图以显示图片。我只是想知道“.jpg”是否是我应该给这个文件的扩展名,因为我不完全确定?
编辑:当我从命令行运行相同的命令时,出现以下错误:
编解码器“mjpeg”的像素格式“yuv420p”不兼容,自动选择格式“yuvj420p”
以黄色显示,并且
[image2 @ 02S96AE0] 无法从模式“poster.jpg”an_interleaved_write_frame() 中获取帧文件名编号 2:无效参数
以红色显示。
任何人都可以帮助我使其正常工作,因为我完全不熟悉 ffmpeg 命令行并且不确定我做错了什么。我尝试删除 vcodec 参数并得到相同的错误消息。