linux生成文件 编码格式,Linux查看文件编码格式及文件编码转换(示例代码)

Linux查看文件编码格式及文件编码转换

在Linux 中专门提供了一种工具convmv进行文件 名 编码 的转换 ,可以将文件 名 从GBK转换 成UTF-8编码 ,或者从UTF-8转换 到GBK。

首先看一下你的系统上是否安装了convmv,如果没安装的话用:

yum -y install convmv

安装。

下面看一下convmv的具体用法:

convmv -f 源编码 -t 新编码 [选项] 文件 名

常用参数:

-r 递归处理子文件 夹

--notest 真正进行操作,请注意在默认情况下是不对文件 进行真实操作的,而只是试验。

--list 显示所有支持的编码

--unescap 可以做一下转义,比如把%20变成空格

比如我们有一个utf8编码 的文件 名 ,转换 成GBK编码 ,命令如下:

convmv -f UTF-8 -t GBK --notest utf8编码 的文件 名

这样转换 以后"utf8编码 的文件 名 "会被转换 成GBK编码 (只是文件 名 编码 的转换 ,文件 内容不会发生变化)。

注意:不要在NTFS和FAT文件 系统中使用此命令,否则可能产生意外结果,如果要在Linux 中正确的显示NTFS和 FAT的中文件名,可以通过mount参数来解决,具体方法查看一下man手册。

执行convmv --list查看如图所示:

8323d81d827c0773b92be9526340e5e9.png

本文出自 “李世龙” 博客,谢绝转载!

Linux下使用FFmpeg将RGB24格式的数据流通过RK MPP的硬编码功能转换为H264并保存为MP4文件,你需要编写一个C程序,这里提供一个基本的步骤和示例代码框架: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ffmpeg/avcodec.h> #include <ffmpeg/avformat.h> // 假设data是一个指向RGB24数据的指针,width和height是图像尺寸 void process_rgb24_data(void *data, int width, int height) { AVCodecContext *codec_ctx; AVFrame frame; uint8_t *buffer; int size; // 初始化FFmpeg结构 av_register_all(); avformat_network_init(); // 创建视频编码上下文 codec_ctx = avcodec_alloc_context3(NULL); codec_ctx->codec_id = AV_CODEC_ID_H264; // 设置为H264编码 codec_ctx->width = width; codec_ctx->height = height; codec_ctx->pix_fmt = PIX_FMT_YUV420P; // 常用格式 // 链接和初始化编码器 if (avcodec_open2(codec_ctx, avcodec_find_encoder(AV_CODEC_ID_H264), NULL) != 0) { perror("Could not open codec"); exit(1); } // 创建帧,并设置数据 av_frame_unref(frame); frame.data[0] = data; frame.linesize[0] = width * 3; // RGB24每像素3字节 frame.width = width; frame.height = height; frame.format = PIX_FMT_RGB24; // 将RGB24帧编码为H264 buffer = av_malloc((frame.size + FF_INPUT_BUFFER_PADDING_SIZE)*sizeof(uint8_t)); if (!buffer) { perror("Could not allocate memory for output buffer"); exit(1); } while (avcodec_encode_video2(codec_ctx, buffer, &frame, 0 /* best effort */) >= 0) { // 编码成功,写入到文件 AVIOContext *pb = avio_open("output.mp4", "ab", 0); if (!pb) { perror("Could not open output file"); exit(1); } size = avio_write(pb, buffer, frame.size); avio_close(pb); // 清理内存和释放帧 av_free(buffer); buffer = NULL; } // 错误处理和清理 if (avcodec_close(codec_ctx)) { perror("Error closing codec"); } av_frame_unref(frame); } int main() { // 实际应用中,需要替换为从数据流获取RGB24数据的地方 void *data = ...; int width = ...; int height = ...; process_rgb24_data(data, width, height); return 0; } ``` **
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值