我正在尝试使用ffmpeg从视频文件中获取海报帧。
我一直在遵循这个tutorial,并得出了以下代码(该代码取自/改编自我给出的链接):
我一直在遵循这个tutorial,并得出了以下代码(该代码取自/改编自我给出的链接):
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”获取帧文件名号2 an_interleaved_write_frame():无效参数
以红色出现。
有人能帮我正确地使其工作吗?因为我完全不熟悉ffmpeg命令行,也不确定我做错了什么。我尝试删除vcodec参数并收到相同的错误消息。