资源简介
项目基于CodeBlocks (mingw)构建,编译得到一个命令行程序,使用方法如下所示(很简单吧,实际效果经过验证相当不错):
mjpeg [-f fps] [-o output.avi] [-s input.mp3] input1.jpg [input2.jpg ...]
代码片段和文件信息
/*
* jpeg.c - MJPEG creator tool (https://github.com/nanoant/mjpeg)
*
* Copyright (c) 2011 Adam Strzelecki
*
* Permission is hereby granted free of charge to any person obtaining
* a copy of this software and associated documentation files (the
* “Software“) to deal in the Software without restriction including
* without limitation the rights to use copy modify merge publish
* distribute sublicense and/or sell copies of the Software and to
* permit persons to whom the Software is furnished to do so subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED “AS IS“ WITHOUT WARRANTY OF ANY KIND
* EXPRESS OR IMPLIED INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM DAMAGES OR OTHER LIABILITY WHETHER IN AN ACTION
* OF CONTRACT TORT OR OTHERWISE ARISING FROM OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
#include
#include
#include
#define JPEG_MARKER_MASK 0xFF00
#define JPEG_HEAD_MARKER 0xFFD8
#define JPEG_APP0_MARKER 0xFFE0
static uint16_t jpeg_markers[] = {
0xFFC0 0xFFC1 0xFFC2 0xFFC3
0xFFC5 0xFFC6 0xFFC7
0xFFC9 0xFFCA 0xFFCB
0xFFCD 0xFFCE 0xFFCF
};
typedef struct {
uint16_t marker;
uint16_t size;
} __attribute__((packed)) JPEG_CHUNK;
typedef struct {
uint8_t unknown;
uint16_t height;
uint16_t width;
} __attribute__((packed)) JPEG_SIZE;
int jpeg_size(const char *path int *width int *height)
{
JPEG_CHUNK chunk;
JPEG_SIZE size;
int ret = 0 i;
FILE *in = fopen(path “rb“);
if(!in) return 0;
if(fread(&chunk.marker 1 sizeof(chunk.marker) in) == sizeof(chunk.marker)) {
chunk.marker = ntohs(chunk.marker);
if(chunk.marker == JPEG_HEAD_MARKER) {
while(!ret) {
if(fread(&chunk 1 sizeof(chunk) in) != sizeof(chunk)) break;
chunk.marker = ntohs(chunk.marker);
chunk.size = ntohs(chunk.size);
if((chunk.marker & JPEG_MARKER_MASK) != JPEG_MARKER_MASK) break;
for(i = 0; i < sizeof(jpeg_markers) / sizeof(*jpeg_markers); i++) {
if(chunk.marker == jpeg_markers[i]) {
if(fread(&size 1 sizeof(size) in) != sizeof(size)) {
ret = 0; break;
}
if(width) *width = ntohs(size.width);
if(height) *height = ntohs(size.height);
ret = 1;
break;
}
}
fseek(in chunk.size - sizeof(chunk.size) SEEK_CUR);
}
}
}
fclose(in);
return ret;
}
- 上一篇:EX4_TO_MQ4_2019.rar
- 下一篇:汇编打字游戏课程设计
相关资源
- Navicat Premium 15汉化包.zip55438
- 将yuv各种格式的图片转换为jpg格式的
- Behaviors of fatigue crack propagation in fric
- 超强JPG图片压缩工具,减小图片文件
- Navicat Keygen Patch v5.6.0 DFoX
- Navicat V11全系列注册机
- Investigation on the present situation of envi
- WinAVI 8.0 绿色中文版
- Analytical behaviour of concrete-encased CFST
- Global existence and behavior in thehigher-dim
- PatchNavicat11.0.10破解文件亲测可用
- Behavior Designer 1.6.3(u2018.3.0).unitypa
- navicat注册机含详细使用说明
- 电子-GravityI2C3.7V锂电池电量计stm32L1
- Navicat 完整版 (Mac 破解版,亲试成功
- Google DeepMind的David Silver的强化学习课
- 单反相机的JPG和RAW文件同步删除
- 基于ffmpeg将avi视频转换为mp4视频
- 屏幕录像专家 exe转avi 视频快放
- ffmpeg转换MP4为JPG帧图片
- 操作系统_思维导图_xmind+jpg格式
- ffmpeg提取mp4关键帧保存为jpg.zip
- ffmpeg h264 转换jpg
- 利用FFmpeg将Jpeg图片转为任意视频容器
- ffmpeg封装H264成MP4、AVI视频格式,及提
- Microstructure transformation behavior and mec
- 论文研究 - 墨西哥瓦哈卡恰帕斯州C
- 编程常用的素材(含png、jif、bmp、j
- edjpgcom图片木马合成
- \\edjpgcom(1).zip
评论
共有 条评论