视频一吊糟

视频有哪些播放技术?

  • HTTP
  • HLS
  • DASH

一些基本概念

  • 码率
  • 分辨率
  • 帧率

HLS

参考资料

HLS 分片设置为多少比较合适?

https://bitmovin.com/mpeg-dash-hls-segment-length/

HLS 视频在拖拽时,它需不需要关键帧才能播放?

两篇介绍 ts 分片长度多长合适的文章?

  • https://bitmovin.com/mpeg-dash-hls-segment-length/
  • http://streaminglearningcenter.com/blogs/choosing-the-optimal-segment-duration.html
ts 分片支不支持 range requests ?

链接:Q20 At least one segment must fully download before it can be viewed by the client, and two may be required to ensure seamless transitions between segments.

  • 支持视频直播和点播
  • 支持不同分辨率的流,客户端可以根据网络状况切换
  • 支持 HTTPS 之上的媒体加密和用户认证
  • 基于 HTTP 协议,不需要服务器有特殊的配置:automatically supported by nearly all edge servers, media distributors, caching systems, routers, and firewalls.

常见的 ffmpeg 的一些命令

获取视频总的帧数 ffprobe -v error -count_frames -select_streams v:0 \ -show_entries stream=nb_read_frames -of default=nokey=1:noprint_wrappers=1 \ input.mkv

获取视频 metadata ffmpeg -i input.mkv

视频截图 ffmpeg -ss 00:00:04 -i test.mp4 -vframes 1 -q:v 2 output.jpg

ffmpeg 中 fps tbr 的区别?

一种英文版说法: tbr is guessed from the video stream and is the value users want to see when they look for the video frame rate

一种中文版说法:tbr 一般被当成帧率。当视频的码率为固定码率时,FFmpeg显示tbr为正常的码率值。当视频有变长码率时,FFmpeg打印的tbr为多个码率的均值

irc 里面问到的:what TBR is, it’s the smallest framerate that’s needed to perfectly recontruct the input variable framerate if the input video has some 24 fps and some 30 fps content, you need 120 fps to do those accurately (it’s the LCM of 24 and 30 in this case)

感觉这是值是说你的显示器要这么高 fps 才能把我这个视频完美的播放出来?

ffmpeg demuxer 是啥?
timed metadata in HLS

ID3 metadata is stored as a complete ID3v4 frame in a Packetized Elementary Stream (PES) packet, including a complete ID3 header.

查看一个视频所有的 packets: ffprobe -show_packets

一些坑记录

  1. 确认播放技术 -> MPEG-Dash?HLS?HTTP?
  2. 你不知道这种技术在客户端好不好实现。你更不知道这个播放技术在客户端实现了之后,播放速度如何
  3. 上传技术 -> 肯定要直传到存储节点,不能中转。用户肯定不接受
所以作为一个底层的视频服务,记录用户 id 是个错误的行为

一开始,每个视频都是有人上传的,这时候,你认为记录用户 id 没有坏处,还可以方便查问题。

但事实是:万一没有用户 id 也想上传视频呢…你怎么办..

客户端缓存 / m3u8 / CDN

Updated:

Comments