我正在为要上传的视频文件创建一个平台。为了让它们通过Videojs播放,我将/ demux mkv / flv / 3gp文件转换为mp4文件。
我遇到的问题是,如果我将这样的视频/ mkv文件解复用,我会收到错误消息Video format or mime type not supported
,即使它是"工作"我电脑上的mp4文件。
我想我明白mkv文件是容器,如果是demuxed,它会保留相同的视频和音频编解码器,如果Videojs / HTML5不支持,则视频无法播放。如果我错了,请纠正我。
任何人都可以告诉我为什么mkv.mkv到mkv.mp4的demux将无法在我的浏览器中播放?
➜ ~ ffmpeg -i mkv.mkv -vcodec copy -acodec copy mkv.mp4
ffmpeg version 3.2.2 Copyright (c) 2000-2016 the FFmpeg developers
built with Apple LLVM version 8.0.0 (clang-800.0.42.1)
configuration: --prefix=/usr/local/Cellar/ffmpeg/3.2.2 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-libmp3lame --enable-libx264 --enable-libxvid --enable-opencl --disable-lzma --enable-vda
libavutil 55. 34.100 / 55. 34.100
libavcodec 57. 64.101 / 57. 64.101
libavformat 57. 56.100 / 57. 56.100
libavdevice 57. 1.100 / 57. 1.100
libavfilter 6. 65.100 / 6. 65.100
libavresample 3. 1. 0 / 3. 1. 0
libswscale 4. 2.100 / 4. 2.100
libswresample 2. 3.100 / 2. 3.100
libpostproc 54. 1.100 / 54. 1.100
Input #0, matroska,webm, from 'mkv.mkv':
Metadata:
ENCODER : Lavf53.24.2
Duration: 00:00:34.08, start: -1.400000, bitrate: 1232 kb/s
Stream #0:0: Video: mpeg4 (Simple Profile), yuv420p, 720x480 [SAR 1:1 DAR 3:2], 25 fps, 25 tbr, 1k tbn, 25 tbc (default)
Stream #0:1: Audio: aac (LC), 48000 Hz, 5.1, fltp (default)
Output #0, mp4, to 'mkv.mp4':
Metadata:
encoder : Lavf57.56.100
Stream #0:0: Video: mpeg4 (Simple Profile) ( [0][0][0] / 0x0020), yuv420p, 720x480 [SAR 1:1 DAR 3:2], q=2-31, 25 fps, 25 tbr, 16k tbn, 1k tbc (default)
Stream #0:1: Audio: aac (LC) ([64][0][0][0] / 0x0040), 48000 Hz, 5.1 (default)
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
frame= 887 fps=0.0 q=-1.0 Lsize= 5130kB time=00:00:35.45 bitrate=1185.4kbits/s speed= 668x
video:3447kB audio:1663kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.401607%
感谢所有帮助。我似乎无法找到答案......
答案 0 :(得分:1)
正如评论中提到的那样,您正在重新复制MPEG-4 Part 2视频,但您的浏览器不支持。您需要重新编码为H.264:
ffmpeg -i input -c:v libx264 -c:a copy -movflags +faststart output.mp4
-movflags +faststart
以重新定位某些数据,以便它可以开始播放而无需事先完全下载文件。
如果您的设备或浏览器不支持5.1频道,请使用-ac 2
将其缩混为立体声。
此外,可能需要添加-profile:v
和-level
,具体取决于您是否需要支持旧设备。
有关控制质量和兼容性详细信息的信息,请参阅FFmpeg Wiki: H.264。
答案 1 :(得分:0)
你缺少-movflags + faststart。
此参数移动播放器需要开始播放文件的信息。否则,文件必须在开始之前完全下载。
命令:
ffmpeg -i mkv.mkv -vcodec copy -acodec copy -movflags +faststart mkv.mp4