前端播放 MP4 视频,请教问题

158 天前
 Dnlyao

[滤镜使用列表] (1) Built-in MPEG Source (2) Built-in Video Codec/Transform (3) Enhanced Video Renderer(Custom Present) (4) Built-in Audio Codec/Transform (5) DirectSound Audio Renderer

[视频信息] 视频编码:H264 - 内置 FFmpeg 解码器(h264, Thread Frame) 输入格式:H264(24 bits) 输入尺寸:1920 × 1080(1.78:1) 输出格式:NV12(12 bits) 输出尺寸:1920 × 1080(1.78:1) 帧率:25 BitRate: 未知

[音频信息] 音频编码:A-law PCM(0x6) - 内置 FFmpeg 解码器(pcm_alaw) 采样率:8000 -> 8000 Hz 位率:8 -> 16 位 声道数:1 -> 2 声道 Bitrate: 64 kbps ———————— 该视频直接放进浏览器不能播放,为什么,或者需要什么组件可以播放?文件拓展名是 mp4 。

2231 次点击
所在节点    Vue.js
28 条回复
cctrv
157 天前
Format : MPEG-PS
FileExtension_Invalid : mpeg mpg m2p vob vro pss evo

它應該的擴展名是 .mpg
所以它本來就不是 mp4 文件⋯
yuzo555
157 天前
这是一个 mpg 封装格式的视频,浏览器不支持,但里面的编码浏览器应该都支持,可以本地 ffmpeg 直接转封装为 mp4 就行了
Dnlyao
157 天前
前端有库可以转换播放?还是说只能 node 后端+ffmpeg 重新封装视频?
expy
157 天前
可以用 js 写个 demuxer 解流再混流成🎫🎫 mp4 让浏览器播放,这个能播放 MPEG2-TS 和 FLV ,PS 不知道有没有人写过。https://github.com/xqq/mpegts.js

或者用 wasm 跑 ffmpeg 来播放,这个项目好像就是。https://github.com/numberwolf/h265web.js

最好还是视频生成的时候就选兼容的容器和编码,别用那些古老的格式。
Dnlyao
157 天前
@expy 感谢,但这两个引用都有问题。h265web.js 跑,就显示不支持 mpeg,但是文档又写可以。不太清楚。
luny
157 天前
可以去掉音频,重新封装视频试下,看看是不是音频导致的
ffmpeg -i test.mp4 -vcodec copy -an test-out.mp4
Dnlyao
157 天前
@luny 他是监控截取上传的,已经换了,h264,音频 acc ,本身视频还是不行,显示还是 mpeg ,重新封装视频应该就可以,现在想看一下能不能在前端解决。如果不行最后的方法,就是本地保存视频的时候,重新封装一次。
luny
157 天前
@Dnlyao 这个应该是国标 GB28181 的视频流,比较理想的办法,就是参考 https://github.com/xqq/mpegts.js 写一个 ps 的 demuxer ,ps 的代码可以参考 https://github.com/ireader/media-server/blob/master/libmpeg/source/mpeg-ps-dec.c

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1048937

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX