Paddy哥 2025-02-09 11:34 采纳率: 40%
浏览 4

freeswitch

需求:freeswitch win版怎么保存通话视频文件?

更改MP4后视频通话保存的文件大小为0

下面是log

EXECUTE [depth=0] sofia/internal/1001@192.168.90.210 sleep(1000)
2025-02-09 11:07:24.636106 98.63% [INFO] avcodec.c:1472 initializing encoder 352x288
[OpenH264] this = 0x0000013120FE16F0, Info:CWelsH264SVCEncoder::SetOption():ENCODER_OPTION_TRACE_CALLBACK callback = 0
001311D4407E0.
Using CAVLC, select EProfileIdc PRO_BASELINE in libopenh264.
[OpenH264] this = 0x0000013120FE16F0, Info:CWelsH264SVCEncoder::InitEncoder(), openh264 codec version = 69c0682
[OpenH264] this = 0x0000013120FE16F0, Info:iUsageType = 0,iPicWidth= 352;iPicHeight= 288;iTargetBitrate= 768000;iMaxBi
ate= 768000;iRCMode= 0;iPaddingFlag= 0;iTemporalLayerNum= 1;iSpatialLayerNum= 1;fFrameRate= 60.000000f;uiIntraPeriod=
00;eSpsPpsIdStrategy = 0;bPrefixNalAddingCtrl = 0;bSimulcastAVC=0;bEnableDenoise= 0;bEnableBackgroundDetection= 1;bEna
eSceneChangeDetect = 1;bEnableAdaptiveQuant= 1;bEnableFrameSkip= 0;bEnableLongTermReference= 0;iLtrMarkPeriod= 30, bIs
sslessLink=0;iComplexityMode = 0;iNumRefFrame = 1;iEntropyCodingModeFlag = 0;uiMaxNalSize = 0;iLTRRefNum = 0;iMultiple
readIdc = 4;iLoopFilterDisableIdc = 0 (offset(alpha/beta): 0,0;iComplexityMode = 0,iMaxQp = 51;iMinQp = 0)
[OpenH264] this = 0x0000013120FE16F0, Info:sSpatialLayers[0]: .iVideoWidth= 352; .iVideoHeight= 288; .fFrameRate= 60.0
000f; .iSpatialBitrate= 768000; .iMaxSpatialBitrate= 768000; .sSliceArgument.uiSliceMode= 1; .sSliceArgument.iSliceNum
0; .sSliceArgument.uiSliceSizeConstraint= 1500;uiProfileIdc = 578;uiLevelIdc = 0;iDLayerQp = 26
[OpenH264] this = 0x0000013120FE16F0, Info:Setting MaxSpatialBitrate (768000) the same at SpatialBitrate (768000) will
ake the actual bit rate lower than SpatialBitrate
[OpenH264] this = 0x0000013120FE16F0, Info:WELS CPU features/capacities (0x4007fe3f) detected: HTT: Y, MMX:
, MMXEX: Y, SSE: Y, SSE2: Y, SSE3: Y, SSSE3: Y, SSE4.1: Y, SSE4.2: Y, AVX: Y, FMA: Y,
87-FPU: Y, 3DNOW: N, 3DNOWEX: N, ALTIVEC: N, CMOV: Y, MOVBE: Y, AES: Y, NUMBER OF LOGIC PROCESSORS O
CHIP: 8, CPU CACHE LINE SIZE (BYTES): 64
[OpenH264] this = 0x0000013120FE16F0, Info:WelsInitEncoderExt() exit, overall memory usage: 2766512 bytes
[OpenH264] this = 0x0000013120FE16F0, Info:WelsInitEncoderExt(), pCtx= 0x0000013120CA0080.
2025-02-09 11:07:24.648106 98.63% [INFO] avcodec.c:1336 codec opened: Video: h264 (libopenh264) (Baseline), yuv420p(pc
gbr/unknown/unknown), 352x288, 768 kb/s
[OpenH264] this = 0x0000013120FE16F0, Info:ForceCodingIDR(iDid 0-0)at InputFrameCount=0

Reinit context to 720x480, pix_fmt: yuv420p
2025-02-09 11:07:24.773629 98.63% [ERR] avformat.c:765 Could not open video codec: Invalid argument
2025-02-09 11:07:24.773629 98.63% [ERR] avformat.c:3350 Error adding video stream
2025-02-09 11:07:24.839167 98.63% [ERR] avformat.c:765 Could not open video codec: Invalid argument
2025-02-09 11:07:24.839167 98.63% [ERR] avformat.c:3350 Error adding video stream
2025-02-09 11:07:24.905167 98.63% [ERR] avformat.c:765 Could not open video codec: Invalid argument
2025-02-09 11:07:24.905167 98.63% [ERR] avformat.c:3350 Error adding video stream

  • 写回答

3条回答 默认 最新

  • 码农阿豪@新空间 新星创作者: 前端开发技术领域 2025-02-09 12:32
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    在使用FreeSWITCH进行视频通话时,保存视频文件可能碰到一些问题,比如你提到的保存的MP4文件大小为0。我们可以根据日志信息分析问题,并提供一些解决方案。

    分析日志

    根据你提供的日志,可以看到以下关键的错误信息: - "Could not open video codec: Invalid argument" - "Error adding video stream" 这些错误通常表示在尝试打开视频编解码器时出现了参数错误,导致无法成功添加视频流。

    问题原因

    1. 编解码器配置错误: FreeSWITCH可能没有正确配置视频编解码器。需要确认OpenH264编解码器是否正确安装并配置。
    2. 视频尺寸问题: 日志中提到"Reinit context to 720x480"可能表明在初始化视频流时出现了问题,尤其是当与支持的分辨率不匹配时。
    3. 文件路径或权限问题: 不正确的文件保存路径或权限不足也可能导致文件无法创建和保存。

    解决方案

    1. 检查编解码器配置: 确保已正确安装OpenH264并且在FreeSWITCH的配置文件中添加了相关设置。可以通过以下方式确认:
      fs_cli -x "sofia global sip trace on"
      
    2. 调整视频参数: 确保指定的视频分辨率和编码方式支持。可以在FreeSWITCH的配置文件中调节参数,例如max-bitratemin-bitrate等。
    3. 检查保存路径: 确保指定的保存视频文件路径存在并且FreeSWITCH有足够的权限去写入文件。可以暂时设置为写入一个已知的目录,例如/tmp
    4. 验证权限: 确保FreeSWITCH服务帐号有写入视频保存目录的权限。

    示例配置

    以下是一个简单的FreeSWITCH配置示例,用于保存视频通话:

    <extension name="video_recording">
        <condition field="destination_number" expression="^1001$">
            <action application="set" data="video_recording=true"/>
            <action application="record_session" data="/tmp/video_recording.mp4"/>
            <action application="answer"/>
            <action application="bridge" data="sofia/gateway/gateway_name/${destination_number}"/>
        </condition>
    </extension>
    

    在这个示例中,通话会被保存为/tmp/video_recording.mp4。请确保更改为适合的目录和文件名。

    结束语

    以上是解决FreeSWITCH在Windows版中保存视频文件出现问题的解决思路。逐步检查编解码器、视频参数、保存路径和权限问题,应该能够帮助你解决视频文件保存为0的情况。如仍有问题,请进一步检查FreeSWITCH和OpenH264的更新和兼容性。

    评论

报告相同问题?

问题事件

  • 创建了问题 2月9日