gpt4 book ai didi

video - H.264 - 使用 FFmpeg 通过 TCP 流式传输时出现绿色帧

转载 作者:行者123 更新时间:2023-12-04 22:59:49 26 4
gpt4 key购买 nike

我使用的是 FC23 机器,FFMPEG 版本是 2.8.10

使用下面的命令,我可以成功地通过 tcp 流式传输 flv,并且也能够在接收方成功接收它。我使用vlc播放器播放它。音频和视频都播放得很好。

./ffmpeg -f x11grab -s 1920x1080 -framerate 15 -i :0.0 -f alsa -ac 2 -i hw:1 -vcodec libx264 -r 30 -pix_fmt yuv420p -tune zerolatency -preset ultrafast -acodec aac -strict -2 -ar 48000 -ab 96k -f flv -metadata streamName=naseeb.sdp tcp://127.0.0.1:6666



但实际上我需要使用应用程序来做到这一点。所以我用'C'语言编写了一个应用程序。
我在应用程序中做了以下事情。
 1. Open `AVOutputFormat` using below API
fmt = av_guess_format("flv", NULL , NULL);
2. Get `AVFormatContext` using below API
avformat_alloc_output_context2(&oc, fmt, NULL, NULL);
3. Then added streams(audio and video) using required APIs
4. Then open codecs using required APIs
5. Then set the output using below API
ret = avio_open(&oc->pb, filename, AVIO_FLAG_WRITE);

(A) 如果我需要 flv 到系统上的文件然后我提供 filename在第 5 步中作为 muxer.flv .
  • 结果:当我玩muxer.flv使用 VLC 播放器,视频和音频都能很好地播放

  • (B) 如果我需要 flv over tcp 然后我提供 filenametcp://127.0.0.1:6666 .
  • 结果:当它通过网络流式传输时,会为视频显示绿色帧(但音频效果很好)。当我需要通过网络流式传输时,是否需要额外的设置?

  • 我对接收方毫无疑问,因为它与 FFmpeg 配合得很好实用程序(上面提到的命令)。
    目前我已经下载了 ffmpeg 2.8.10 源代码并查看 ffmpeg.c文件进行一些额外的设置。到目前为止,我还没有发现任何有用的东西。

    请提出一些问题,为什么在网络上发送 flv 时显示绿色框架,而在系​​统硬盘上转储时它运行良好。

    最佳答案

    我已经解决了这个问题。

    早些时候,我调用 avformat_write_header在提取 flv 容器所需的额外数据之前。

    现在首先我更新st->codec->extradatast->codec->extradata_size然后我调用avformat_write_header api,一切正常。

    关于video - H.264 - 使用 FFmpeg 通过 TCP 流式传输时出现绿色帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45706301/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com