场景:我想在 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 一无所知,所以我不知道什么对您来说最好,但这至少可以解决您遇到的确切问题。
抛弃旧事
我建议使用最新版本的ffmpeg
。avconv
您使用的版本可能真的很旧,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 不提供这种转换。