Освойте технологию потокового вещания в одной статье: сбор, кодирование, передача и воспроизведение аудио и видео в реальном времени.
Освойте технологию потокового вещания в одной статье: сбор, кодирование, передача и воспроизведение аудио и видео в реальном времени.

От игр, образования, электронной коммерции до развлечений — сценарии применения технологий прямого вещания повсюду. Поскольку скорость Интернета мобильных терминалов становится все выше и выше, популярность и развитие технологии прямого вещания будут еще быстрее.

В этой статье подробно представлена ​​вся картина технологии прямого вещания, охватывающая все аспекты: от сбора аудио и видео в реальном времени, кодирования, передачи до декодирования и воспроизведения. В статье также обсуждаются такие ключевые вопросы, как синхронизация аудио и видео во время прямой трансляции, выбор кодека, протокол передачи и оптимизация задержки прямой трансляции. Я надеюсь, что эта статья предоставит вам более глубокое понимание и практические рекомендации по технологии прямого вещания.

1. Сбор аудио и видео в реальном времени.

1.1 Оборудование для сбора аудио и видео и API

В устройствах Android сбор аудио и видео в основном зависит от двух аппаратных устройств: камеры и микрофона. Камера отвечает за сбор изображений, а микрофон — за сбор звука. Для вызова этих двух устройств Android предоставляет API камеры и API AudioRecord. С помощью этих двух API мы можем легко управлять устройством и получать аудио- и видеоданные. Ниже приведены конкретные практические шаги:

  1. использовать Camera или Camera2 API Чтобы вызвать камеру:
Язык кода:javascript
копировать
// Camera API
Camera camera = Camera.open();
Camera.Parameters parameters = camera.getParameters();
parameters.setPreviewSize(width, height);
camera.setParameters(parameters);
camera.setPreviewCallback(previewCallback);
camera.startPreview();

// Camera2 API
CameraManager cameraManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
String cameraId = cameraManager.getCameraIdList()[0];
CameraCharacteristics characteristics = cameraManager.getCameraCharacteristics(cameraId);
StreamConfigurationMap map = characteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
Size[] previewSizes = map.getOutputSizes(SurfaceTexture.class);
// Выберите подходящий размер предварительного просмотра
cameraManager.openCamera(cameraId, stateCallback, null);
  1. использовать AudioRecord API Чтобы вызвать микрофон:
Язык кода:javascript
копировать
int bufferSize = AudioRecord.getMinBufferSize(sampleRate, channelConfig, audioFormat);
AudioRecord audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC, sampleRate, channelConfig, audioFormat, bufferSize);
audioRecord.startRecording();

1.2 Настройки параметров аудио и видео коллекции

Качество и плавность сбора аудио и видео во многом зависят от настроек параметров сбора. К этим параметрам относятся разрешение, частота кадров, битрейт и т. д.

  • Разрешение определяет четкость изображения. Высокое разрешение позволяет получить более четкие изображения.,Но это также увеличит объем данных.,Может вызвать сетевые передачи инфекции Повышенное давление。
  • Частота кадров определяет плавность видео. Высокая частота кадров может обеспечить более плавное видео, но также повысит его качество.
  • Скорость кода определяет аудио и видеоданныеиз Степень сжатия. Высокая скорость передачи данных может обеспечить более высокое качество аудио. и видео,Но это также увеличит объем данных.。

При настройке параметров сбора аудио и видео необходимо идти на соответствующие компромиссы с учетом условий сети и производительности устройства. Ниже приведены конкретные практические шаги:

  1. настройки Камеры Разрешение и Частота кадров:
Язык кода:javascript
копировать
Camera.Parameters parameters = camera.getParameters();
parameters.setPreviewSize(width, height);
parameters.setPreviewFrameRate(frameRate);
camera.setParameters(parameters);
  1. настройки AudioRecord по частоте дискретизации, количеству каналов и аудиоформату:
Язык кода:javascript
копировать
int sampleRate = 44100;
int channelConfig = AudioFormat.CHANNEL_IN_MONO;
int audioFormat = AudioFormat.ENCODING_PCM_16BIT;

1.3 Синхронизация аудио и видео и обработка временных меток

В прямом эфире синхронизация аудио и видео является важной проблемой. Чтобы добиться синхронизации, нам нужно добавить метку времени к каждому кадру аудио- и видеоданных. Временная метка записывает время сбора данных и может использоваться для настройки последовательности воспроизведения для обеспечения синхронизации аудио и видео. При декодировании и воспроизведении плеер правильно расположит и воспроизведет аудио- и видеоданные в соответствии с меткой времени.

Чтобы обработать данные и временные метки видеокадра, нам необходимо инкапсулировать собранные данные аудио- и видеокадров и соответствующие временные метки в структуру данных, а затем передать эту структуру кодировщику и модулю передачи. Вот простой способ сделать это:

  1. Сначала определите структуру данных для хранения временной метки данных кадров аудио и видео:
Язык кода:javascript
копировать
public class FrameData {
    public byte[] data;
    public long timestamp;

    public FrameData(byte[] data, long timestamp) {
        this.data = data;
        this.timestamp = timestamp;
    }
}
  1. Добавить временную метку в обратный вызов предварительного просмотра камеры:
Язык кода:javascript
копировать
camera.setPreviewCallback(new Camera.PreviewCallback() {
    @Override
    public void onPreviewFrame(byte[] data, Camera camera) {
        long timestamp = System.nanoTime();
        // Обработка данных и временных меток видеокадров
        FrameData frameData = new FrameData(data, timestamp);
        // Воля frameData Передано в модуль кодирования и передачи
    }
});
  1. существуют AudioRecord из Добавить временные метки в цикл записи:
Язык кода:javascript
копировать
while (isRecording) {
    long timestamp = System.nanoTime();
    int bytesRead = audioRecord.read(buffer, 0, bufferSize);
    // Обработка временной метки данных аудиокадра
    FrameData frameData = new FrameData(Arrays.copyOf(buffer, bytesRead), timestamp);
    // Воля frameData Передано в модуль кодирования и передачи
}
  1. В модуле передачи существованиякодирования аудио обрабатывается на основе объекта FrameData из метки времени. и видеорамкаданные。Например,существоватькодированиечас,Волячас Временная метка каккодированиеназадиз Аудио и видеоданныеизпоказыватьчасмежду;существоватьпередача инфекциичас,Настройте порядок и скорость отправки в соответствии с меткой времени.

Таким образом, при декодировании и воспроизведении проигрыватель может правильно упорядочивать и воспроизводить аудио- и видеоданные в соответствии с отметкой времени для достижения синхронизации.

2. Кодирование аудио и видео.

2.1 Формат кодирования звука (AAC, Opus и т. д.)

2.1.1 Сравнение форматов кодирования звука

Общие форматы кодирования звука включают AAC и Opus. AAC имеет более высокую эффективность кодирования, а Opus лучше работает при общении в реальном времени.

Формат кодирования аудио

преимущество

недостаток

Сценарии использования

AAC

1. Высокая эффективность кодирования, позволяющая поддерживать высокое качество звука при более низких скоростях передачи данных.

1. Слабая оптимизация задержек для общения в реальном времени.

1. Области коммуникации, не связанные с режимом реального времени, такие как музыка, радиовещание и видео.

2. Широко используется и хорошая совместимость с оборудованием.

2. При кодировании речи качество звука не такое хорошее, как у Opus.

2. Подходит для различных сетевых сред.

Opus

1. Высокое качество звука, особенно подходит для кодирования речи.

1. Относительно новый, совместимость устройств не такая хорошая, как у AAC.

1. Общение в реальном времени, такое как VoIP, онлайн-конференции, игровой голос и т. д.

2. Низкая задержка, подходит для общения в режиме реального времени.

2. Подходит для широкополосных и узкополосных сетевых сред.

3. Он обладает высокой сетевой адаптируемостью и может автоматически регулировать скорость передачи данных в различных сетевых средах для поддержания качества звука.

  • Формат кодирования AAC: подходит для областей связи, не работающих в режиме реального времени.,Например, музыка, радио, видео и т. д.,Высокая эффективность и широкая совместимость устройств,Но существующая оптимизация задержки слаба при общении в реальном времени.
  • Формат опускодирования: подходит для сферы общения в реальном времени.,Такие как VoIP, существуют онлайн-конференции, голосовая игра и т. д.,Он имеет высокое качество звука и высокую адаптируемость.,Но совместимость устройств относительно уступает AAC.
2.1.2 Реализация кодирования звука в Android

существовать Android Чтобы реализовать кодирование звука в Android предоставил MediaCodec добрый。MediaCodec поддерживать Различный Формат кодирования аудио, нравиться AAC и Opus ждать. Чтобы выбрать подходящий формат кодирования, вы можете выполнить следующие шаги:

  1. Создайте MediaCodec кодирование Экземпляр сервера:
Язык кода:javascript
копировать
MediaCodec audioEncoder = MediaCodec.createEncoderByType(MediaFormat.MIMETYPE_AUDIO_AAC);
  1. Настройте параметры устройства кодирования:
Язык кода:javascript
копировать
MediaFormat audioFormat = MediaFormat.createAudioFormat(MediaFormat.MIMETYPE_AUDIO_AAC, sampleRate, channelCount);
audioFormat.setInteger(MediaFormat.KEY_BIT_RATE, bitRate);
audioFormat.setInteger(MediaFormat.KEY_AAC_PROFILE, MediaCodecInfo.CodecProfileLevel.AACObjectLC);
audioEncoder.configure(audioFormat, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);
  1. начинатькодирование:
Язык кода:javascript
копировать
audioEncoder.start();

2.2 Формат кодирования видео (H.264, H.265, VP8 и т. д.)

2.2.1 Сравнение форматов кодирования видео

Распространенные форматы кодирования видео: H.264、H.265 и VP8 ждать. H.264 в настоящее время является наиболее часто используемым форматом кодирования, и H.265 и VP8 носуществовать Лучше в определенных сценарияхизпроизводительность。

Формат кодирования видео

преимущество

недостаток

Сценарии использования

H.264

1. Широко используемое и хорошая совместимость с оборудованием.

1. По сравнению с H.265 эффективность сжатия ниже.

1. Видеоконференции, веб-трансляции, обмен видео и т. д.

2. Высокая эффективность сжатия.,Могут существовать одновременно обеспечить качество видео,Уменьшите количество данных.

2. Оптимизация задержки для связи в реальном времени слабая.

2. Подходит для различных сетевых сред.

H.265

1. Эффективность сжатия чрезвычайно высока, что еще больше снижает объем данных по сравнению с H.264.

1. Кодирование и декодирование очень сложны и требуют более мощных вычислительных мощностей.

1. Видео сверхвысокой четкости 4K, 8K, виртуальная реальность и т. д.

2. Поддерживается более высокое разрешение и большая глубина цвета.

2. Относительно новый, совместимость устройств не такая хорошая, как у H.264.

2. Требуются сцены высокого разрешения и четкости.

VP8

1. Открытый исходный код и бесплатно, патентные пошлины не требуются.

1. Эффективность сжатия и качество видео не так хороши, как у H.264 и H.265.

1. сетевой видеозвонок, существуют онлайн-видеосервисы и т.п.

2. Низкая задержка, подходит для общения в режиме реального времени.

2. Плохая совместимость устройств.

2. Существуют требования и сценарии для открытого и бесплатного программного обеспечения.

  • Формат кодирования H.264: подходит для видеоконференций, прямых трансляций, обмена видео и других сценариев.,Высокая эффективность сжатия и широкая совместимость с устройствами.,Однако эффективность сжатия ниже, чем у H.265.
  • Формат кодирования H.265: подходит для 4K、Видео сверхвысокой четкости 8K, виртуальная реальность и т. д. требуют сцен высокого разрешения и высокого качества изображения.,Имеет чрезвычайно высокую эффективность сжатия.,Но сложность кодирования и декодирования высока,Нужно больше вычислительной мощности,А совместимость устройств относительно уступает H.264.
  • Формат кодирования VP8: подходит для сетевых видеозвонков, существующих онлайн-видеосервисов и т. д., требующих открытого исходного кода и бесплатных сценариев.,Низкая задержка,Подходит для общения в режиме реального времени,Но эффективность сжатия и качество видео не так хороши, как H.264 и H.265.,и Совместимость устройств плохая.
2.2.2 Реализация кодирования видео в Android

существовать Android Чтобы реализовать кодирование видео в , вы также можете использовать MediaCodec добрый. Чтобы выбрать подходящий формат кодирования, вы можете выполнить следующие шаги:

  1. Создайте MediaCodec кодирование Экземпляр сервера:
Язык кода:javascript
копировать
MediaCodec videoEncoder = MediaCodec.createEncoderByType(MediaFormat.MIMETYPE_VIDEO_AVC);
  1. Настройте параметры устройства кодирования:
Язык кода:javascript
копировать
MediaFormat videoFormat = MediaFormat.createVideoFormat(MediaFormat.MIMETYPE_VIDEO_AVC, width, height);
videoFormat.setInteger(MediaFormat.KEY_BIT_RATE, bitRate);
videoFormat.setInteger(MediaFormat.KEY_FRAME_RATE, frameRate);
videoFormat.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, iFrameInterval);
videoEncoder.configure(videoFormat, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);
  1. начинатькодирование:
Язык кода:javascript
копировать
videoEncoder.start();

2.3 Выбор, преимущества и недостатки аппаратного и программного кодирования

Эксплойт аппаратного кодирования GPU руководитькодирование,более высокая производительность,Но совместимость плохая, программное кодирование имеет лучшую совместимость;,Но производительность ниже. существуют в практическом применении,Его необходимо выбирать исходя из характеристик оборудования и потребностей.

существовать Android середина,MediaCodec Класс автоматически выберет аппаратное и программное устройство кодирования в зависимости от производительности и требований устройства. Чтобы принудительно использовать устройство аппаратного кодирования или устройство программного кодирования, вы можете создать существующее MediaCodec экземпляр, укажите имя кодировщика. Например, для использования аппаратного обеспечения H.264 Кодировщик, вы можете использовать следующий код:

Язык кода:javascript
копировать
MediaCodec videoEncoder = MediaCodec.createByCodecName("OMX.google.h264.encoder");

3. Протокол передачи

транспортный протокол

Введение

преимущество

недостаток

Соображения

RTMP

на основе TCP из транспортного протокола реального времени, подходящего для сценариев прямой трансляции.

низкая задержка

Высокие требования к сети

Задержка, адаптивность сети, сложность реализации

HLS

на основе HTTP-изтранспортного протокола, с лучшей иссетью адаптируемости.

Хорошая сетевая адаптируемость

более высокая задержка

Задержка, адаптивность сети, сложность реализации

WebRTC

поддерживать P2P коммуникацияиз Реальностьчастранспортный протокол,иметьнизкая задержкаи高Реальностьчассекс。

низкая задержка、高Реальностьчассекс

Высокая сложность и сложность реализации

Задержка, адаптивность сети, сложность реализации

4. Декодирование и воспроизведение аудио и видео.

4.1 Выбор и оптимизация производительности аудио- и видеодекодеров

декодериз Выбор влияет на качество воспроизведенияипроизводительность。в целом,аппаратное обеспечениедекодерболее высокая производительность,Но совместимость плохая, у программного декодера совместимость лучше;,Но производительность ниже. существуют в практическом применении,Его необходимо выбирать исходя из характеристик оборудования и потребностей.

существовать Android , выбор декодера можно сделать через MediaCodec добрый来Реальность现。MediaCodec поддерживатьаппаратное обеспечениедекодированиеипрограммное обеспечениедекодирование,Обычно,это будет зависеть от устройствапроизводительностьи Автоматический выбор требованийдекодер。

4.2 Стратегия рендеринга и синхронизации аудио и видео

существоватьрендеринг Аудио и видео, вам необходимо гарантировать аудио и синхронизация видео. Синхронизация может быть достигнута путем калибровки отметки времени или регулировки скорости воспроизведения.

существовать Android рендеринг аудио и видео может осуществляться с помощью SurfaceView или TextureView добиться. Чтобы обеспечить аудио и видеосинхронный,Могут рендерить данные каждого кадра,Отрегулируйте скорость рендеринга на основе временной метки. Ниже приведены конкретные практические шаги:

  1. Создайте SurfaceView или TextureView
Язык кода:javascript
копировать
SurfaceView surfaceView = new SurfaceView(context);
// или
TextureView textureView = new TextureView(context);
  1. существуют При декодировании данных каждого кадра настройте скорость рендеринга на основе временной метки:
Язык кода:javascript
копировать
long presentationTimeUs = bufferInfo.presentationTimeUs;
long delayUs = presentationTimeUs - System.nanoTime() / 1000;
if (delayUs > 0) {
    Thread.sleep(delayUs / 1000);
}
decoder.releaseOutputBuffer(outputBufferIndex, true);

4.3 Буферизация проигрывателя и адаптивная регулировка скорости передачи данных

Чтобы справиться с колебаниями сети, игроку необходимо настроить соответствующую стратегию буферизации. Адаптивная регулировка скорости передачи данных может динамически регулировать качество видео в соответствии с условиями сети, чтобы обеспечить плавность.

существовать Android , стратегия буферизации игрока может быть передана MediaPlayer или ExoPlayer из API установить. Адаптивная регулировка скорости передачи данных может быть достигнута за счет ExoPlayer из TrackSelection API добиться. Ниже приведены конкретные практические шаги:

  1. настраиватьигрокизбуферная стратегия:
Язык кода:javascript
копировать
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setBufferingUpdateListener(new MediaPlayer.OnBufferingUpdateListener() {
    @Override
    public void onBufferingUpdate(MediaPlayer mp, int percent) {
        // Обновление прогресса буфера
    }
});
// или
ExoPlayer exoPlayer = new SimpleExoPlayer.Builder(context).build();
exoPlayer.setBufferedPositionUpdateListener(new ExoPlayer.BufferedPositionUpdateListener() {
    @Override
    public void onBufferedPositionUpdate(long bufferedPosition) {
        // Обновление прогресса буфера
    }
});
  1. настройки адаптивной регулировки битрейта:
Язык кода:javascript
копировать
TrackSelection.Factory trackSelectionFactory = new AdaptiveTrackSelection.Factory();
DefaultTrackSelector trackSelector = new DefaultTrackSelector(context, trackSelectionFactory);
ExoPlayer exoPlayer = new SimpleExoPlayer.Builder(context).setTrackSelector(trackSelector).build();

5. Обзор архитектуры прямого вещания

5.1 Схема архитектуры прямой трансляции

Ниже представлена ​​схема архитектуры прямой трансляции:

Язык кода:javascript
копировать
Нажмите конец:
+----------------+    +----------------+    +----------------+
| Модуль сбора данных       | -> | кодированиеустройство         | -> | Модуль передачи       |
| (Аудио и видео подборка)   |    | (Аудио и видеокодирование)   |    | (Аудио и видеопередача)   |
+----------------+    +----------------+    +----------------+

Серверная часть:
+----------------+    +----------------+    +----------------+
| балансировка нагрузки       | -> | Перекодировать           | -> | Записывать           |
| (Прием и распределение потоков) |    | (конвертировать формат кодирования) |    | (Хранилище Аудио и видеоданные)|
+----------------+    +----------------+    +----------------+

Конец трансляции:
+----------------+    +----------------+    +----------------+
| декодер         | -> | модуль рендеринга       | -> | игрок         |
| (Аудио и декодирование видео)   |    | (Аудио и видеорендеринг)   |    | (Аудио и видеоигра)   |
+----------------+    +----------------+    +----------------+
  • Нажимной конец должен реализовать Audio и видеоколлекция、кодирование、передача инфекции и другие функции. Ключевые компоненты включают Модуль сбора данных、кодированиеустройство、Модуль передачиждать。
  • сервер Конец отвечает за получение、Переслать и сохранить аудио и видеоданные. Ключевые компоненты включают балансировку нагрузки、Перекодировать、Записыватьждать Функциональный модуль。
  • На стороне потоковой передачи необходимо реализовать аудио и видеодекодирование、рендерингиигратьждать Функция。Ключевые компоненты включают в себядекодер、модуль рендеринга、игрокждать。

5.2 Задержка прямой трансляции и стратегия оптимизации

Задержка прямой трансляции повлияет на удобство использования. Привлечение через оптимизацию、кодирование、передача инфекции、декодированиеждатьсвязь,Можно уменьшитьнизкая задержка, улучшение производительности в режиме реального времени. Стратегии оптимизации задержки прямой трансляции включают в себя:

  1. оптимизация Модуль сбора данных:улучшатьколлекцияэффективность,Сократите время обработки данных.
  2. оптимизациякодированиеустройство:выбиратьболее высокая производительностьизкодированиеустройство,Сократите время кодирования.
  3. оптимизация Модуль передачи:оптимизациясетьпередача инфекции Стратегия,нравитьсяиспользовать Быстрееизтранспортный протокол, улучшить пропускную способность сети и т. д.
  4. оптимизациядекодер:выбиратьболее высокая производительностьиздекодер,Сократите время декодирования.
  5. оптимизациямодуль рендерингаиигрок:улучшатьрендерингэффективность,Уменьшите задержки воспроизведения.

6. Резюме

В этой статье представлена ​​вся картина технологии прямого вещания.,От коллекции аудио и видео в реальном времени до воспроизведения каждой ссылки.,Ниже приведена упрощенная блок-схема прямой трансляции:

Язык кода:javascript
копировать
+-------------+      +-------------+      +-------------+
| Модуль сбора данных     | ---> | кодированиеустройство       | ---> | Модуль передачи     |
+-------------+      +-------------+      +-------------+
                                   |
                                   v
                              +-------------+
                              | сервер       |
                              +-------------+
                                   |
                                   v
                              +-------------+      +-------------+      +-------------+
                              | декодер       | ---> | модуль рендеринга     | ---> | игрок       |
                              +-------------+      +-------------+      +-------------+

Процесс прямой трансляции включает в себя следующие ключевые звенья:

  1. Аудио в реальном времени и коллекция видео: собирайте аудио через камеру и микрофон и видеоданные и выполнить синхронизацию параметров настройки.
  2. Аудио и видеокодирование:Воляколлекцияприезжатьиз Аудио и видеоданныеруководитькодирование,для передачи. Выберите подходящий инструмент для изкодирования. Формат икодирования.,Такие как AAC, Opus, H.264, H.265иVP8 и т. д.
  3. транспортный протокол:выбиратьподходящийизтранспортный протокол, такой как RTMP, HLSиWebRTC и т. д. для обеспечения аудио и видеоданныеиз Реальностьчаспередача инфекции。
  4. сервериметь дело с:серверперенимать、Переслать и сохранить аудио и видеоданные,руководитьбалансировка нагрузки、Перекодироватьи Записыватьждатьиметь дело с。
  5. Аудио и видеодекодирование与играть:Воляперениматьприезжатьиз Аудио и видеоданные декодируют, рендерят и воспроизводят для достижения аудио и синхронизация видео и оптимизация задержки.

существуют в практическом применении,Необходимо выбрать подходящую технологию и стратегию в соответствии с потребностями и сценариями.,для достижения высокого качества、низкая задержкаиз живого опыта.

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose