我正在构建一个web应用程序,涉及服务各种视频内容。Web友好的音频和视频编解码器处理没有任何问题,但我在设计与HTML5视频播放器如mkv容器或H265不兼容的视频文件交付时遇到了麻烦。
ffmpeg -i sample.mkv \
-c:v libx264 \
-crf 18 \
-preset ultrafast \
-maxrate 4000k \
-bufsize 8000k \
-vf "scale=1280:-1,format=yuv420p" \
-c:a copy -start_number 0 \
-hls_time 10 \
-hls_list_size 0 \
-f hls \
file.m3u8
ffmpeg -ss 90 \
-t 10 \
-i sample.mkv \
-g 52 \
-strict experimental \
-movflags +frag_keyframe+separate_moof+omit_tfhd_offset+empty_moov \
-c:v libx264 \
-crf 18 \
-preset ultrafast \
-maxrate 4000k \
-bufsize 8000k \
-vf "scale=1280:-1,format=yuv420p" \
-c:a copy \
fileSequence0.mp4
#EXTM3U
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-TARGETDURATION:10
#EXT-X-VERSION:4
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:10.0,
fileSequence0.mp4
#EXTINF:10.0,
fileSequence1.mp4
...
... and so on
...
#EXT-X-ENDLIST
我的技术可行吗?因为只有在关键帧之后才可能进行分段,所以预置分段持续时间会有什么问题吗?ffmpeg是否可以绕过这个问题?
我对视频处理和生成的知识充其量只是微不足道。我将非常感谢一些指点。
这是可能的,但很难。我甚至认为,使用FFMPEG可能是不可能的。传输流具有时间戳和连续性计数器,这些值应跨段边界保留。-copyts标志可能对此有所帮助。在这种情况下,B帧非常难处理,因为它们最终会在段外带有时间戳。音频也很难。当编码器初始化时,音频有启动样本,这意味着你可能会有额外的样本,每个片段通过音频弹出。
TLDR是可能的,但您需要了解容器和底层编解码器的结构,并使用它们。
我正尝试在iOS应用程序中使用ffmpeg将本地。mp4视频转换为HLS。我已经使用pods集成了ffmpeg包装器,并生成了所有分段的。ts文件和m3u8文件,但是一些。ts文件段没有在。m3u8播放列表文件中列出,如下所示。它总是列出最后5个视频片段。 我使用以下代码生成HLS。 还有其他方法可以做到这一点吗?
我试图转换一个实时的rtmp流到hls流。 我看了之后有了一些想法 提前谢谢...
我想把一个HLS流和转码到RTMP,并与nginx RTMP模块联播。 但是它不起作用(我把它放在RTMP模块的应用程序部分)。 当我试图在VLC中查看我的RTMP流时,它没有加载。我已经尝试了ffmpeg指令的几个变体,没有一个奏效。有什么建议吗?如果您需要查看更多我的配置文件,我可以提供,但这台服务器在以前通过Teradek编码器发送视频时一直工作得很好。这条新皱纹不起作用了。 编辑:只是有个
我正在尝试使用ffmpeg(在OSX上运行)将基本mp4视频转换为HLS视频,使用以下命令: 它确实生成了所有段文件,但是生成的播放列表文件只列出了最后四个段文件,删除了所有早期的段。帮忙?
在这一点上,我的解决方案是工作的,但只能作为RTMP,我可以使用URL完美地观看我的流: 但问题是我的LG智能电视使用WebOS不支持RTMP,我真的很想在那里播放我的流。我现在能看到的唯一解决方案是使用HLS。使用HLS也很好,但我需要在打开电视中的HLS流之前执行我的ffmpeg命令,否则它将不会创建在电视上显示流所需的文件。