AS3版本Progressive FLV播放方式

使用AS3来实现Progressive FLV的简单播放,下一篇贴出基于FMS的Streaming AS3实现版本

实现方法:

1.Flash CS3中建立一个AS文件,存为ProgressiveFlvplayer.as

2.建立一个Action Script 3.0版本的Fla空文件,Document Class加载ProgressiveFlvplayer

3.在ProgressiveFlvplayer.as中编写以下代码:

 

package {
  import flash.display.Sprite;
  import flash.net.NetConnection;
  import flash.net.NetStream;
  import flash.media.Video;
  import flash.display.MovieClip;

  public class ProgressiveFlvplayer extends Sprite {
    public function ProgressiveFlvplayer() {
      //创建NetConnection对象
      var myNc:NetConnection=new NetConnection();
      myNc.connect(null);
      //使用onMetaData函数,Flash用来寻找这个方法
      var metaObject:Object=new Object();
      metaObject.onMetaData=onMetaData;
      //构造NetStream对象并且连接创建的myNc对象
      var myNs:NetStream=new NetStream(myNc);
      myNs.play("keiko.flv");
      //发送所有onMetaData调用到NetStream上
      myNs.client=metaObject;
      //创建video尺寸
      var video:Video=new Video(160,120);
      //加载Video到NetStream上去,添加到display列表
      video.attachNetStream(myNs);
      addChild(video);
    }
    private function onMetaData(data:Object):void {
      //发送Flash需要的Metadata数据
    }
  }
}

先看效果: https://renmaiwang.cn/s/jkhfz Hue系列产品将具备高度的个性化定制能力,并且借助内置红、蓝、绿三原色LED的灯泡,能够混合生成1600万种不同色彩的灯光。 整个操作流程完全由安装于iPhone上的应用程序进行管理。 这一创新举措为智能照明控制领域带来了新的启示,国内相关领域的从业者也积极投身于相关研究。 鉴于Hue产品采用WiFi无线连接方式,而国内WiFi网络尚未全面覆盖,本研究选择应用更为普及的蓝牙技术,通过手机蓝牙与单片机进行数据交互,进而产生可调节占空比的PWM信号,以此来控制LED驱动电路,实现LED的调光功能以及DIY调色方案。 本文重点阐述了一种基于手机蓝牙通信的LED灯设计方案,该方案受到飞利浦Hue智能灯泡的启发,但考虑到国内WiFi网络的覆盖限制,故而选用更为通用的蓝牙技术。 以下为相关技术细节的详尽介绍:1. **智能照明控制系统**:智能照明控制系统允许用户借助手机应用程序实现远程控制照明设备,提供个性化的调光及色彩调整功能。 飞利浦Hue作为行业领先者,通过红、蓝、绿三原色LED的混合,能够呈现1600万种颜色,实现了全面的定制化体验。 2. **蓝牙通信技术**:蓝牙技术是一种低成本、短距离的无线传输方案,工作于2.4GHz ISM频段,具备即插即用和强抗干扰能力。 蓝牙协议栈由硬件层和软件层构成,提供通用访问Profile、服务发现应用Profile以及串口Profiles等丰富功能,确保不同设备间的良好互操作性。 3. **脉冲宽度调制调光**:脉冲宽度调制(PWM)是一种高效能的调光方式,通过调节脉冲宽度来控制LED的亮度。 当PWM频率超过200Hz时,人眼无法察觉明显的闪烁现象。 占空比指的...
2025-09-17 08:35:26,042 - ERROR - 视频转换失败: 牢记强军使命.mp4 错误信息: ffmpeg version 6.1.1-full_build-www.gyan.dev Copyright (c) 2000-2023 the FFmpeg developers built with gcc 12.2.0 (Rev10, Built by MSYS2 project) configuration: --enable-gpl --enable-version3 --enable-shared --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-libsnappy --enable-zlib --enable-librist --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray --enable-libcaca --enable-sdl2 --enable-libaribb24 --enable-libaribcaption --enable-libdav1d --enable-libdavs2 --enable-libuavs3d --enable-libzvbi --enable-librav1e --enable-libsvtav1 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libaom --enable-libjxl --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-frei0r --enable-libfreetype --enable-libfribidi --enable-libharfbuzz --enable-liblensfun --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-dxva2 --enable-d3d11va --enable-libvpl --enable-libshaderc --enable-vulkan --enable-libplacebo --enable-opencl --enable-libcdio --enable-libgme --enable-libmodplug --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libshine --enable-libtheora --enable-libtwolame --enable-libvo-amrwbenc --enable-libcodec2 --enable-libilbc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-ladspa --enable-libbs2b --enable-libflite --enable-libmysofa --enable-librubberband --enable-libsoxr --enable-chromaprint libavutil 58. 29.100 / 58. 29.100 libavcodec 60. 31.102 / 60. 31.102 libavformat 60. 16.100 / 60. 16.100 libavdevice 60. 3.100 / 60. 3.100 libavfilter 9. 12.100 / 9. 12.100 libswscale 7. 5.100 / 7. 5.100 libswresample 4. 12.100 / 4. 12.100 libpostproc 57. 3.100 / 57. 3.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'D:/PR\牢记强军使命.mp4': Metadata: major_brand : mp42 minor_version : 0 compatible_brands: mp42mp41 creation_time : 2023-08-20T09:10:07.000000Z Duration: 00:07:47.20, start: 0.000000, bitrate: 10341 kb/s Stream #0:0[0x1](eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 1920x1080 [SAR 1:1 DAR 16:9], 10015 kb/s, 25 fps, 25 tbr, 25k tbn (default) Metadata: creation_time : 2023-08-20T09:10:07.000000Z handler_name : ?Mainconcept Video Media Handler vendor_id : [0][0][0][0] encoder : AVC Coding Stream #0:1[0x2](eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 317 kb/s (default) Metadata: creation_time : 2023-08-20T09:10:07.000000Z handler_name : #Mainconcept MP4 Sound Media Handler vendor_id : [0][0][0][0] Fontconfig error: Cannot load default config file: No such file: (null) 2025-09-17 08:35:26,142 - INFO - 处理完成!
09-18
### 解决 `UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 2101` 错误 此错误是因为 `subprocess` 尝试用 `gbk` 编码解码包含非 `gbk` 字符的输出。可通过指定 `encoding` 参数为 `utf-8` 来解决。修改代码中 `subprocess.run` 部分: ```python result = subprocess.run( conversion_cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, encoding='utf-8' ) ``` 完整修改后的代码示例如下: ```python import subprocess import os import logging def video_conversion_pipeline(source_dir, target_dir, resolution="640x360", watermark_image="watermark.png", watermark_text="Your Text"): os.makedirs(target_dir, exist_ok=True) extensions = ['.mp4', '.avi', '.mov', '.mkv', '.flv', '.wmv'] ffmpeg_path = './FFmpeg/FFmpeg.exe' if not os.path.exists(ffmpeg_path): logging.error(f"FFmpeg未找到: {ffmpeg_path}") return False for filename in os.listdir(source_dir): name, ext = os.path.splitext(filename) if ext.lower() not in extensions: continue source_path = os.path.join(source_dir, filename) output_name = f"{name}__zygl__" mp4_path = os.path.join(target_dir, f"{output_name}.mp4") thumbnail_path = os.path.join(target_dir, f"{output_name}.jpg") try: overlay_filter = f"movie={watermark_image},format=rgba,colorchannelmixer=aa=0.3 [watermark]; [in][watermark] overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2 [video_with_image_watermark]; drawtext=text='{watermark_text}':x=(main_w-text_w-10):y=(main_h-text_h-10):fontcolor=white@0.4:fontsize=24 [out]" conversion_cmd = [ ffmpeg_path, '-i', source_path, '-c:v', 'libx264', '-c:a', 'aac', '-strict', 'experimental', '-preset', 'medium', '-crf', '23', '-movflags', '+faststart', '-s', resolution, '-vf', overlay_filter, '-y', mp4_path ] result = subprocess.run( conversion_cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, encoding='utf-8' ) if result.returncode != 0: error_message = result.stderr if result.stderr else "No error message available" logging.error(f"视频转换失败: {filename}\n错误信息: {error_message}") continue thumbnail_cmd = [ ffmpeg_path, '-i', source_path, '-ss', '00:00:03', '-vframes', '1', '-s', '480x270', '-y', thumbnail_path ] subprocess.run(thumbnail_cmd) logging.info(f"成功处理: {filename} -> {output_name}.mp4") except Exception as e: logging.error(f"处理 {filename} 时出错: {str(e)}") return True if __name__ == "__main__": logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s' ) success = video_conversion_pipeline( source_dir='./source_videos', target_dir='./processed_videos', resolution='800x450', watermark_image='watermark.png', watermark_text='Your Text' ) if success: logging.info("处理完成!") else: logging.error("处理过程中发生错误") ``` ### 解决 `Fontconfig error: Cannot load default config file` 错误 此错误通常是因为 `Fontconfig` 无法找到默认配置文件。可以尝试以下解决办法: - **设置 `FONTCONFIG_FILE` 环境变量**:指定 `Fontconfig` 配置文件的路径。 ```python import os os.environ['FONTCONFIG_FILE'] = '/path/to/your/fontconfig.conf' ``` - **安装 `Fontconfig` 配置文件**:确保系统中安装了 `Fontconfig` 配置文件。在 Linux 系统中,可以使用包管理器安装;在 Windows 系统中,`Fontconfig` 可能不是必需的,可以尝试手动指定字体文件路径。例如在 `ffmpeg` 命令中使用 `drawtext` 滤镜时指定字体文件: ```python drawtext_filter = f"drawtext=text='{watermark_text}':x=(main_w-text_w-10):y=(main_h-text_h-10):fontcolor=white@0.4:fontsize=24:fontfile='/path/to/your/font.ttf' [out]" ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值