请教 ffmpeg 组合视频和音频流

2023-03-21 19:44:39 +08:00
 jaleo
两个视频流,rtmp://stream-1(1080P 无声) 和 rtmp://stream-2(480P 有音频)
想把 stream-1 的视频和 stream-2 的音频组合成新的流输出
我自己尝试:
ffmpeg -i "rtmp://stream-1" -i "rtmp://stream-2" -c:v copy -c:a copy -f flv "rtmp://stream-3"
这样的命令似乎是用了第一个视频和第二个音频,能输出 stream-3 流,但是运行时有错误提示 missing picture in access unit with size xx ,不知道什么原因,所以请教下正确的命令格式。
892 次点击
所在节点    问与答
7 条回复
nodejx
2023-03-21 20:27:48 +08:00
Testing GPT 4:


根据你提供的信息,我认为你需要使用 FFmpeg 的 filter_complex 选项来将两个流合并。以下是一个示例命令,你可以根据需要进行修改:


ffmpeg -i rtmp://stream-1 -i rtmp://stream-2 -filter_complex "[0:v]scale=1920x1080,setsar=1[v0];[1:a]aresample=44100[a1];[0:a]aformat=sample_fmts=fltp:sample_rates=44100:channel_layouts=stereo[a0];[v0][a0][a1]concat=n=1:v=1:a=1" -f flv rtmp://stream-3

这个命令将第一个流的视频缩放到 1080p 并设置像素宽高比,将第一个流的音频格式转换为 FLTP ,将第二个流的音频重新采样为 44100Hz ,然后将所有流连接在一起。最后,将输出流编码为 FLV 格式并将其发送到 rtmp://stream-3 。

希望这可以帮助到你!
zbinlin
2023-03-21 21:12:28 +08:00
ffmpeg -i "rtmp://stream-1" -c:v copy -i "rtmp://stream-2" -c:a copy -f flv "rtmp://stream-3"

应该是这样吧?
jaleo
2023-03-21 21:25:46 +08:00
@zbinlin 试了会报错 Unknown decoder "copy"
@nodejx 按照示例没成功 也是报错

网上说 missing picture in access unit with size 错误是 bug 据说已经修复 为什么我这儿还是会报错
orangie
2023-03-21 21:31:59 +08:00
从不同文件中合并音轨、视频流信道。下面的命令将第一个输入文件(-map 0:v:0 中的第一个 0 )的视频流(中间的 v )的第一个流(后一个 0 ),以及第二个输入文件的音频流(中间的 a )取出,放到输出文件中。

ffmpeg -i input-1.avi -i input-2.avi -map 0:v:0 -map 1:a:0 output.mp4
如果希望不改变编码方式,仅仅提取和更换视频、音频流,那么可以尝试指定编码方式为 copy ,即直接复制数据,不转换编码,这样会非常快,几乎相当于复制文件的速度。

ffmpeg -i input-1.mp4 -i input-2.mp4 -c copy -map 0:v:0 -map 1:a:0 output.mp4
chutsetien
2023-03-21 21:36:49 +08:00
-c:a copy 和 -c:v copy 可以合为 -c copy, 但如果不能正确识别轨道的话可以人工指定 -map 0:v:0 -map 1:a:0 (既采用第一个输入源的第一个视讯轨和采用第二个输入源的第一个音讯轨).
kokutou
2023-03-21 21:46:28 +08:00
先试试
ffmpeg -i "rtmp://stream-x" -c copy 1.mp4
能不能出来吧...
imaning
2023-03-21 21:47:23 +08:00
ffmpeg -re -i rtmp://127.0.0.1/live/Stream1 -re -i rtmp://127.0.0.1/live/Stream2 -map 0:v:0 -map 1:a:0 -c copy -bsf:a aac_adtstoasc -async 1 -f flv rtmp://127.0.0.1/live/Stream3

测试了下,转成功了的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/925958

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX