2.01.2024 / 22:20 | |
tapiko Пользователь Сейчас: Offline
Имя: Tapiko Регистрация: 24.03.2010
| aNNiMON, а где найти примеры ? в гугле не то находит (
|
3.01.2024 / 11:29 | |
SuperSystem Пользователь Сейчас: Offline
Имя: Dmitry Откуда: Киев Регистрация: 04.06.2017
| tapiko, вот чекни, не факт что это будет коректно работать, но реализация кастомного mpeg кодера выглядит както так: кодировщик mpeg видео из фреймов кодировщик mpeg видео из фреймов public class MPEGEncoder {
private static final int NAL_START_CODE = 0x00000001;
private static final int NAL_TYPE_I = 0x00;
private static final int NAL_TYPE_P = 0x01;
private static final int NAL_TYPE_B = 0x02;
private final int width;
private final int height;
private final int fps;
private ByteArrayOutputStream data;
public MPEGEncoder(int width, int height, int fps) {
this.width = width;
this.height = height;
this.fps = fps;
data = new ByteArrayOutputStream();
// Заголовок MPEG-1
data.write((byte) 0x00);
data.write((byte) 0x00);
data.write((byte) 0x01);
data.write((byte) 0xb3);
}
public void addFrame(int[] frame) {
int[] y = frame;
int[] u = frame;
int[] v = frame;
for (int i = 0; i < height; i++) {
for (int j = 0; j < width; j++) {
data.write((byte) y[i * width + j]);
data.write((byte) u[i * width / 2 + j / 2]);
data.write((byte) v[i * width / 2 + j / 2]);
}
}
}
public byte[] getEncodedData() {
// Наборы NAL
int frameCount = (int) Math.ceil(1.0 / (1.0 / fps));
for (int i = 0; i < frameCount; i++) {
// Начало кодового блока
data.write((byte) NAL_START_CODE);
// Тип кодового блока
if (i % 3 == 0) {
data.write((byte) NAL_TYPE_I);
} else {
data.write((byte) NAL_TYPE_P);
}
// Количество байтов данных
data.write((byte) (width * height * 3));
// Данные
data.write(data.toByteArray(), 0, width * height * 3);
}
return data.toByteArray();
}
}
как это юзать как это юзать int[] frame = new int[640 * 480];
// Заполнить кадр данными
MPEGEncoder encoder = new MPEGEncoder(640, 480, 30);
encoder.addFrame(frame);
// Получить закодированные данные
byte[] encodedData = encoder.getEncodedData();
__________________
HTML - !это язык программирования Изменено SuperSystem (3.01 / 11:37) (всего 2 раза) |
3.01.2024 / 11:46 | |
tapiko Пользователь Сейчас: Offline
Имя: Tapiko Регистрация: 24.03.2010
| SuperSystem, огромное спасибо
|
20.01.2024 / 22:51 | |
N0004 Пользователь Сейчас: Offline
Имя: Arthur Alunts Регистрация: 15.10.2023
| Вот мой код. Сам писал. Вуаля. Вроде бы работает. Функция: день года возвращает, берет дату. public static int date_To_DDD(int YYYY,int MM, int MD){
int max_DDD=0;
int Fe=28;
int ddd=0;
int I=0;
if (YYYY%4!=0){ Fe=28;max_DDD=365;}
else{Fe=29;max_DDD=366;}
int[]m= new int[12];
m[0]=31;
m[1]=Fe;
m[2]=31;
m[3]=30;
m[4]=31;
m[5]=30;
m[6]=31;
m[7]=31;
m[8]=30;
m[9]=31;
m[10]=30;
m[11]=31;
MM--;
if(MM<=11 && MM>=0 && MD>=1 && MD<=31){
for(int i =0;i<=MM-1;i++){ddd=ddd+m[i];}
I=ddd+MD;
}
else{ System.out.println("MD or MM is over of Bounds");}
System.out.println("YYYY: "+ YYYY+ " MM: "+ MM+ " MD: " + MD +" DDD: "+I);
return I;
}
Вопрос: есть ли у кого-нибудь такой же только чтоб: MyFunctoion(int день_года, int год){
return день_недели;
}
Нужен ручной метод.Thanks. Изменено N0004 (20.01 / 22:57) (всего 4 раза) |
21.01.2024 / 02:08 | |
SuperSystem Пользователь Сейчас: Offline
Имя: Dmitry Откуда: Киев Регистрация: 04.06.2017
| N0004, вот чекни: public static int MyFunction(int dayOfYear, int year) {
// Корректировка dayOfYear для високосных годов
// Если год делится на 4, но не делится на 100, или делится на 400
// И день года больше 59 (после 29 февраля), увеличиваем день года на 1
if (((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) && dayOfYear > 59) {
dayOfYear++;
}
// Алгоритм Конгруэнтности Целлера (Zeller's Congruence)
// Формула h = (q + [(13*(m+1))/5] + K + [K/4] + [J/4] - 2*J) % 7
// Где q - день месяца, m - месяц (3 - март, 4 - апрель, ..., 14 - февраль предыдущего года),
// K - последние две цифры года, J - первые две цифры года
int h = (dayOfYear + (13 * 3 + 1) / 5 + year + year / 4 - year / 100 + year / 400) % 7;
// Алгоритм Конгруэнтности Целлера возвращает значения от 0 (суббота) до 6 (пятница)
// Корректировка для возвращения значений от 1 (воскресенье) до 7 (суббота)
return (h + 5) % 7 + 1;
}
__________________
HTML - !это язык программирования |