Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 将视频文件的每一帧映射到指向原始帧的.png_C_Linux_Video - Fatal编程技术网

C 将视频文件的每一帧映射到指向原始帧的.png

C 将视频文件的每一帧映射到指向原始帧的.png,c,linux,video,C,Linux,Video,我知道这可以通过Linux内核模块实现(即,您可以“挂载”一个视频文件以访问帧),但我想知道是否有另一种Unix-ish方法可以做到这一点,而不必走那么远 是否有一些特殊文件(可能是带有管道的魔法文件)可以将视频文件中的特定帧(被视为.png)引用到外部UTIL,但编辑后会更新视频中的原始帧 (我正在寻找一个通用文件类型/伪代码。如果它是用C编写的答案,那就更好了) 使用FFMPEG可以访问单个帧: 。。。并将其注入: 是否有一些特殊文件(可能是带有管道的魔法文件)可以引用视频文件中的特定帧,该

我知道这可以通过Linux内核模块实现(即,您可以“挂载”一个视频文件以访问帧),但我想知道是否有另一种Unix-ish方法可以做到这一点,而不必走那么远

是否有一些特殊文件(可能是带有管道的魔法文件)可以将视频文件中的特定帧(被视为
.png
)引用到外部UTIL,但编辑后会更新视频中的原始帧

(我正在寻找一个通用文件类型/伪代码。如果它是用C编写的答案,那就更好了)

使用FFMPEG可以访问单个帧:

。。。并将其注入:

是否有一些特殊文件(可能是带有管道的魔法文件)可以引用视频文件中的特定帧,该视频文件被视为.png,但在编辑时会更新视频中的原始帧

对于大多数视频格式来说,这不是一件有用的事情。帧不单独存储在文件中;视频压缩算法通过存储相邻帧之间的差异来工作,因此很难在不改变与之相关的所有其他帧的情况下更新单个帧

无论如何,没有;在标准UNIX系统中,无法创建以这种方式链接到另一个文件的文件。但是,您可以创建一个FUSE文件系统,将视频帧作为文件公开在虚拟文件系统中。不过,这不是一项微不足道的任务;有关入门的信息,您可能需要学习FUSE教程:

是否有一些特殊文件(可能是带有管道的魔法文件)可以引用视频文件中的特定帧,该视频文件被视为.png,但在编辑时会更新视频中的原始帧

对于大多数视频格式来说,这不是一件有用的事情。帧不单独存储在文件中;视频压缩算法通过存储相邻帧之间的差异来工作,因此很难在不改变与之相关的所有其他帧的情况下更新单个帧

无论如何,没有;在标准UNIX系统中,无法创建以这种方式链接到另一个文件的文件。但是,您可以创建一个FUSE文件系统,将视频帧作为文件公开在虚拟文件系统中。不过,这不是一项微不足道的任务;有关入门的信息,您可能需要学习FUSE教程:


为什么不使用一个能将帧输出为图像的播放器?@KarolyHorvath我可以使用FFMPEG导出一堆.png文件,但这需要大量的初始处理(将帧分开)、空间(数千个.png文件比相同长度的视频文件占用更多空间)和最终处理(将帧合并在一起)。你为什么不使用一个可以将帧输出为图像的播放器?@KarolyHorvath我可以使用FFMPEG导出一组.png文件,但这需要大量的初始处理(将帧分开)、空间(数千个.png文件比相同长度的视频文件占用更多空间)和最终处理(将帧合并在一起)。可以访问视频的单个帧(),那么命名管道(frame1)是否可以访问该帧?然后,不知何故,将新帧重新注入()。可以按照第一个链接中所述从视频文件中读取各个帧,但是回写各个帧是有问题的。无论如何,命名管道也不会做你想做的事情,因为数据只有在已经写入管道的情况下才在另一端可用,而将所有数据驻留在管道中是不好的。啊,那就使用FUSE吧。完美地解决了这个问题。谢谢可以访问视频的单个帧(),那么命名管道(frame1)不可能访问该帧吗?然后,不知何故,将新帧重新注入()。可以按照第一个链接中所述从视频文件中读取各个帧,但是回写各个帧是有问题的。无论如何,命名管道也不会做你想做的事情,因为数据只有在已经写入管道的情况下才在另一端可用,而将所有数据驻留在管道中是不好的。啊,那就使用FUSE吧。完美地解决了这个问题。谢谢