FFMpeg - объединить несколько входных потоков rtmp в один выходной поток rtmp

Я пытаюсь объединить/объединить два потока rtmp, а затем опубликовать их в другом потоке.

Ex.:

ffmpeg -i rtmp://ip:1935/live/micMyStream7 -i rtmp://ip:1935/live/MyStream7  -strict -2  -f flv rtmp://ip:1935/live/bcove7

Сценарий следующий: я получил поток, который исходит от микрофона пользователя, который является первым (micMyStream7), и я также получил поток от другого пользователя, но у этого есть аудио и видео (MyStream7).

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

Моя идея состоит в том, чтобы настроить третий поток под названием (bcove), который бы «объединил» их обоих, чтобы у меня были зрители, которые только слушали бы весь разговор между ними.

Это журнал, который напечатал ffmpeg, хотя я не смог распознать ни одного сообщения, которое помогло бы мне.

paulo@paulo-desktop:~$ ffmpeg -re -i rtmp://ip:1935/live/micMyStream7 -i rtmp://ip:1935/live/MyStream7  -strict -2  -f flv rtmp://ip:1935/live/bcove7
ffmpeg version N-56029-g2ffead9 Copyright (c) 2000-2013 the FFmpeg developers
  built on Sep  4 2013 11:05:57 with gcc 4.7 (Ubuntu/Linaro 4.7.3-1ubuntu1)
  configuration: 
  libavutil      52. 43.100 / 52. 43.100
  libavcodec     55. 31.100 / 55. 31.100
  libavformat    55. 16.100 / 55. 16.100
  libavdevice    55.  3.100 / 55.  3.100
  libavfilter     3. 83.102 /  3. 83.102
  libswscale      2.  5.100 /  2.  5.100
  libswresample   0. 17.103 /  0. 17.103
Input #0, flv, from 'rtmp://ip:1935/live/micMyStream7':
  Metadata:
    author          : 
    copyright       : 
    description     : 
    keywords        : 
    rating          : 
    title           : 
    presetname      : Medium Bandwidth (300 Kbps) - VP6
    creationdate    : Wed Sep  4 16:41:52 2013
                    : 
    videodevice     : Built-in iSight
    videokeyframe_frequency: 5
    audiodevice     : External microphone
    audiochannels   : 1
    audioinputvolume: 75
  Duration: N/A, start: 0.000000, bitrate: 253 kb/s
    Stream #0:0: Video: vp6f, yuv420p, 320x240, 204 kb/s, 44.83 tbr, 1k tbn, 1k tbc
    Stream #0:1: Audio: mp3, 22050 Hz, mono, s16p, 49 kb/s
Input #1, flv, from 'rtmp://ip:1935/live/MyStream7':
  Metadata:
    author          : 
    copyright       : 
    description     : 
    keywords        : 
    rating          : 
    title           : 
    presetname      : Custom
    creationdate    : Wed Sep  4 12:02:24 2013
                    : 
    videodevice     : FaceTime HD Camera (Built-in)
    videokeyframe_frequency: 5
    audiodevice     : Internal microphone
    audiochannels   : 1
    audioinputvolume: 75
  Duration: N/A, start: 0.000000, bitrate: 253 kb/s
    Stream #1:0: Video: vp6f, yuv420p, 320x240, 204 kb/s, 45.08 tbr, 1k tbn, 1k tbc
    Stream #1:1: Audio: mp3, 22050 Hz, mono, s16p, 49 kb/s
Output #0, flv, to 'rtmp://ip:1935/live/bcove7':
  Metadata:
    author          : 
    copyright       : 
    description     : 
    keywords        : 
    rating          : 
    title           : 
    presetname      : Medium Bandwidth (300 Kbps) - VP6
    creationdate    : Wed Sep  4 16:41:52 2013
                    : 
    videodevice     : Built-in iSight
    videokeyframe_frequency: 5
    audiodevice     : External microphone
    audiochannels   : 1
    audioinputvolume: 75
    encoder         : Lavf55.16.100
    Stream #0:0: Video: flv1 (flv) ([2][0][0][0] / 0x0002), yuv420p, 320x240, q=2-31, 200 kb/s, 1k tbn, 44.83 tbc
    Stream #0:1: Audio: adpcm_swf ([1][0][0][0] / 0x0001), 22050 Hz, mono, s16, 88 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (vp6f -> flv)
  Stream #0:1 -> #0:1 (mp3 -> adpcm_swf)
Press [q] to stop, [?] for help
[mp3 @ 0x3625ec0] overread, skip -9 enddists: -3 -300:14.44 bitrate= 224.0kbits/s    
[mp3 @ 0x3625ec0] overread, skip -7 enddists: -3 -30:26.39 bitrate= 203.5kbits/s  

заранее спасибо


person Paulo Miguel Almeida    schedule 04.09.2013    source источник
comment
Пожалуйста, включите полный вывод консоли ffmpeg. По умолчанию ffmpeg будет включать только один тип потока для каждого вывода. См. выбор потока. Можете ли вы уточнить, что вы подразумеваете под слиянием? Вы хотите отображение сверху и снизу, рядом, картинка в картинке, наложение и т. д.?   -  person llogan    schedule 04.09.2013
comment
Обновил мой вопрос. Дайте мне знать, если чего-то не хватает, и спасибо за внимание.   -  person Paulo Miguel Almeida    schedule 05.09.2013
comment
Оба входа имеют видеопоток. Следует ли игнорировать видеопоток от micMyStream7?   -  person llogan    schedule 05.09.2013
comment
На самом деле в продакшене не будет видеопотока от micMyStream7. Поскольку я использовал Flash Media Encoder для моделирования этого потока, я случайно забыл удалить опцию проверки для видео. мой плохой =)   -  person Paulo Miguel Almeida    schedule 05.09.2013


Ответы (1)


Скопируйте видеопоток и смешайте два монопотока

Используйте amix или объединить аудио фильтр.

Для двух входов RTMP:

ffmpeg -i rtmp://ip:1935/live/micMyStream7 -i rtmp://ip:1935/live/MyStream7 -filter_complex "[0:a][1:a]amix[a]" -map 0:v -map "[a]" -c:v copy -f flv rtmp://ip:1935/live/bcove7

Для ввода RTMP и дополнительного зацикливающегося аудиофайла:

ffmpeg -i rtmp://ip:1935/live/micMyStream7 -re -stream_loop -1 -i input.mp3 -filter_complex "[0:a][1:a]amix[a]" -map 0:v -map "[a]" -c:v copy -c:a aac -f flv rtmp://ip:1935/live/bcove7
person llogan    schedule 05.09.2013
comment
Как добавить дополнительный аудиофайл в поток rtmp, в котором уже есть аудио и видео. Я хочу добавить какую-нибудь фоновую музыку в свой поток... IE. (Видео+Аудио) + bgmusic.mp3 = НА ОДИН RTMP. - person Amit Kumar Khare; 21.07.2020
comment
Спасибо @llogan, попробую и сообщу вам о результатах. - person Amit Kumar Khare; 24.07.2020