将h265编码数据存为h265文件,且h265文件有可读可写可执行权限

发布时间:2026/7/14 7:48:03
将h265编码数据存为h265文件,且h265文件有可读可写可执行权限
将h265编码数据存为h265文件且h265文件有可读可写可执行权限void read_fun_save_h265_file(const uint8_t *data, int len) { static FILE *fp NULL; if (fp NULL) { fp fopen(./read_fun.h265, wb); if (!fp) { perror(fopen); return; } } // 设置文件权限为 0777 chmod(./read_fun.h265, 0777); fwrite(data, 1, len, fp); fflush(fp); } // 调用示例 read_fun_save_h265_file(frame, len); // 实际调用示例 void *thread_VideoFrameData(void *arg) { (void)arg; ot_venc_stream stream; ot_venc_chn_status stat; td_u8 *aligned_buffer NULL; size_t buffer_size 0; int venc_list[] {0, 1, 3, 4}; int sensor_id[] {0, 0, 1, 1}; int stream_id[] {0, 1, 0, 1}; int record_en[] {1, 1, 0, 0}; // 录制标清 #ifdef ENABLE_DUAL_SENSOR int chn_cnt 4; #else int chn_cnt 2; #endif int s1_record_chn; while (g_video_run) { for (int k 0; k chn_cnt; k) { int venc_chn venc_list[k]; int ret ss_mpi_venc_get_stream(venc_chn, stream, TD_TRUE); if ( ret ! 0) { usleep(10 * 1000); // print(get_stream failed with %#x!\n, ret); free(stream.pack); continue; } int total_size 0; for (int i 0; i stream.pack_cnt; i) total_size stream.pack[i].len - stream.pack[i].offset; if (buffer_size (size_t)total_size) { free(aligned_buffer); buffer_size total_size; if (posix_memalign((void **)aligned_buffer, 128, buffer_size) ! 0) aligned_buffer NULL; } if (!aligned_buffer) { ss_mpi_venc_release_stream(venc_chn, stream); free(stream.pack); continue; } if (g_notify_func ! TD_NULL) { g_notify_func(k, stream.pack[0].pts); } td_u8 *dst aligned_buffer; int frame_type; for (int i 0; i stream.pack_cnt; i) { int sz stream.pack[i].len - stream.pack[i].offset; memcpy(dst, (td_u8 *)stream.pack[i].addr stream.pack[i].offset, sz); dst sz; if(venc_chn 0) { // 实际调用情况 read_fun_save_h265_file(stream.pack[i].addr stream.pack[i].offset, sz); } } ss_mpi_venc_release_stream(venc_chn, stream); free(stream.pack); usleep(1000); } } free(aligned_buffer); return NULL; }