#ffmpeg #streaming
Вопрос:
У меня есть команда ffmpeg, которую я хочу преобразовать RTSP в широковещательную передачу RTMP. Перед трансляцией я хочу наложить на кадр изображение.
Итак, вот мой конвейер:
- поток чтения из RTSP
- наложение изображения
- трансляция RTMP (Youtube)
Я попробовал выполнить какую-то команду, но встретил сообщение об ошибке:
- Вот моя команда
Причина, по которой я использовал anullsrc, заключается в том, что сервер RTMP должен вводить аудиопоток, но в моем видеопотоке нет звука
ffmpeg -i image.jpg -i <rtsp://server> -filter_complex "[1:v][0:v]overlay" -f lavfi -i anullsrc -rtsp_transport udp -t 12:00:00 -pix_fmt -tune zerolatency -sstrict expreimental -f flv <rtmp:// server>
- сообщение об ошибке
[rtsp @ 0000021890521700] Thread message queue blocking; consider raising the thread_queue_size option (current value: 8)
The filters 'graph 0 input from stream 0:0' and 'Parsed_overlay_0' do not have a common format and automatic conversion is disabled.
Error reinitializing filters!
Failed to inject frame into filter network: Invalid argument
Error while processing the decoded data for stream #0:0
Conversion failed!
- все сообщение
Input #0, image2, from 'image.jpg':
Duration: 00:00:00.04, start: 0.000000, bitrate: 1763 kb/s
Stream #0:0: Video: mjpeg (Baseline), yuvj420p(pc, bt470bg/unknown/unknown), 225x225 [SAR 1:1 DAR 1:1], 25 fps, 25 tbr, 25 tbn
Input #1, rtsp, from 'rtsp://~~~~~~~~~~~~~~~':
Metadata:
title : RTMP Server
comment : RTMP Server Session Description : standard
Duration: N/A, start: 0.034000, bitrate: N/A
Stream #1:0: Video: h264 (Main), yuvj420p(pc, bt709, progressive), 1920x1080, 30 tbr, 90k tbn
Input #2, lavfi, from 'anullsrc':
Duration: N/A, start: 0.000000, bitrate: 705 kb/s
Stream #2:0: Audio: pcm_u8, 44100 Hz, stereo, u8, 705 kb/s
Codec AVOption tune (The metric that the encoder tunes for. Automatically chosen by the encoder by default) specified for output file #0 (rtmp://a.rtmp.youtube.com/live2/~~~~~~~~~~~~~~~) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some encoder which was not actually used for any stream.
Stream mapping:
Stream #0:0 (mjpeg) -> overlay:overlay (graph 0)
Stream #1:0 (h264) -> overlay:main (graph 0)
overlay (graph 0) -> Stream #0:0 (flv)
Stream #2:0 -> #0:1 (pcm_u8 (native) -> mp3 (libmp3lame))
Press [q] to stop, [?] for help
[rtsp @ 0000021890521700] Thread message queue blocking; consider raising the thread_queue_size option (current value: 8)
The filters 'graph 0 input from stream 0:0' and 'Parsed_overlay_0' do not have a common format and automatic conversion is disabled.
Error reinitializing filters!
Failed to inject frame into filter network: Invalid argument
Error while processing the decoded data for stream #0:0
Conversion failed!
Спасибо.
Ответ №1:
Я решил сам.
Вот моя команда:
ffmpeg -f lavfi -i anullsrc -rtsp_transport udp -i <rtsp:~> -i <image.jpg> -filter_complex "[1:v][2:v]overlay" -tune zerolatency -vcodec libx264 -t 12:00:00 -pix_fmt yuvj420p -c:v libx264 -c:a aac -sstrict expreimental -f flv <rtmp:~>
Спасибо.