Сначала я запустил сервер, а затем запустил 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
.
Я протестировал файл 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
Только что подтвердил, я могу воспроизвести его в проигрывателе VLC. URL-адрес, который я ввожу в проигрыватель VLC: http://localhost:8089/app/publish
.
Спасибо за ответ, это работает очень хорошо. Я думаю, что перед использованием файла sample-3.flv мой файл изначально был файлом mp4, и я переименовал файл flv. это причина не работы. Большое спасибо.
Спасибо за ответ, да, вы правы. Но я имею в виду, что после включения сервера, когда я командую 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.