ffmpeg合成加密的m3u8 ts视频
进入m3u8文件对应目录,执行以下命令 ,注意修改对应文件名
ffmpeg -allowed_extensions ALL -i *.m3u8 -c copy XXX.mp4
进入m3u8文件对应目录,执行以下命令 ,注意修改对应文件名
ffmpeg -allowed_extensions ALL -i *.m3u8 -c copy XXX.mp4
如果docker版本比较低,可以使用
docker run --add-host=host.docker.internal:host-gateway
对于 docker-compose.yml
services:
your-service:
extra_hosts:
- "host.docker.internal:host-gateway"
如果无法识别 host-gateway,改为宿主机host
--add-host=host.docker.internal:<宿主机IP> ...
如果访问宿主机无法识别 host.docker.internal
报错got error dial tcp: lookup host.docker.internal on 127.0.0.11:53: no such host
宿主机手动添加host
127.0.0.1 host.docker.internal
修改宿主机防火墙规则,增加ip来源
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="3399" protocol="tcp" accept'
sudo firewall-cmd --reload
来源 https://www.zackwu.com/posts/2021-03-14-why-i-always-get-503-with-golang/
修复
package main
import (
"crypto/tls"
"fmt"
"net/http"
)
func main() {
defaultCipherSuites := []uint16{0xc02f, 0xc030, 0xc02b, 0xc02c, 0xcca8, 0xcca9, 0xc013, 0xc009,
0xc014, 0xc00a, 0x009c, 0x009d, 0x002f, 0x0035, 0xc012, 0x000a}
client := http.Client{
Transport: &http.Transport{
TLSClientConfig: &tls.Config{
CipherSuites: append(defaultCipherSuites[8:], defaultCipherSuites[:8]...),
},
},
}
req, err := http.NewRequest("GET", "https://www.bundesregierung.de/breg-en", nil)
resp, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer resp.Body.Close()
fmt.Println(resp.Status)
}
// Output:
// 200 OK
backend下目录结构
tree backend
backend
├── __init__.py
├── admin.py
├── apps.py
├── models.py
├── signals.py
├── urls.py
└── views.py
__init__.py
default_app_config = 'backend.apps.BackendConfig'
apps.py
from django.apps import AppConfig
class BackendConfig(AppConfig):
default_auto_field = "django.db.models.BigAutoField"
name = "backend"
def ready(self):
import backend.signals
signals.py
import os
from django.db.models.signals import pre_save, post_save
from backend.models import *
from django.core.cache import cache
@receiver(pre_save, sender=Article)
def article_pre_save(sender, instance, **kwargs):
if instance.pk:
cache.delete(f'article_{instance.id}')
model
from django.contrib.auth.models import User
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, default=None, verbose_name='用户')
name_show = models.CharField(max_length=50, null=False, blank=False, verbose_name='用户昵称')
avatar = models.ImageField(upload_to='image/', null=True, blank=True, verbose_name='头像',
default='image/avatar.png')
follow_count = models.IntegerField(verbose_name='粉丝数', default=0)
like_count = models.IntegerField(verbose_name='点赞数', default=0)
view_count = models.IntegerField(verbose_name='浏览数', default=0)
collect_count = models.IntegerField(verbose_name='收藏数', default=0)
article_count = models.IntegerField(verbose_name='文章数', default=0)
introduction = models.CharField(max_length=100, null=False, blank=False, verbose_name='用户简介',
default='这个人很懒,什么都没有留下')
department = models.CharField(max_length=100, null=True, blank=True, verbose_name='部门', default='')
created_at = models.DateTimeField(verbose_name='创建时间', editable=False, null=False, default=timezone.now)
updated_at = models.DateTimeField(verbose_name='更新时间', editable=False, null=False, auto_now=True)
def __str__(self):
return self.name_show
class Meta:
verbose_name = "资料"
verbose_name_plural = verbose_name
admin
from django.contrib import admin
from .models import *
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User
class ProfileAdmin(admin.StackedInline):
model = Profile
list_display = (
'id', 'user', 'avatar', 'avatar_tag', 'follower_count', 'like_count', 'collect_count', 'article_count')
class UserAdmin(UserAdmin):
list_display = (
'id', 'username', 'avatar_tag', 'email', 'is_staff', 'is_active', 'is_superuser', 'date_joined', 'last_login')
inlines = (ProfileAdmin,)
def avatar_tag(self, obj):
return obj.profile.avatar_tag()
# admin.site.register(Profile, ProfileAdmin)
admin.site.unregister(User)
admin.site.register(User, UserAdmin)