我目前正在尝试使用 Windows 10 上的 FFmpeg 在带有内置网络摄像头的联想笔记本电脑上录制视频。我的目标之一是尽可能降低 CPU 使用率,这就是为什么我想将 h264 编码推送到图形处理器。现在我的笔记本电脑有点棘手。因为它使用了两个 GPU。第一个 GPU 是作为 CPU 一部分的 Intel HD 5500 图形单元。这个最有可能用于非要求的应用程序,如办公室等,以节省能源。另一个是 AMD R5 M330,将用于游戏等图形密集型应用程序。
目前,我正在使用以下命令对 Intel HD GPU 上的网络摄像头流进行编码:
ffmpeg -f dshow -vcodec mjpeg -video_size 1280x720 -framerate 30 video="Lenovo EasyCamera":audio="Mikrofon (Realtek High Definition Audio)" -c:v h264_qsv -g 60 -q 28 -look_ahead 0 -preset:v faster -c:a aac -q:a 0.6 -r 30 output.mp4
Run Code Online (Sandbox Code Playgroud)
到目前为止这确实有效,但似乎这个 GPU 没有足够的能力来跟上更高比特率或大量 i 帧的帧率。视频开始缺帧和跳帧。如果我使用 CPU 编码,一切正常。
既然我的笔记本电脑获得了第二个 AMD GPU,它的功率要大得多,尝试在那个 GPU 上进行编码会很不错,但我找不到有关如何在 Windows 10 上的 AMD 硬件上进行编码的任何信息。所以我的问题是: ffmpeg 命令如何使用 AMD 硬件进行 …
最近我写了一个Android应用程序,需要从相机中的构建中拍摄照片并将其恢复到我的应用程序中.我使用了许多教程中的一个,一切正常.但后来我在另一台设备上测试了它并没有任何功能.似乎有问题,所以我如何确保我可以在每台设备上拍照?(看我的回答,这更像是一个教程)
我有一个自定义结构的向量和一个属性列表,用于按降序优先级排序该向量.例如:
struct TheStruct {
artist: String,
title: String,
date: String,
}
let order_vec: Vec<String> = vec!["artist".to_string(),"title".to_string(),"date".to_string()];
let item_vec: Vec<TheStruct> = Vec::new();
Run Code Online (Sandbox Code Playgroud)
我希望矢量按照给定的顺序排序order_vec.在这个例子中,它应该首先按艺术家名称排序,当它相等时,它应该按标题排序.我不想将这种排序硬编码为order_vec动态变化.
我找到了Vec::sort_by哪个需要比较功能.如何动态生成该功能?有没有办法做到这一点没有sort_by?