交通运输十五五规划专题汇总(2026-01-05更新)
2026/1/7 11:29:40
ffmpeg-worker-mp4.js) 中运行,避免阻塞主线程--enable-decoder=hevchevc_mp4toannexbbitstream filter 进行格式转换functiongetHEVC(){runCommand('-i input.mp4 -c:v copy -bsf hevc_mp4toannexb -f rawvideo video.hevc')}处理过程:
-c:v copy: 视频流直接复制,不重新编码-bsf hevc_mp4toannexb: 将 MP4 格式的 HEVC 转换为 Annex-B 格式(NALU 格式)-f rawvideo: 输出原始视频流格式video.hevc文件(Blob URL)输出信息示例:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input.mp4': Stream #0:0(und): Video: hevc (Main) (hev1 / 0x31766568), yuv420p(tv), 1270x720 [SAR 128:127 DAR 16:9], 666 kb/s, 25 fps, 25 tbr, 12800 tbn, 25 tbcfunctiongetMP3(){runCommand('-i input.mp4 -b:a 192K -vn audio.mp3')}处理过程:
-i input.mp4: 输入文件-b:a 192K: 音频比特率设置为 192Kbps-vn: 禁用视频流,只处理音频audio.mp3文件(Blob URL)player=newlibde265.RawPlayer(video);// video 是 canvas 元素player.set_status_callback(function(msg,fps){// 状态回调:loading, initializing, playing, fps 等});player.playback(hevcUrl);// 播放 H.265 视频流document.getElementById('audio').play();// 同步播放音频播放过程:
状态回调:
loading: 正在加载视频initializing: 正在初始化解码器playing: 正在播放fps: 显示当前帧率(如 “48.22 fps”)stopped: 播放停止worker=newWorker("./ffmpeg-worker-mp4.js");worker.onmessage=function(e){varmsg=e.data;switch(msg.type){case"ready":// Worker 准备就绪case"stdout":// 标准输出case"stderr":// 错误输出case"done":// 处理完成,返回文件数据case"exit":// 进程退出}};// 发送命令worker.postMessage({type:"run",arguments:["-i","input.mp4",...],MEMFS:[{name:"input.mp4",data:videoData}]});FFmpeg 在浏览器中运行时,使用 Emscripten 的 MEMFS(内存文件系统):
MEMFS参数传递给 Workerdone消息返回putImageData或类似方法绘制到 CanvasFFmpeg 命令行工具:
-help显示帮助信息示例命令:
# 提取视频流-i input.mp4 -c:v copy -bsf hevc_mp4toannexb -f rawvideo video.hevc# 提取音频-i input.mp4 -b:a 192K -vn audio.mp3# 查看视频信息-i input.mp4浏览器要求:
视频格式要求:
适用场景:
不适用场景:
┌─────────────────────────────────────────────────┐ │ 浏览器页面 │ ├─────────────────────────────────────────────────┤ │ │ │ ┌──────────────┐ ┌──────────────┐ │ │ │ FFmpeg │ │ libde265.js │ │ │ │ WebWorker │ │ (解码器) │ │ │ └──────┬───────┘ └──────┬───────┘ │ │ │ │ │ │ │ 提取视频流 │ 解码视频帧 │ │ │ │ │ │ ▼ ▼ │ │ ┌──────────────┐ ┌──────────────┐ │ │ │ video.hevc │ │ Canvas │ │ │ │ (Blob URL) │ │ (渲染) │ │ │ └──────────────┘ └──────────────┘ │ │ │ │ ┌──────────────┐ │ │ │ audio.mp3 │ │ │ │ (Audio元素) │ │ │ └──────────────┘ │ │ │ └─────────────────────────────────────────────────┘该网站通过以下技术实现了浏览器中的 H.265 软解码播放:
这种方案虽然性能不如硬件解码,但提供了跨平台的 H.265 播放能力,是学习和演示 H.265 解码原理的优秀示例。