我正在创建一个单页应用程序,后端使用Golang,前端使用javascript。我想找到一种方法,以使用Golang获取视频的第一帧。
首先,我将一个.mp4视频文件上传到服务器。它保存在服务器上。
有没有一种方法可以使用Golang获取此视频的第一帧?应该可以在前端使用Javascript来做到这一点,但我认为这不是解决此问题的正确方法。
我不知道如何使用Golang来实现它,也没有找到任何有用的库,甚至没有内置函数可以帮助我解决这个问题。
每一条建议或任何建议将不胜感激。
如评论中所建议,使用ffmpeg是最简单的方法。以下是改编自此答案的示例:
package main
import (
"bytes"
"fmt"
"os/exec"
)
func main() {
filename := "test.mp4"
width := 640
height := 360
cmd := exec.Command("ffmpeg", "-i", filename, "-vframes", "1", "-s", fmt.Sprintf("%dx%d", width, height), "-f", "singlejpeg", "-")
var buffer bytes.Buffer
cmd.Stdout = &buffer
if cmd.Run() != nil {
panic("could not generate frame")
}
// Do something with buffer, which contains a JPEG image
}
我的应用程序有一个片段,播放一秒钟长的视频。播放完视频后,用户必须按下一个按钮,然后应该播放一个新的视频。在播放第二个视频之前,my main activity加载、创建一个新片段并创建新的Exoplayer实例。 我第一次播放视频时,一切都按预期进行。然而,如果我想播放第二个视频,它将显示第一个视频最后一帧的冻结图像,并播放第二个视频的声音。这个bug不出现在Android8(API Level
我正在使用ffmpeg将视频按帧分割。对于25fps的视频,我的期望是,它将显示0帧40毫秒,然后显示1帧40毫秒,等等。然而,当我使用ffmepg分析视频时,这不是我得到的结果。 我使用以下命令从视频中提取帧: 在这种情况下,我希望和是相同的帧,但是生成的pngs是不同的。然而,另一方面,和是相同的帧,而和是不同的帧。似乎的帧只显示1ms。我在多个不同的视频上测试过这个,结果一致。有人能解释为什
我想让应用程序逐帧播放功能。我想这是不可能与标准的Android工具。我尝试了VideoView和search kTo(当前的1000/帧率)方法,但它不起作用(我想它不会在暂停的视频上寻找)。我的问题是:我需要学习和使用什么来使它成为可能,什么工具和/或库?我是Android初学者,我没有工作的视频渲染早,所以我的知识,这是真的很低。
那么如何在iPhone上播放完一个视频后直接播放一个视频呢?我把这个 NSString*filepath=[[NSBundle mainBundle]pathforresource:@“movie”oftype:@“m4v”];NSURL*fileurl=[NSURL fileurlwithpath:filePath];MPMoviePlayerController*moviePlayerCont
我们的视频播放软件(本地的,不是流媒体),可以随意跳到第 n 秒 这个功能是怎么实现的? 因为视频的一个一个 packet 组成,每个 packet 包含 [0,+∞) 个 frame 所以跳转到第 10 秒怎么实现? 一个视频 30 fps,难道要,从第 0 帧开始读取 300 帧,才播放吗? 这样的话,越拖到后面越慢 但是实际使用这些播放软件的时候,感觉都是秒级别的
JS 怎么获取视频第一帧作为封面图,网上找了很多方法,都是空白的。。。新手,求指点,跪谢~