我想在FFmpeg版本0.7.15中使用AAC和H264编码将flv视频文件转换为m3u8容器。任何人都可以帮我吗?
我使用此命令转换为m3u8格式,但它会抛出错误:
cmd: ffmpeg -i sample.flv -b 1104k -s 320x240 -vcodec libx264 -ab 32 -ar 24000 -acodec libfaac final_video.m3u8
错误:
ffmpeg version 0.7.15, Copyright (c) 2000-2013 the FFmpeg developers
built on Feb 22 2013 07:22:31 with gcc 4.4.5
configuration: --enable-libdc1394 --prefix=/usr --extra-cflags='-Wall -g ' --cc='ccache cc' --enable-shared --enable-libmp3lame --enable-gpl --enable-libvorbis --enable-pthreads --enable-libfaac --enable-libxvid --enable-postproc --enable-x11grab --enable-libgsm --enable-libtheora --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264 --enable-libspeex --enable-nonfree --disable-stripping --enable-avfilter --enable-libdirac --disable-decoder=libdirac --enable-libfreetype --enable-libschroedinger --disable-encoder=libschroedinger --enable-version3 --enable-libopenjpeg --enable-libvpx --enable-librtmp --extra-libs=-lgcrypt --disable-altivec --disable-armv5te --disable-armv6 --disable-vis
libavutil 50. 43. 0 / 50. 43. 0
libavcodec 52.123. 0 / 52.123. 0
libavformat 52.111. 0 / 52.111. 0
libavdevice 52. 5. 0 / 52. 5. 0
libavfilter 1. 80. 0 / 1. 80. 0
libswscale 0. 14. 1 / 0. 14. 1
libpostproc 51. 2. 0 / 51. 2. 0
[libspeex @ 0x93e6c60] Missing Speex header, assuming defaults.
[flv @ 0x93e25e0] Estimating duration from bitrate, this may be inaccurate
Seems stream 0 codec frame rate differs from container frame rate: 60.00 (60/1) -> 30.00 (60/2)
Input #0, flv, from 'sample.flv':
Metadata:
duration : 60
creationdate : Wed Apr 10 17:13:05
Duration: 00:01:00.05, start: 0.000000, bitrate: N/A
Stream #0.0: Video: h264 (Main), yuv420p, 320x240 [PAR 1:1 DAR 4:3], 30 tbr, 1k tbn, 60 tbc
Stream #0.1: Audio: libspeex, 16000 Hz, 1 channels, s16
WARNING: The bitrate parameter is set too low. It takes bits/s as argument, not kbits/s
[NULL @ 0x93e3840] Unable to find a suitable output format for 'final_video.m3u8'
final_video.m3u8: Invalid data found when processing input
答案 0 :(得分:2)
你的FFmpeg版本太旧 - 只有最近的FFmpeg内置了一个段复用器。请参阅the documentation for more。下载recent static build,或从源代码编译。
例如:
ffmpeg -i sample.flv -c:v libx264 -b:v 1104K -c:a libfaac -b:a 32K -ar 24000 -f segment -segment_list playlist.m3u8 -segment_list_flags +live -segment_time 10 out%03d.mkv
请注意,使用-ab 32
表示32位/秒。如果你想要Kilobits,请改用32K
,你可能想要使用更明确的-b:a
。
答案 1 :(得分:0)
格式.M3U8 不是有效的输出格式。
只有有效的容器格式(如.mp4或.mkv)可用于保存(即“环绕”)来自.flv文件的视频和音频流。但.m3u8是播放列表格式,只能有效地包含文本。
您无法将视频格式(如.flv)转换为非视频格式。这就像尝试将视频流包装在.pdf或.doc容器中一样:它不起作用。因此,如果你试图这样做,那么ffmpeg就会合适。