普通网友 2023-12-09 23:54 采纳率: 0%
浏览 4

ffmpeg动态切换输入源

ffmpeg动态切换输入源怎么让他推流不中断,推流到B站时时候不卡顿不黑屏

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-12-10 08:50
    关注

    【相关推荐】



    • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/344985
    • 您还可以看一下 梅会东老师的FFmpeg4.3系列之31:庖丁解牛之图像格式与压缩原理及实战课程中的 Bmp的16色彩图手把手案例分析小节, 巩固相关知识点
    • 除此之外, 这篇博客: FFmpeg音视频播放器系列(第二篇:音视频播放同步)中的 音频采样、编码、播放 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
      • 采样:正常人听觉的频率范围大约在20Hz~20kHz之间,根据奈奎斯特采样理论,为了保证声音不失真,采样频率应该在人耳所能听到声音频率最大值的2倍,那么40KHz的采样率已经足够,但是为了保证人耳听到的声音质量不降低,业界一般采用44.1KHz的采样率,即每秒采样44100次,更精确的采样率为48KHz
      • 编码:声音的采样过程其实是一个模拟信号转为数字信号的过程,数字信号必然有一个范围,可以用1字节、2字节、4字节表示一个采样点的数值。业界也一般采用2字节(16bit),来表示一个采样点数值,是一个16位有符号的整数,表示范围是-32768~32767,总计65536种数值。
        我们听到的声音还有声道一说,常见的为左右声道,这在FFmpeg里面称之为声道布局,常见的有
        AV_CH_LAYOUT_STEREO:普通音响,即左、右布局
        AV_CH_LAYOUT_2POINT1:普通音响加低音,即左、右布局,加低音炮
        AV_CH_LAYOUT_SURROUND:环绕声,左、右、前中布局
        AV_CH_LAYOUT_5POINT1:环绕声 + 左边际 + 右边际 + 低音炮
        就常见的CD音频左右声道来说,1秒采样44100次,每个采样点16bit,2个通道,产生数据:
        44100x16x2bits,这就是声音的原始数据,称为脉冲调制数据PCM(PulseCodeModulation),在保存PCM数据时,一般按照声道依次排列:(左右左右左右…)
        描述一个PCM格式的数据需要一下几个概念:采样格式(即bit位数)、采样率、声道数。
        PCM数据的存储还可以分为小端与大端格式,常见的是小端格式,
        如果直接保存PCM声音原始数据,按照CD格式的音频数据,1分钟可以产生10M左右的数据,显然偏大,因此需要对PCM数据进行编码,编码的目的就是压缩数据。
        这里简单说明一下常用的MP3与AAC编码的特点。
        MP3:编码一帧,一般是1152个采样点,这样其数据大小是1152x2x2=4608字节
        AAC:编码一帧,一般是1024个采样点,这样其数据大小是1024x2x2=4096字节
      • 播放:理论上只要音频的播放与采样率一致,就可以完美的还原声音,但是因为编码一帧,就需要按帧进行解码,MP3播放这一帧耗时为:1152 / 44100 = 26.122449ms,AAC播放一帧耗时为:1024 / 44100 = 23.2199546ms,计时系统很难达到如此精确的计时,必然有一定的误差,我们只能以最快的速度将数据传递给播放设备,否则中间延迟过长,就会听到声音卡顿。

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 修改了问题 12月10日
  • 创建了问题 12月9日

悬赏问题

  • ¥15 孟德尔随机化结果不一致
  • ¥15 深度学习残差模块模型
  • ¥50 怎么判断同步时序逻辑电路和异步时序逻辑电路
  • ¥15 差动电流二次谐波的含量Matlab计算
  • ¥15 Can/caned 总线错误问题,错误显示控制器要发1,结果总线检测到0
  • ¥15 C#如何调用串口数据
  • ¥15 MATLAB与单片机串口通信
  • ¥15 L76k模块的GPS的使用
  • ¥15 请帮我看一看数电项目如何设计
  • ¥23 (标签-bug|关键词-密码错误加密)