or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

asset-management.mdasset-tracks.mdcontent-delivery-streaming.mdcontent-protection.mdencoding-transforms.mdindex.mdlive-streaming.mdlocation-management.mdmedia-filters.mdmedia-services-management.mdnetwork-security.mdoperations-monitoring.md

media-filters.mddocs/

0

# Media Filters

1

2

Dynamic content filtering capabilities through account-level and asset-level filters for adaptive streaming scenarios. Filters enable presentation time range selection, track filtering, bitrate constraints, and dynamic manifest manipulation without re-encoding content.

3

4

## Capabilities

5

6

### Account Filter Management

7

8

Manage account-level filters that apply globally across multiple assets and streaming sessions.

9

10

```python { .api }

11

def list(resource_group_name: str, account_name: str) -> Iterable[AccountFilter]:

12

"""

13

List all account filters in a media service account.

14

15

Parameters:

16

- resource_group_name: Name of the resource group (str)

17

- account_name: Name of the media service account (str)

18

19

Returns:

20

Iterable of AccountFilter objects with filtering configuration

21

"""

22

23

def get(

24

resource_group_name: str,

25

account_name: str,

26

filter_name: str

27

) -> AccountFilter:

28

"""

29

Get a specific account filter with complete configuration.

30

31

Parameters:

32

- resource_group_name: Name of the resource group (str)

33

- account_name: Name of the media service account (str)

34

- filter_name: Name of the account filter (str)

35

36

Returns:

37

AccountFilter object with filtering rules and settings

38

"""

39

40

def create_or_update(

41

resource_group_name: str,

42

account_name: str,

43

filter_name: str,

44

parameters: AccountFilter

45

) -> AccountFilter:

46

"""

47

Create or update an account filter.

48

49

Parameters:

50

- resource_group_name: Name of the resource group (str)

51

- account_name: Name of the media service account (str)

52

- filter_name: Name for the account filter (str)

53

- parameters: Account filter configuration (AccountFilter)

54

55

Returns:

56

Created or updated AccountFilter object

57

"""

58

59

def update(

60

resource_group_name: str,

61

account_name: str,

62

filter_name: str,

63

parameters: AccountFilter

64

) -> AccountFilter:

65

"""

66

Update an existing account filter.

67

68

Parameters:

69

- resource_group_name: Name of the resource group (str)

70

- account_name: Name of the media service account (str)

71

- filter_name: Name of the account filter (str)

72

- parameters: Updated account filter configuration (AccountFilter)

73

74

Returns:

75

Updated AccountFilter object

76

"""

77

78

def delete(resource_group_name: str, account_name: str, filter_name: str) -> None:

79

"""

80

Delete an account filter.

81

82

Parameters:

83

- resource_group_name: Name of the resource group (str)

84

- account_name: Name of the media service account (str)

85

- filter_name: Name of the account filter (str)

86

87

Returns:

88

None

89

"""

90

```

91

92

### Asset Filter Management

93

94

Manage asset-specific filters that apply to individual assets for targeted content filtering.

95

96

```python { .api }

97

def list(

98

resource_group_name: str,

99

account_name: str,

100

asset_name: str

101

) -> Iterable[AssetFilter]:

102

"""

103

List all filters for a specific asset.

104

105

Parameters:

106

- resource_group_name: Name of the resource group (str)

107

- account_name: Name of the media service account (str)

108

- asset_name: Name of the asset (str)

109

110

Returns:

111

Iterable of AssetFilter objects with filtering configuration

112

"""

113

114

def get(

115

resource_group_name: str,

116

account_name: str,

117

asset_name: str,

118

filter_name: str

119

) -> AssetFilter:

120

"""

121

Get a specific asset filter with complete configuration.

122

123

Parameters:

124

- resource_group_name: Name of the resource group (str)

125

- account_name: Name of the media service account (str)

126

- asset_name: Name of the asset (str)

127

- filter_name: Name of the asset filter (str)

128

129

Returns:

130

AssetFilter object with filtering rules and settings

131

"""

132

133

def create_or_update(

134

resource_group_name: str,

135

account_name: str,

136

asset_name: str,

137

filter_name: str,

138

parameters: AssetFilter

139

) -> AssetFilter:

140

"""

141

Create or update an asset filter.

142

143

Parameters:

144

- resource_group_name: Name of the resource group (str)

145

- account_name: Name of the media service account (str)

146

- asset_name: Name of the asset (str)

147

- filter_name: Name for the asset filter (str)

148

- parameters: Asset filter configuration (AssetFilter)

149

150

Returns:

151

Created or updated AssetFilter object

152

"""

153

154

def update(

155

resource_group_name: str,

156

account_name: str,

157

asset_name: str,

158

filter_name: str,

159

parameters: AssetFilter

160

) -> AssetFilter:

161

"""

162

Update an existing asset filter.

163

164

Parameters:

165

- resource_group_name: Name of the resource group (str)

166

- account_name: Name of the media service account (str)

167

- asset_name: Name of the asset (str)

168

- filter_name: Name of the asset filter (str)

169

- parameters: Updated asset filter configuration (AssetFilter)

170

171

Returns:

172

Updated AssetFilter object

173

"""

174

175

def delete(

176

resource_group_name: str,

177

account_name: str,

178

asset_name: str,

179

filter_name: str

180

) -> None:

181

"""

182

Delete an asset filter.

183

184

Parameters:

185

- resource_group_name: Name of the resource group (str)

186

- account_name: Name of the media service account (str)

187

- asset_name: Name of the asset (str)

188

- filter_name: Name of the asset filter (str)

189

190

Returns:

191

None

192

"""

193

```

194

195

## Data Types

196

197

```python { .api }

198

class AccountFilter:

199

"""Account-level filter for dynamic content filtering."""

200

name: str

201

presentation_time_range: PresentationTimeRange

202

first_quality: FirstQuality

203

tracks: List[FilterTrackSelection]

204

205

class AssetFilter:

206

"""Asset-specific filter for targeted content filtering."""

207

name: str

208

presentation_time_range: PresentationTimeRange

209

first_quality: FirstQuality

210

tracks: List[FilterTrackSelection]

211

212

class PresentationTimeRange:

213

"""Time range specification for content filtering."""

214

start_timestamp: int

215

end_timestamp: int

216

presentation_window_duration: int

217

live_backoff_duration: int

218

timescale: int

219

force_end_timestamp: bool

220

221

class FirstQuality:

222

"""Initial quality level specification."""

223

bitrate: int

224

225

class FilterTrackSelection:

226

"""Track selection criteria for filtering."""

227

track_selections: List[FilterTrackPropertyCondition]

228

229

class FilterTrackPropertyCondition:

230

"""Condition for track property filtering."""

231

property: str # FilterTrackPropertyType enum

232

value: str

233

operation: str # FilterTrackPropertyCompareOperation enum

234

```

235

236

## Usage Examples

237

238

### Create Time-Range Account Filter

239

240

```python

241

from azure.mgmt.media import AzureMediaServices

242

from azure.mgmt.media.models import (

243

AccountFilter, PresentationTimeRange, FirstQuality

244

)

245

from azure.identity import DefaultAzureCredential

246

247

client = AzureMediaServices(

248

credential=DefaultAzureCredential(),

249

subscription_id="your-subscription-id"

250

)

251

252

# Create time range filter (skip first 30 seconds, limit to 10 minutes)

253

time_range = PresentationTimeRange(

254

start_timestamp=300000000, # 30 seconds in 100ns units

255

end_timestamp=6000000000, # 10 minutes in 100ns units

256

presentation_window_duration=0, # Not applicable for VOD

257

live_backoff_duration=0, # Not applicable for VOD

258

timescale=10000000, # 100ns timescale

259

force_end_timestamp=True

260

)

261

262

# Set initial quality to 1Mbps

263

first_quality = FirstQuality(bitrate=1000000)

264

265

# Create account filter

266

account_filter = AccountFilter(

267

presentation_time_range=time_range,

268

first_quality=first_quality

269

)

270

271

created_filter = client.account_filters.create_or_update(

272

resource_group_name="my-resource-group",

273

account_name="my-media-service",

274

filter_name="time-range-filter",

275

parameters=account_filter

276

)

277

278

print(f"Account filter created: {created_filter.name}")

279

```

280

281

### Create Track-Specific Asset Filter

282

283

```python

284

from azure.mgmt.media.models import (

285

AssetFilter, FilterTrackSelection, FilterTrackPropertyCondition,

286

FilterTrackPropertyType, FilterTrackPropertyCompareOperation

287

)

288

289

# Create audio-only filter

290

audio_condition = FilterTrackPropertyCondition(

291

property=FilterTrackPropertyType.TYPE,

292

value="Audio",

293

operation=FilterTrackPropertyCompareOperation.EQUAL

294

)

295

296

audio_track_selection = FilterTrackSelection(

297

track_selections=[audio_condition]

298

)

299

300

# Create asset filter for audio-only playback

301

audio_filter = AssetFilter(

302

tracks=[audio_track_selection]

303

)

304

305

created_asset_filter = client.asset_filters.create_or_update(

306

resource_group_name="my-resource-group",

307

account_name="my-media-service",

308

asset_name="multi-track-asset",

309

filter_name="audio-only-filter",

310

parameters=audio_filter

311

)

312

313

print(f"Asset filter created: {created_asset_filter.name}")

314

```

315

316

### Apply Filters to Streaming Locator

317

318

```python

319

from azure.mgmt.media.models import StreamingLocator

320

321

# Create streaming locator with filters

322

filtered_locator = StreamingLocator(

323

asset_name="encoded-asset",

324

streaming_policy_name="Predefined_ClearStreamingOnly",

325

filters=["time-range-filter"] # Reference account filter by name

326

)

327

328

client.streaming_locators.create(

329

resource_group_name="my-resource-group",

330

account_name="my-media-service",

331

streaming_locator_name="filtered-streaming-locator",

332

parameters=filtered_locator

333

)

334

335

print("Streaming locator created with time-range filter applied")

336

```