通过 URL 进行直播,同时将旋转版本存储到 SD 卡

通过 URL 进行直播,同时将旋转版本存储到 SD 卡

我正在尝试在 FFmpeg 中编写一个脚本,该脚本将命令 1) 实时流传输到 URL 2) 保存到 SD 卡位置 3) 将视频旋转 90 度... 你能把它们组合在一起,然后我可以插入我的系统吗?我在 Windows 中使用嵌入式 Linux 系统。

以下是对我正在做的事情的更好理解。我正在使用嵌入式 IoT 设备,目标是使用 FFmpeg 加速我的编码和解码,同时进行实时流式传输并保存到 SD 卡,到目前为止我还没有成功完成。这是我所拥有的,但仍然以错误结束:

ffmpeg -f v412 -input_format mjpeg-i/dev/video -r 10 -b:v 4000k -s 256x144 -c:v libx264 -f mpegts -flush_packets 0 udp://192.168.7.1:11795? pkt_size-1024"

这是我使用的命令,但在我的嵌入式系统上不起作用。我做错了什么?

ffmpeg -y -i /mnt/mmcblk0p1/video/raw_stream.mjpeg /mnt/mmcblk0p1/video/stream.mp4 -f v412 -input_format mjpeg-i/dev/video -r 10 -b:v 4000k -s 256x144 -c:v libx264 -f mpegts -flush_packets 0 udp://192.168.7.1:11795? pkt_size-1024"

我得到的答复如下:

libswscale 4. 8.100 / 4. 8.100 libswresample 2. 9.100 / 2. 9.100 Trailing options were found on the commandline. [mjpeg @ 0x76bf1860] Format mjpeg detected only with low score of 25, misdetection possible! Input #0, mjpeg, from '/mnt/mmcblk0p1/video/raw_stream.mjpeg': Duration: N/A, bitrate: N/A Stream #0:0: Video: mjpeg, yuvj422p(pc, bt470bg/unknown/unknown), 1280x720, 25 tbr, 1200k tbn, 25 tbc Stream mapping: Stream #0:0 -> #0:0 (mjpeg (native) -> mpeg4 (native)) Press [q] to stop, [?] for help [swscaler @ 0x9f6150] deprecated pixel format used, make sure you did set range correctly Output #0, mp4, to '/mnt/mmcblk0p1/video/stream.mp4': Metadata: encoder : Lavf57.83.100 Stream #0:0: Video: mpeg4 (mp4v / 0x7634706D), yuv420p, 1280x720, q=2-31, 200 kb/s, 25 fps, 12800 tbn, 25 tbc Metadata: encoder : Lavc57.107.100 mpeg4 Side data: cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: -1

这是对我的命令的完整回应。

答案1

免责声明

这并没有回答问题的更新版本。答案是针对旧问题写的,旧问题不清楚,信息量也不够!我会尽快更新我的答案。


我不完全确定我是否理解正确,但如果你想下载视频,将其旋转 90°,然后将视频保存到 SD 卡,你可以这样做......


安装

安装 FFmpeg 和Youtube-dl

# apt install ffmpeg youtube-dl

命令

使用 Youtube-dl 下载视频:

$ youtube-dl -o原始视频.mp4 https://example.com/video

使用FFmpeg 转置过滤器

$ ffmpeg -i原始视频.mp4-vf“转置=时钟”旋转的视频.mp4

将视频移动到已安装的 SD 卡:

# MV旋转的视频.mp4 /路径/到/sd_card

Bash 脚本

上述命令可以简化并放入 Bash 脚本中:

#!/bin/bash

youtube-dl -o - $1 | ffmpeg -i - -vf "transpose=clock" $2

使脚本可执行:

$ chmod +x script.sh

然后可以使用两个参数运行该脚本:

#./script.shhttps://example.com/video /路径/到/sd_card/rotated_video.mp4

相关内容