Можно ли использовать качество между AVAssetExportPresetMediumQuality и AVAssetExportPresetHighestQuality с помощью AVAssetExportSession?

Я использую AVAssetExportSession для экспорта видео из моего приложения iOS, например:

AVAssetExportSession *exportSession=[AVAssetExportSession exportSessionWithAsset:composition presetName:AVAssetExportPresetMediumQuality];

Я хочу загрузить экспортированное видео, поэтому размер имеет значение. Проблема в следующем: среднее качество - это действительно плохое качество, и AVAssetExportPresetHighestQuality в порядке, Оператор assginment объявит новую локальную переменную. foo = 'глобальный' def func1 (): foo = 'func1' def func2 (): foo = 'local variable in func2' использовать глобальное объявление ...

например: Оператор assginment объявит новую локальную переменную.

foo = 'global'
def func1():
    foo = 'func1'
    def func2():
        foo = 'local variable in func2'

Объявление use global будет использовать foo в global:

def func2():
    global foo
    foo = 'global changed in func2'  #changed the foo value in global scope

как я могу изменить переменную foo в области действия func1?
Спасибо за любую помощь.

Редактировать:

Спасибо, Брэндон Крейг Роудс, я наконец понял, что вы имеете в виду.

если имеется более трех вложенных областей, я могу сохранить переменную в списке.

foo = ['global', 'function1', 'function2']
def func1():
    foo[1] = 'func1'
    def func2():
        foo[2] = 'func2'
        foo[1] = 'func1 modified in func2'

I просто используйте глобальную переменную.


поэтому, если есть две вложенные функции, мы можем использовать

nonlocal foo 

и

global foo 

, если есть более трех вложенных функций,
и каждая функция использует переменные в области других функций,
почему бы нам не объявить глобальную переменную списка?
Спасибо за вашу помощь !!!

8
задан smci 27 August 2015 в 22:14
поделиться