如何使用FFmpeg将m4v和wmv视频转换为mp4格式?

18

我在我的PHPMotion项目中使用ffmpeg将视频转换为mp4格式。我无法将wmv和m4v视频转换为mp4格式。我粘贴了我用于转换wmv和m4v的命令:

ffmpeg -i 1.wmv -ab 128 -b 1200 test.mp4
ffmpeg -i 1.m4v -ab 128 -b 1200 test.mp4

当我使用这些代码时,我收到了一个错误消息:

Output #0, mp4, to 'test.mp4':
    Stream #0.0: Video: mpeg4, yuv420p, 640x360, q=2-31, 1 kb/s, 90k tbn, 24 tbc
    Stream #0.1: Audio: 0x0000, 44100 Hz, stereo, s16, 0 kb/s
Stream mapping:
  Stream #0.0 -> #0.0
  Stream #0.1 -> #0.1
Unsupported codec for output stream #0.1

我该如何解决这个问题?


通过安装缺失的编解码器来解决问题?GSpot 可以帮助您确定此特定任务所需的内容。 - DaveRandom
1
尝试将 -acodec libfaac -ar 44100 -ac 2 -ab 48k 添加到你的命令字符串中。 - MikeJ-UK
1
谢谢,我通过添加-ar 44100 -b 300k -s 320x240 -vcodec mpeg4得到了解决方案。 - Balaji Kandasamy
2
ffmpeg -i inputfile.wmv -an -ar 44100 -b 300k -s 320x240 -vcodec mpeg4 output.mp4 - Balaji Kandasamy
3个回答

53
对于那些今天仍然会遇到这个问题的人,因为他们尝试播放他们的硬件或软件生成的m4v文件,但是他们尝试的所有播放器都无法播放:m4v不仅是可播放的媒体容器,还被许多常用工具和视频捕捉设备用作纯流格式,以便可以直接将视频刻录到光盘。当您使用类似Adobe的Creative Suite一套视频制作工具时,特别容易出现这种情况。 要将“不可播放”的m4v流(您的捕捉设备/软件建议完全可播放)转换为您习惯的视频文件类型,请告诉ffmpeg将流复制到mp4容器中:
$> ffmpeg -i input.m4v -vcodec copy -acodec copy output.mp4

或者,使用组合的音视频编解码器缩写标志:

$> ffmpeg -i input.m4v -c copy output.mp4

没有实际的编码发生,因此这只需要几秒钟,甚至更短。成交了。


1
你的解决方案可以工作,但答案是错误的。.m4v 简单地是苹果对 MP4 的一种变体,扩展以支持 DRM 和其他苹果特定的数据流,如 mebx。通常,只需将扩展名更改为 MP4 即可解决问题。 - Gyan
2
经常发生,但也同样经常不发生。比如当您使用Adobe Creative Suite程序时,如果需要将60fps视频素材编码为h.264格式,则会生成m4v文件。 - Mike 'Pomax' Kamermans
是的,这就是我现在编辑过的内容。但请记住,如果一个程序被数十万人使用并且能够有效地工作,那么它就成为了一种标准,尽管不符合规范,但仍然是一种标准。 - Mike 'Pomax' Kamermans
前辈们进行了一次有趣的讨论:我测试了这个例子,它可以运行。如果回答能够多一些关于容器/编解码器/元数据的讨论或者引用相关讨论,这将有助于初学者社区。 - gatorback
3
可以使用“-c copy”(或“-codec copy”)代替“-vcodec copy -acodec copy”来缩短命令。 - llogan
显示剩余2条评论

3

不支持的编解码器

您的文件音频流似乎是以ffmpeg无法理解的格式进行编码的。

添加新的编解码器到ffmpeg是可能的,但似乎并不容易:请参见向ffmpeg添加新编解码器


你能否建议一些适用于iPhone的FFmpeg命令,用于将m4v转换为mp4? - Balaji Kandasamy

-1

这里没有必要使用-y,因为它只是在不询问的情况下覆盖输出,所以你的命令只是“使用默认mp4设置运行ffmpeg”。很高兴它对你起作用,但当原帖显示该命令本身无法工作并引用编解码器错误时,这不是一个答案。 - Mike 'Pomax' Kamermans

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接