JAVA前端web开发学习资源(三,HTML标签学习:音频,视频,链接)

承接JAVA前端web开发学习资源(二,HTML标签学习:文本与图片)

文章目录

目录

承接JAVA前端web开发学习资源(二,HTML标签学习:文本与图片)

文章目录

前言

一,音频标签

二,视频标签

三,链接标签



前言

本篇学习内容是承接上篇JAVA前端web开发学习资源(二,HTML标签学习:文本与图片)。此系列文并没有得到很多读者观看,但无妨,毕竟不是进阶版只适合初学者看的资源注定不会有多少人留意,本文也不是项目系列,但是笔者会继续将此系列文写下去。

笔者目前大一结束,已习得C,C#,C++,JAVA,目前即将学习完HTML5,此系列是笔者回顾所做,在做完前端系类后会做项目系列。看情况可能补充笔者学习过的编程语言的系列,也可能接着做数据结构与算法和软考系列的学习笔记总结。笔者会继续努力下去,将编程研究清楚,写出更高质量的文章。


一,音频标签

代码:<audio src=" " controls></audio>

作用:在页面插入音频

常见属性:

src:音频的路径

controls:显示播放器的控件

autoplay:自动播放(部分浏览器不支持)

loop:循环播放

注意:音频标签目前支持三种格式:MP3,Wav,Ogg。

二,视频标签

代码:<video src=" " controls></video>

作用:在页面中插入视频。

常见属性(与音频差不多)【补充:例autoplay,在谷歌浏览器中,若要自动播放,则需要配合muted实现静音播放】

注意:视频标签目前支持三种格式:MP4,WebM,Ogg。

三,链接标签

代码:<a href=" ">超链接</a>

作用:从一个页面跳转到另一个页面

称呼:a标签,超链接,锚链接。

特点:(1)双标签,内部可以包裹内容

           (2)如果需要a标签点击之后去指定页面,需要设置a标签的href属性

<a href="https://www.baidu.com>跳转百度</a>

空链接:

当网站开发初期,我们还不知到跳转地址的时候,href的值书写为#(空链接)

属性名:target 属性值:目标网页的打开形式

取值效果
_self默认值,在当前窗口中跳转(覆盖原网页)
_blank在窗口中跳转(保留原网页)

例:<a href="https://www.baidu.com" target="_blank">


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Java中,您可以使用FFmpeg库来合并视频音频的stream流,并使用WebSocket或SSE(Server-Sent Events)将正在合并中的结果实时返回给前端。以下是一个基本的示例代码: ```java import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import org.bytedeco.ffmpeg.global.avcodec; import org.bytedeco.ffmpeg.global.avformat; import org.bytedeco.ffmpeg.global.avutil; import org.bytedeco.javacv.FFmpegFrameGrabber; import org.bytedeco.javacv.FFmpegFrameRecorder; import org.springframework.stereotype.Component; import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody; @Component public class VideoAudioMergeService { private FFmpegFrameGrabber videoGrabber; private FFmpegFrameGrabber audioGrabber; private FFmpegFrameRecorder recorder; public StreamingResponseBody merge(String videoUrl, String audioUrl) throws Exception { // 初始化视频流抓取器 videoGrabber = new FFmpegFrameGrabber(videoUrl); videoGrabber.setOption("rtsp_transport", "tcp"); videoGrabber.start(); // 初始化音频流抓取器 audioGrabber = new FFmpegFrameGrabber(audioUrl); audioGrabber.start(); // 创建合成后的输出流 recorder = new FFmpegFrameRecorder("output.mp4", videoGrabber.getImageWidth(), videoGrabber.getImageHeight(), 2); recorder.setFormat("mp4"); recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264); recorder.setAudioCodec(avcodec.AV_CODEC_ID_AAC); recorder.setPixelFormat(avutil.AV_PIX_FMT_YUV420P); recorder.setSampleRate(audioGrabber.getSampleRate()); recorder.setFrameRate(videoGrabber.getFrameRate()); recorder.start(); // 合并视频音频流 List<InputStream> inputStreams = new ArrayList<>(); inputStreams.add(videoGrabber.getInputStream()); inputStreams.add(audioGrabber.getInputStream()); byte[] buffer = new byte[1024]; int len; return outputStream -> { try { while ((len = inputStreams.get(0).read(buffer)) > 0) { if (Thread.currentThread().isInterrupted()) { break; } outputStream.write(buffer, 0, len); // 读取视频帧和音频帧,合成后写入输出流 recorder.record(videoGrabber.grabImage(), audioGrabber.grabSamples()); } } catch (IOException e) { e.printStackTrace(); } finally { videoGrabber.stop(); audioGrabber.stop(); recorder.stop(); outputStream.close(); } }; } } ``` 在上面的示例代码中,我们首先初始化视频流抓取器和音频流抓取器,并使用FFmpegFrameRecorder创建合成后的输出流。然后,我们将视频流和音频流添加到一个InputStream列表中,并在返回的StreamingResponseBody中循环读取第一个InputStream的内容并写入输出流中。每个循环迭代中,我们使用grabImage()方法从视频流中获取一帧图像,并使用grabSamples()方法从音频流中获取一帧音频样本。我们将这些帧合成为一个帧,并使用record()方法将其写入输出流中。 最后,我们使用WebSocket或SSE将输出流的内容实时返回给前端。您可以使用Spring框架的StreamingResponseBody类来实现这一点。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值