2016-12-30 272 views
0

我试图使用FFMPEG将mp4剪辑转换为h264字节流格式。我已经成功编译了源自libx264的FFMPEG。如何将mp4转换为h264使用FFMPEG添加AUD

查看libx264下的FFMPEG(版本3.2.2)的文档,有一个bool标志-aud。在online documentation它给人的例子

ffmpeg -i input.flac -id3v2_version 3 out.mp3 

使用这种格式,下面的命令作品,但在输出文件不会产生所需AUD中:

ffmpeg -i input.mp4 -codec:v libx264 -aud 1 output.h264 

我也尝试过不同的变种与此包括:

ffmpeg -i input.mp4 -vcodec libx264 -aud 1 output.h264 
ffmpeg -i input.mp4 -aud 1 output.h264 

我assum e有些事我误解了执行这个操作。我基本上想要在mp4容器中拍摄h264电影,并将其转储为添加了AUD的h264流。任何想法为什么这不起作用?

(我也尝试使用带有-aud标志的x264,也运行正常,但没有产生所需的输出)。

回答

1
ffmpeg -i input.mp4 -x264opts aud=1 output.h264 
+0

感谢您的链接,我需要进一步观察它们。尽快尝试你提供的命令虽然不会在输出中产生AUDs(尽管它比我之前做的要快得多)。我也尝试添加-aud 1标志无济于事。从第二个链接我尝试使用它们只是output.h264而不是output.ts,它仍然无法正常工作。他们都将第一个访问单元类型作为SEI(6),而不是我认为是附件B格式的AUD(9)。事实上,我无法在输出文件的十六进制转储中找到任何预期的AUD单位(00 00 01 69)。 – SyntheticGio

+1

请参阅https://ffmpeg.org/ffmpeg-codecs.html#Options-23 – Mulvya

+1

当然,使用'-c copy'时,它不会起作用,因为libx264不在场。 – Mulvya

1

由于MPEG-TS复用器创建AUD中,此两步骤的非破坏性过程的工作:

ffmpeg -i in.mp4 -c copy -map v -vbsf h264_mp4toannexb in.ts 

然后

ffmpeg -i in.ts -c copy -map v -f h264 in.h264 
+0

我得到这个方法的错误(我认为,因为除了h264第一个流之外显然还有mjpeg格式的第二个流),它抱怨mjpeg不被支持。我想我需要添加标志只使用第一个流(#0:0)。我隐约记得在文档中遇到了如何做到这一点,但我记不起手。 – SyntheticGio

+1

在这种情况下,使用'-map 0:v:0'而不是'-map v' – Mulvya