Пример публикации пакета Golang joy4 не работает

Сначала я запустил сервер, а затем запустил rtmp_publish, чтобы опубликовать данные FLV на сервере. К сожалению, это не сработало.

После этого я попытался опубликовать с помощью ffmpeg:

$ ffmpeg -re -i projectindex.flv -c copy -f flv rtmp://localhost:1936/app/publish

Это сработало, и я смог воспроизвести поток с помощью VLC.

Затем я проверил журнал на сервере. Для ffmpeg журнал содержит Accept и Parsing URL. Но для rtmp_publish.go журнал содержит только Accept.

Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
API ввода вопросов - это полезный инструмент для интеграции моделей машинного обучения, таких как ChatGPT, в приложения, требующие обработки...
1
0
59
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я протестировал файл flv (sample-3.flv), загруженный с https://getsamplefiles.com/sample-video-files/flv, и оба ffmpeg и rtmp_publish/main.go работают. Не могли бы вы проверить с этим файлом?

Если это работает, то, скорее всего, FLV-файл, который вы тестировали сначала, содержит поток, который не поддерживается пакетом.

Я проверил информацию sample-3.flv с ffprobe:

$ ffprobe sample-3.flv
Input #0, flv, from 'sample-3.flv':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf56.15.102
  Duration: 00:00:30.08, start: 0.000000, bitrate: 7836 kb/s
  Stream #0:0: Video: h264 (Constrained Baseline), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 8000 kb/s, 25 fps, 25 tbr, 1k tbn

Вы можете проверить свой и сравнить вывод с приведенным выше (но я не знаю, что поддерживается или не поддерживается пакетом).


Примечания для тех, кто хочет запустить пример:

Во-первых, исходный код пакета не содержит файла go.mod. Создайте один в корне репозитория:

$ go mod init github.com/nareix/joy4

http_flv_and_rtmp_server по умолчанию слушает порт 1935. Итак, если мы не меняем сервер, мы должны изменить rtmp_publish/main.go:

- file, _ := avutil.Open("projectindex.flv")
- conn, _ := rtmp.Dial("rtmp://localhost:1936/app/publish")
+ file, _ := avutil.Open("sample-3.flv")
+ conn, _ := rtmp.Dial("rtmp://localhost:1935/app/publish")

И команда ffmpeg должна быть:

$ ffmpeg -re -i sample-3.flv -c copy -f flv rtmp://localhost:1935/app/publish

И трансляцию можно воспроизвести с помощью ffplay:

$ ffplay http://localhost:8089/app/publish

Убедитесь, что sample-3.flv находится в текущем рабочем каталоге при запуске ffmpeg или go run rtmp_publish/main.go

Спасибо за ответ, да, вы правы. Но я имею в виду, что после включения сервера, когда я командую ffmpeg -re -i sample-3.flv -c copy -f flv rtmp://localhost:1935/app/publish. Я могу воспроизводить FLV-видео с помощью VLC Player с сетевым потоком. ffmpeg опубликовал данные FLV. но если я использую rtmp_publish/main.go, он не работает, как ffmpeg cmd. отличается от комментариев владельца репо "// аналогично: ffmpeg -re -i projectindex.flv -c copy -f flv rtmp://localhost:1936/app/publish" После выполнения rtmp_publish/main.go я не могу играть FLV-видео с сетевым потоком VLC Player.

Kundera 14.04.2023 07:57

Только что подтвердил, я могу воспроизвести его в проигрывателе VLC. URL-адрес, который я ввожу в проигрыватель VLC: http://localhost:8089/app/publish.

Zeke Lu 14.04.2023 08:11

Спасибо за ответ, это работает очень хорошо. Я думаю, что перед использованием файла sample-3.flv мой файл изначально был файлом mp4, и я переименовал файл flv. это причина не работы. Большое спасибо.

Kundera 14.04.2023 08:29

Другие вопросы по теме