你不能做什么

你不能做什么

场景:我想在 asterisk 上播放视频文件。我的软电话仅支持音频和视频的 ulaw/h263。因此,我在 sip.conf 文件中允许这两种格式,并希望它能够运行。我使用的 asterisk 版本是 11.7。

我正在使用 app_mp4 中的 mp4_play 来播放用 mp4creator 转换的 mp4 提示文件。

解决方案:

我想要做的是使用 ffmpeg 创建/转换 AV 文件以格式化 pcm_mulaw,并使用命令复制已经是 h263 的视频

avconv -i input.3gp  -c:a pcm_mulaw  -c:v copy output.mp4

我收到此错误信息:

Could not write header for output file #0 (incorrect codec parameters ?): Operation not permitted

问题是:

1-就为此特定的软件电话在星号上播放视频而言,我是否朝着正确的方向前进?

2-是否可以以这种方式使用 ffmpeg,并且内容仍然可以使用媒体播放器播放?

3- 我还有什么其他选择来完成同样的任务。我怎样才能避免这个错误

问候

答案1

你不能做什么

您不能将 pcm_mulaw 音频或 H.263 视频放入 MP4 容器中。

您提供的错误本身通常没有什么帮助,但它总是伴随着实际的错误(至少对于ffmpeg,不确定avconv)。可能是这样的:

Could not find tag for codec h263 (or pcm_mulaw) in stream #0,
codec not currently supported in container

这就是遇到问题时始终包含完整控制台输出的一个原因。

你可以做什么

您可以:

  • 更改输出格式容器:

      ffmpeg -i input.3gp -c copy output.mkv
    
  • 或者重新编码为 MP4 可接受的内容,例如 H.264 视频和 AAC 音频。

      ffmpeg -i input.3gp -c:v libx264 -c:a aac -strict experimental output.mp4
    

我对 Asterisk 一无所知,所以我不知道什么对您来说最好,但这至少可以解决您遇到的确切问题。

抛弃旧事

我建议使用最新版本的ffmpegavconv您使用的版本可能真的很旧,FFmpeg 开发非常活跃,并且ffmpeg具有更多功能。静态版本很简单:只需下载、提取并运行即可。请参阅FFmpeg 下载Linux、OS X 和 Windows 选项页面。

答案2

我已经找到了解决方案并认为应该发布,因为解决方案可用但传播得不是很好。

http://downloads.i6net.com/misc/video_tools/debian/为了同一目的提供了许多资源。

  • 我已经使用 ffmpeg/avconv 将 h264 转换为 h263p

    avconv -i ../big_buck_bunny_240p_50mb.mp4 -c:v h263 -vf scale=176:144 -an /tmp/sample-1.3gp

  • 使用 mp4creator 在文件中添加曲目信息

    mp4creator -hint=1 /tmp/sample-1.3gp

  • 使用 ffmpeg/avconv 将音轨转换为 ulaw

    avconv -y -i ../big_buck_bunny_240p_50mb.mp4 -acodec pcm_mulaw -ar 8000 -ac 1 -f mulaw /tmp/convert.mulaw

  • 并使用 pcm2mp4 将上面获得的 mulaw 文件转换为 3gp。这还会添加音轨的轨道信息

    pcm2mp4 /tmp/convert.mulaw /tmp/sample-1.3gp

还想知道为什么 ffmpeg 不提供这种转换。

相关内容