【问题标题】:How do I use bitstream filters in如何使用比特流过滤器
【发布时间】:2013-05-24 08:16:48
【问题描述】:

我正在尝试使用 libavformat、libavcodec 等对 RTSP 流进行解复用并将其重新混合为 TS 文件,复制视频并转码音频。如果我使用ffmpeg,命令大致是这样的:

ffmpeg -rtsp_transport tcp -re -fflags +genpts -i rtsp://10.0.0.42/channel1 -vcodec copy -copyts -bsf dump_extra -acodec libfdk_aac -b:a 16k -ac 1 -map 0:0 -map 0:1 -f mpegts out.ts

我查看了复用/解复用示例,但除了难以理解如何制作流副本之外,我找不到任何关于比特流过滤器的提及。我目前收到以下错误:

[mpegts @ 0x7ff20c009600] H.264 bitstream malformed, no startcode found, use the h264_mp4toannexb bitstream filter (-bsf h264_mp4toannexb)

如何创建比特流过滤器以及如何分配它?我将它分配给输入流还是输出流?

【问题讨论】:

  • 请用-vbsf h264_mp4toannexb试试你的命令
  • 对不起,我编辑了我的帖子以更清楚。我不再使用 ffmpeg,我正在编写自己的代码并直接使用库。

标签: c libavcodec libavformat


【解决方案1】:

遗憾的是,比特流过滤器的文档不足,但应该不难弄清楚。最简单的方法可能只是模拟 avconv 所做的——setup,然后 apply 在复用之前对每个数据包进行过滤。

【讨论】:

【解决方案2】:

你可以在这里找到 MPEG-2 TS 的简短描述http://wiki.multimedia.cx/index.php?title=MPEG-2_Transport_Stream 示例 TS 文件(用于 h.264):http://samples.mplayerhq.hu/V-codecs/h264/

但是你的问题不清楚。你到底想做什么?您想为 TS 创建自己的复用器吗?

BR, 亚历山大

【讨论】:

  • 不,我只是想从 rtsp 输入中获取 H264 流并将其复用到磁盘上的 TS 文件中,我从复用器那里得到了反馈。我正在将 libaformat 与它自动为 mpegts 选择的多路复用器一起使用:avformat_alloc_output_context2(&output_ctx, NULL, "mpegts", dst_filename);
猜你喜欢
  • 1970-01-01
  • 2021-08-13
  • 1970-01-01
  • 1970-01-01
  • 2019-12-03
  • 1970-01-01
  • 2017-05-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多